Замечания по выпускуЗамечания по выпуску IBM(R) DB2(R) Universal Database Замечания по выпуску Версия 7.2/Версия 7.1 FixPak 3 (c) Copyright International Business Machines Corporation 2000, 2001. Все права защищены. Note to U.S. Government Users -- Documentation related to restricted rights -- Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule contract with IBM Corp. Содержание Содержание Добро пожаловать в систему DB2 Universal Database Версии 7! Особые замечания Особые замечания 1.1 Специальные возможности DB2 UDB Версии 7 1.1.1 Ввод с клавиатуры и навигация 1.1.1.1 Ввод с клавиатуры 1.1.1.2 Фокус ввода с клавиатуры 1.1.2 Средства облегчения работы с экраном 1.1.2.1 Высококонтрастный режим 1.1.2.2 Параметры шрифтов 1.1.2.3 Независимость от цвета 1.1.3 Альтернативные средства предупреждения 1.1.4 Совместимость с технологиями для людей с физическими недостатками 1.1.5 Удобный формат документации 1.2 Дополнительный необходимый уровень исправления для Solaris 1.3 Поддерживаемые процессоры для DB2 Версии 7 для Solaris 1.4 Проблемы при добавлении узлов в многораздельную базу данных 1.5 Ошибки при перенастройке 1.6 Исправление китайской национальной версии для Red Flag Linux 1.7 Программа установки DB2 может зависнуть, если не подключен съемный диск 1.8 Дополнительный параметр национальной версии для DB2 for Linux в средах Linux с японским и упрощенным китайским языком 1.9 Ошибка Центра управления в Microsoft Internet Explorer 1.10 Несовместимость между Менеджером каталогов данных и Sybase в среде Windows 1.11 Потеря функции Центра управления 1.12 Компакт-диск Netscape не поставляется с DB2 UDB 1.13 Ошибка в файлах Readme XML 1.14 Возможная потеря данных в Linux for S/390 1.15 DB2 UDB в Windows 2000 1.16 Новые усовершенствования обработки деловой информации в DB2 Версии 7.2 Электронная документация (форматы HTML, PDF и поиск) 2.1 Поддерживаемые браузеры Web в операционной системе Windows 2000 2.2 Поиск электронной информации DB2 в Solaris 2.3 Переключение NetQuestion for OS/2 на использование TCP/IP 2.4 Сообщения об ошибках при попытке запуска Netscape 2.5 Требования к конфигурации для Adobe Acrobat Reader в системах на основе UNIX 2.6 Справочник SQL поставляется в виде одного файла PDF Установка и конфигурирование Общая информация по установке 3.1 Загрузка установочных пакетов для всех поддерживаемых клиентов DB2 3.2 Установка DB2 в Windows 2000 3.3 Проблемы перенастройки производных таблиц, в определении которых использованы специальные регистры 3.4 Поддержка протокола IPX/SPX в Windows 2000 3.5 Остановка процессов DB2 перед обновлением предыдущей версии DB2 3.6 После установки DB2 выполните db2iupdt, если уже установлен другой продукт DB2 3.7 Задание среды Linux для запуска Центра управления DB2 3.8 DB2 Universal Database Enterprise Edition и DB2 Connect Enterprise Edition для Linux на S/390 3.9 DB2 Universal Database Enterprise - Extended Edition for UNIX Quick Beginnings 3.10 Параметр ядра shmseg для HP-UX 3.11 Перенастройка управляющих баз данных IBM Visual Warehouse 3.12 Доступ к управляющим базам данных хранилища Data Links Manager Quick Beginnings 4.1 Ошибка запуска Dlfm с сообщением: "Ошибка получения afsfid для префикса" 4.2 Задание класса Tivoli Storage Manager для файлов архивов 4.3 Требования к дисковому пространству для DFS Client Enabler 4.4 Мониторинг процессов внутренней обработки менеджера файлов связей данных в AIX 4.5 Установка и конфигурирование менеджера связей данных DB2 для AIX: Особенности установки в средах DCE-DFS 4.6 Ошибка выполнения команды "dlfm add_prefix" 4.7 Установка и конфигурирование менеджера связей данных DB2 для AIX: Использование утилиты db2setup для установки менеджера связей данных DB2 в AIX 4.8 Установка и конфигурирование менеджера связей данных DB2 для AIX: Задачи после установки в DCE-DFS 4.9 Установка и конфигурирование менеджера связей данных DB2 для AIX: Ручная установка менеджера связей данных DB2 с помощью SMIT 4.10 Установка и конфигурирование Client Enabler DFS для связей данных DB2 4.11 Установка и конфигурирование менеджера связей данных DB2 для Solaris 4.12 Выбор метода резервного копирования для менеджера связей данных DB2 в AIX 4.13 Выбор метода резервного копирования для менеджера связей данных DB2 в операционной среде Solaris 4.14 Выбор метода резервного копирования для менеджера связей данных DB2 в Windows NT 4.15 Резервное копирование файловой системы с журналами в AIX 4.16 Привилегии группы администратора в связях данных в Windows NT 4.17 Минимизация записи в журнал при установке фильтра файловой системы связей данных (Data File System Filter - DLFF) 4.17.1 Запись сообщений в журнал после установки 4.18 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов 4.19 Before You Begin/Determine hostname (Прежде чем вы начнете/Определение имени хоста) 4.20 Работа с менеджером файлов связей данных: очистка после удаления менеджера связей данных DB2 из базы данных DB2 4.21 DLFM1001E (Новое сообщение об ошибке) 4.22 Опция задания файла конфигурации DLFM 4.23 Ошибка при работе сценария связей данных/DFS dmapp_prestart в AIX 4.24 Интеграция Tivoli Space Manager Integration с Data Links 4.24.1 Ограничения 4.25 Глава 4. Installing and Configuring DB2 Data Links Manager for AIX (Установка и конфигурирование менеджера связей данных DB2 для AIX) 4.25.1 Общие замечания по установке 4.25.1.1 Перенастройка менеджера файлов DB2 Версии 5.2 в Менеджер связей данных DB2 Версии 7 Дополнение по установке и настройке 5.1 Глава 5. Установка клиентов DB2 в операционных системах UNIX 5.1.1 Параметры конфигурации ядра HP-UX 5.2 Глава 12. Запуск собственных прикладных программ 5.2.1 Связывание утилит базы данных при использовании клиента времени выполнения 5.2.2 Доступ к DB2 с использованием ODBC из клиентов UNIX 5.3 Глава 24. Настройка системы объединения на работу с несколькими источниками данных 5.3.1 Системы объединения 5.3.1.1 Ограничение 5.3.2 Установка DB2 Relational Connect 5.3.2.1 Установка DB2 Relational Connect на серверах Windows NT 5.3.2.2 Установка DB2 Relational Connect на серверах AIX, Linux и операционной среды Solaris 5.4 Глава 26. Доступ к источникам данных Oracle 5.4.1 Ошибки документации 5.5 Доступ к источникам данных Sybase (новая глава) 5.5.1 Добавление источников данных Sybase на сервер объединения 5.5.1.1 Шаг 1: Задание переменных среды и изменение реестра профиля 5.5.1.2 Шаг 2: Компоновка DB2 с программным обеспечением клиента Sybase (только для AIX и Solaris) 5.5.1.3 Шаг 3: Перезапуск экземпляра DB2 5.5.1.4 Шаг 4: Создание и настройка файла интерфейсов 5.5.1.5 Шаг 5: Создание оболочки 5.5.1.6 Шаг 6 (необязательный): Задание переменной среды DB2_DJ_COMM 5.5.1.7 Шаг 7: Создание сервера 5.5.1.8 Шаг 8 (необязательный): Задание опции сервера CONNECTSTRING 5.5.1.9 Шаг 9: Создание отображения пользователей 5.5.1.10 Шаг 10: Создание псевдонимов для таблиц и производных таблиц 5.5.2 Задание кодовых страниц Sybase 5.6 Обращение к источникам данных Microsoft SQL Server с использованием ODBC (новая глава) 5.6.1 Добавление на сервер объединения источников данных Microsoft SQL Server 5.6.1.1 Шаг 1: Задание переменных среды (только для AIX) 5.6.1.2 Шаг 2: Запуск сценария оболочки (только для AIX) 5.6.1.3 Шаг 3 (необязательный): Задание переменной среды DB2_DJ_COMM 5.6.1.4 Шаг 4: Перезапуск экземпляра DB2 (только для AIX) 5.6.1.5 Шаг 5: Создание оболочки 5.6.1.6 Шаг 6: Создание сервера 5.6.1.7 Шаг 7: Создание отображения пользователей 5.6.1.8 Шаг 8: Создание псевдонимов для таблиц и производных таблиц 5.6.1.9 Шаг 9 (необязательный): Получение трассировок ODBC 5.6.2 Обзор кодовых страниц Microsoft SQL Server Управление Руководство администратора: Планирование 6.1 Глава 8. Физическая структура базы данных 6.1.1 Ключи разделения 6.2 Разработка групп узлов 6.3 Глава 9. Разработка распределенных баз данных 6.3.1 Изменение нескольких баз данных 6.4 Глава 13. Высокая доступность в среде Windows NT 6.4.1 Необходимость перезагрузки компьютера перед запуском утилиты DB2MSCS 6.5 Глава 14. DB2 и высокая доступность Sun Cluster 2.2 6.6 Поддержка Veritas в Solaris 6.7 Приложение B. Правила именования 6.7.1 Замечания об ID пользователей и именах схем длиной более 8 символов 6.7.2 ID пользователей и пароли 6.8 Приложение D. Несовместимость выпусков 6.8.1 DLFS Windows NT несовместима с Norton Utilities 6.8.2 SET CONSTRAINTS заменено на SET INTEGRITY 6.9 Приложение E. Поддержка национальных языков 6.9.1 Национальные версии DB2 Версии 7 6.9.1.1 Наборы файлов Центра управления и документации 6.9.2 Национальные настройки для сервера администратора DB2 6.9.3 DB2 UDB на платформах Windows поддерживает кодовую страницу для стран Балтии (MS-1257) 6.9.4 Определение значений кодовых страниц 6.9.5 Поддержка кода страны и кодовой страницы 6.9.6 Наборы символов Руководство администратора: Реализация 7.1 Добавление или расширение контейнеров DMS (новый процесс) 7.2 Глава 1. Управление DB2 при помощи инструментов GUI 7.3 Глава 3. Создание базы данных 7.3.1 Создание табличного пространства 7.3.1.1 Использование непосредственного ввода/вывода в Linux 7.3.2 Создание последовательности 7.3.3 Сравнение столбцов идентификации (IDENTITY) и последовательностей 7.3.4 Создание индекса, расширения индекса или спецификации индекса 7.4 Глава 4. Изменение базы данных 7.4.1 Добавление к табличному пространству SMS контейнера на разделе 7.4.2 Изменение столбца идентификации 7.4.3 Изменение последовательности 7.4.4 Отбрасывание последовательности 7.4.5 Переключение состояния табличного пространства 7.4.6 Изменение контейнеров в табличном пространстве DMS 7.5 Глава 5. Управление доступом к базам данных 7.5.1 Привилегии последовательностей 7.5.2 Шифрование данных 7.6 Глава 8. Восстановление базы данных 7.6.1 Как использовать приостановленный ввод-вывод 7.6.2 Инкрементное резервное копирование и восстановление 7.6.2.1 Восстановление из инкрементных резервных копий 7.6.3 Параллельное восстановление 7.6.4 Резервное копирование в именованные конвейеры 7.6.5 Резервное копирование из отдельной копии 7.6.6 Архивирование журнала по требованию 7.6.7 Создание зеркальной копии журнала 7.6.8 Поддержка кроссплатформенного резервного копирования и восстановления на Sun Solaris и HP 7.6.9 Особенности менеджера связей данных DB2/Особенности утилиты резервного копирования 7.6.10 Особенности менеджера связей данных DB2/Особенности утилиты восстановления и повтора транзакций 7.6.11 Восстановление баз данных из резервных копий, сделанных в автономном режиме, без повтора транзакций 7.6.12 Восстановление баз данных и табличных пространств и повтор транзакций до конца файлов журнала 7.6.13 Взаимодействие менеджера связей данных и восстановления 7.6.14 Обнаружение ситуации, требующей согласования 7.7 Приложение C. Обработчик пользователя для восстановления базы данных 7.8 Приложение D. Выполнение команд на нескольких серверах разделов баз данных 7.9 Приложение I. Высокоскоростная межузловая связь 7.9.1 Подготовка DB2 к работе с использованием VI Руководство администратора: Производительность 8.1 Глава 3. Особенности прикладных программ 8.1.1 Задание уровня изоляции 8.1.2 Настройка класса оптимизации 8.1.3 Динамические составные операторы 8.2 Глава 4. Особенности среды 8.2.1 Использование индексных ключей большего размера 8.3 Глава 5. Статистики системного каталога 8.3.1 Сбор и использование статистики распределения 8.3.2 Правила обновления статистики каталога 8.3.3 Статистика подэлементов 8.4 Глава 6. Компилятор SQL 8.4.1 Реплицируемые сводные таблицы 8.4.2 Концепции доступа к данным и оптимизация 8.5 Глава 8. Производительность работы 8.5.1 Управление пулом буферов базы данных 8.5.2 Управление несколькими пулами буферов базы данных 8.6 Глава 9. Использование утилиты ограничения ресурсов 8.7 Глава 13. Конфигурирование DB2 8.7.1 Размер кучи сортировки (sortheap) 8.7.2 Порог кучи сортировки (sheapthres) 8.7.3 Максимальный процент списка блокировок перед расширением (maxlocks) 8.7.4 Конфигурирование для DB2/Менеджера связей данных DB2 интервала истечения срока маркера доступа к связям данных dl_expint 8.7.5 Параметр конфигурации базы данных MIN_DEC_DIV_3 8.7.6 Размер кучи управления программами (app_ctl_heap_sz) 8.7.7 Размер кучи системного монитора базы данных (mon_heap_sz) 8.7.8 Максимальное число активных прикладных программ (maxappls) 8.7.9 Диапазон восстановления и интервал мягких контрольных точек (softmax) 8.7.10 Разрешить отслеживание измененных страниц (trackmod) 8.7.11 Изменить путь журнала базы данных (newlogpath) 8.7.12 Положение файлов журналов (logpath) 8.7.13 Максимальная память для списка блокировок (locklist) 8.8 Приложение A. Переменные реестра DB2 и переменные среды 8.8.1 Таблица новых и измененных переменных реестра 8.9 Приложение C. Средства объяснения SQL Administering Satellites Guide and Reference 9.1 Настройка Версии 7.2 DB2 Personal Edition и DB2 Workgroup Edition в качестве сателлитов 9.1.1 Предварительные требования 9.1.1.1 Особенности установки 9.1.2 Конфигурирование системы Версии 7.2 для синхронизации 9.1.3 Установка FixPak 2 или новее в систему Версии 6 Enterprise Edition 9.1.3.1 Обновление Версии 6 DB2 Enterprise Edition для использования в качестве сервера управления DB2 9.1.4 Обновление Центра управления и Центра управления сателлитами Версии 6 Command Reference 10.1 db2batch - Замер производительности 10.2 db2cap (новая команда) db2cap - Утилита связывания статического пакета CLI/ODBC 10.3 db2ckrst (новая команда) db2ckrst - Проверка последовательности резервных копий для инкрементного восстановления 10.4 db2gncol (новая команда) db2gncol - Изменить значения генерируемых столбцов 10.5 db2inidb - инициализировать зеркальную копию базы данных 10.6 db2look - Утилита извлечения статистики DB2 10.7 db2updv7 - обновление базы данных до уровня текущего пакета FixPak Версии 7 10.8 Новая опция процессора командной строки (-x, подавление вывода заголовков столбцов) 10.9 Для процессора командной строки DB2 необходим шрифт True Type 10.10 ADD DATALINKS MANAGER 10.11 ARCHIVE LOG (новая команда) Archive Log 10.12 BACKUP DATABASE 10.12.1 Синтаксическая диаграмма 10.12.2 Особенности менеджера связей данных DB2 10.13 BIND 10.14 CALL 10.15 DROP DATALINKS MANAGER (новая команда) DROP DATALINKS MANAGER 10.16 EXPORT 10.17 GET DATABASE CONFIGURATION 10.18 GET ROUTINE (новая команда) GET ROUTINE 10.19 GET SNAPSHOT 10.20 IMPORT 10.21 LIST HISTORY 10.22 LOAD 10.23 PING (новая команда) PING 10.24 PUT ROUTINE (новая команда) PUT ROUTINE 10.25 RECONCILE 10.26 REORGANIZE TABLE 10.27 RESTORE DATABASE 10.27.1 Синтаксис 10.27.2 Особенности менеджера связей данных DB2 10.28 ROLLFORWARD DATABASE 10.29 Ошибка документации в разделе CLP Return Codes (Коды возврата процессора командной строки) Data Movement Utilities Guide and Reference 11.1 Глава 2. Import 11.1.1 Использованием импорта с буферизованными вставками 11.2 Глава 3. Load 11.2.1 Состояния отложенных действий после операции загрузки 11.2.2 Ограничения загрузки 11.2.3 Модификатор типа файла totalfreespace 11.3 Глава 4. AutoLoader 11.3.1 Для запуска автозагрузки при значении Authentication YES необходим rexecd Replication Guide and Reference 12.1 Репликация и серверы других типов (не IBM) 12.2 Репликация в Windows 2000 12.3 Известная ошибка при сохранении файлов SQL 12.4 Обслуживание DB2 12.5 Утилита DDU в Web 12.6 Глава 3. Data replication scenario 12.6.1 Сценарии репликации 12.7 Глава 5. Planning for replication 12.7.1 Имена столбцов и таблиц 12.7.2 Репликация столбцов DATALINK 12.7.3 Ограничения на большие объекты 12.7.4 Планирование репликации 12.8 Глава 6. Setting up your replication environment 12.8.1 Предварительное требование для повсеместного изменения 12.8.2 Настройка среды репликации 12.9 Глава 8. Problem Determination 12.10 Глава 9. Capture and Apply for AS/400 12.11 Глава 10. Capture and Apply for OS/390 12.11.1 Prerequisites for DB2 DataPropagator for OS/390 (Предварительные условия для DB2 DataPropagator for OS/390) 12.11.2 UNICODE and ASCII Encoding Schemes on OS/390 (Схемы кодировки UNICODE и ASCII в OS/390) 12.11.2.1 Choosing an Encoding Scheme (Выбор схемы кодировки) 12.11.2.2 Setting Encoding Schemes (Задание схем кодировки) 12.12 Глава 11. Capture and Apply for UNIX platforms 12.12.1 Задание переменных среды для программ Capture и Apply в системах UNIX и Windows 12.13 Глава 14. Table Structures 12.14 Глава 15. Capture and Apply Messages 12.15 Приложение A. Запуск программ Capture и Apply из прикладной программы System Monitor Guide and Reference 13.1 db2ConvMonStream Troubleshooting Guide 14.1 Запуск DB2 в Windows 95, Windows 98 и Windows ME, когда пользователь не зарегистрирован в системе 14.2 Глава 2. Troubleshooting the DB2 Universal Database Server Использование DB2 Universal Database на 64-битных платформах 15.1 Глава 5. Configuration 15.1.1 LOCKLIST 15.1.2 shmsys:shminfo_shmmax 15.2 Глава 6. Restrictions XML Extender Administration and Programming MQSeries 17.1 Установка и конфигурирование функций DB2 MQSeries 17.1.1 Установка MQSeries 17.1.2 Установка MQSeries AMI 17.1.3 Включение функций DB2 MQSeries 17.2 Модели передачи сообщений MQSeries 17.3 Структура сообщения 17.4 Обзор функций MQSeries 17.4.1 Ограничения 17.4.2 Коды ошибок 17.5 Использование сценариев 17.5.1 Базовая передача сообщений 17.5.2 Отправка сообщений 17.5.3 Прием сообщений 17.5.4 Возможности соединения программ друг с другом 17.5.4.1 Взаимодействие требование/ответ 17.5.4.2 Публикация/подписка 17.6 enable_MQFunctions enable_MQFunctions 17.7 disable_MQFunctions disable_MQFunctions Инструменты управления Центр управления 18.1 Возможность управления серверами DB2 Server for VSE and VM 18.2 Поддержка Java 1.2 для Центра управления 18.3 Ошибка "Неверный ярлык" при использовании электронной справки в операционной системе Windows 18.4 Центр управления в виде Java в OS/2 18.5 Ошибка "Доступ к файлу запрещен" при попытке просмотреть завершенное задание в журнале операционной системы Windows 18.6 Соединение для проверки многоузлового изменения 18.7 Центр управления для DB2 for OS/390 18.8 Необходимое исправление для Центра управления для OS/390 18.9 Изменения в окне Создать географический слой 18.10 Информация по устранению неисправностей для Центра управления DB2 18.11 Устранение неисправностей для Центра управления в системах на основе UNIX 18.12 Возможные проблемы со всплывающими справками в OS/2 18.13 Справка для параметра конфигурации jdk11_path 18.14 Системная ошибка Solaris (SQL10012N) при использовании Центра сценариев или журнала 18.15 Справка для файла DPREPL.DFT 18.16 Запуск нескольких апплетов Центра управления 18.17 Электронная справка для Центра управления, выполняемого как апплет 18.18 Выполнение Центра управления в режиме апплета (Windows 95) 18.19 Работа с большими результатами запросов Информационный центр 19.1 Ошибка "Неверный ярлык" в операционной системе Windows 19.2 Открытие внешних ссылок Web в Netscape Navigator, если Netscape уже открыт (системы на основе UNIX) 19.3 Проблемы запуска Информационного центра Мастера 20.1 Задание размера экстента в мастере по созданию базы данных 20.2 Мастер поддержки MQSeries 20.3 Мастер поддержки OLE DB Возможности для бизнеса Business Intelligence Tutorial 21.1 Исправленный учебник Business Intelligence Tutorial Data Warehouse Center Administration Guide 22.1 Устранение неисправностей 22.2 Задание Excel как источника хранилища 22.3 Определение и запуск процессов 22.4 Диалоговое окно Экспорт метаданных 22.5 Определение значений для программы VWPMVS 22.6 Изменения в приложении Data Warehousing Sample (Пример хранилища данных) 22.7 Сообщения Центра хранилищ данных 22.8 Создание макета и загрузка данных на сервере интеграции OLAP DB2 22.9 Использование Classic Connect с Центром хранилищ данных 22.10 Структура среды Центра хранилищ данных 22.11 Использование преобразователя инвертирования 22.12 Доступ к данным DB2 Версии 5 с помощью агента хранилища данных DB2 Версии 7 22.12.1 Перенастройка серверов DB2 Версии 5 22.12.2 Изменение конфигурации агента 22.12.2.1 Агенты хранилищ UNIX 22.12.2.2 Агенты хранилищ Microsoft Windows NT, Windows 2000 и OS/2 22.13 Использование инкрементного принятия с замещением 22.14 Имена файлов данных трассировки компонентов 22.15 Open Client, необходимый для источников Sybase в AIX и операционной среде Solaris 22.16 Исправленные записи для примера 22.17 Глава 3. Setting up warehouse sources 22.17.1 Отображение поля Memo в Microsoft Access на источник хранилища 22.18 Глава 10. Maintaining the Warehouse Database 22.18.1 Компоновка таблиц в подтип шага для программы DB2 UDB RUNSTATS 22.19 Управляющая база данных хранилища по умолчанию 22.20 Окно Менеджер управляющей базы данных хранилища 22.21 Изменение активной управляющей базы данных хранилища 22.22 Создание и инициализация управляющей базы данных хранилища 22.23 Создание шагов SQL с информацией об издании 22.24 Изменение источников и назначений в окне Модель процесса 22.25 Добавление описаний к объектам Центра хранилищ данных 22.26 Запросы примера содержания 22.27 Редактирование оператора SQL Create DDL 22.28 Перенастройка бизнес-просмотров Visual Warehouse 22.29 Генерация таблиц назначения и первичных ключей 22.30 Использование драйверов ODBC Merant 22.31 Новый драйвер ODBC 22.32 Определение источника или потребителя хранилища в базе данных OS/2 22.33 Наблюдение за состоянием управляющей базы данных хранилища 22.34 Использование SQL Assist с базой данных примера TBC_MD 22.35 Использование функции FormatDate 22.36 Изменение параметра языка 22.37 Использование преобразователя Генерировать таблицу ключей 22.38 Поддержание соединений с базами данных 22.39 Установка удаленного клиента Центра хранилищ данных 22.40 Определение источника хранилища DB2 for VM 22.41 Определение таблицы назначения DB2 for VM или DB2 for VSE 22.42 Включение поддержку идентификаторов с ограничителями 22.43 Ошибка Data Joiner, указывающая на проблемы связывания 22.44 Настройка и выполнение репликации с помощью Центра хранилищ данных 22.45 Советы по устранению неисправностей 22.46 Поддерживаемые источники и потребители 22.47 Дополнения для поддерживаемых источников других типов (не баз данных IBM) 22.48 Создание источника данных вручную в Центре хранилищ данных 22.49 Импорт и экспорт метаданных с помощью CWMI (Common Warehouse Metadata Interchange - общий обмен метаданными хранилищ) 22.49.1 Введение 22.49.2 Изменение ваших метаданных после запуска утилиты импорта 22.49.3 Экспорт метаданных 22.50 Шаг утилиты Runstats в OS/390 22.51 Шаг утилиты Load в OS/390 Data Warehouse Center Application Integration Guide Электронная справка Центра хранилищ данных 24.1 Определение таблиц или производных таблиц для репликации 24.2 Выполнение VWP Essbase с агентом AS/400 24.3 Использование окна Сделать доступными метаданные Центра хранилищ данных и связанного с ним окна свойств 24.4 Внешние ключи 24.5 Записные книжки репликации 24.6 Импорт языка тегов 24.7 Ссылки для добавления данных 24.8 Импорт таблиц 24.9 Исправления для электронной справки по RUNSTATS и REORGANIZE TABLE 24.10 Страница Уведомление (записные книжки Свойства хранилища данных и Расписание) 24.11 Поле Модуль агента в записной книжке Системы агентов Начальный комплект OLAP DB2 25.1 Web-сайт сервера OLAP 25.2 Поддерживаемые служебные уровни операционных систем 25.3 Установка Начального комплекта OLAP DB2 в UNIX 25.4 Конфигурирование ODBC для Начального комплекта OLAP 25.4.1 Конфигурирование источников данных в системах UNIX 25.4.1.1 Конфигурирование переменных среды ODBC 25.4.1.2 Редактирование файла odbc.ini 25.4.1.3 Добавление источника данных в файл odbc.ini 25.4.1.4 Пример параметров ODBC для DB2 25.4.1.5 Пример параметров ODBC для Oracle 25.4.2 Конфигурирование каталога метаданных OLAP в системах UNIX 25.4.3 Конфигурирование источников данных в системах Windows 25.4.4 Конфигурирование каталога метаданных OLAP в системах Windows 25.4.5 После конфигурирования источника данных 25.5 Регистрация с рабочего стола Начального комплекта OLAP 25.5.1 Пример регистрации для Начального комплекта 25.6 Создание и конфигурирование вручную баз данных примера для Начального комплекта OLAP 25.7 Перенастройка прикладных программ в Начальный комплект OLAP Версии 7.2 25.8 Известные проблемы и ограничения 25.9 Отсутствие файлов EQD встраиваемого модуля OLAP для электронных таблиц Information Catalog Manager Administration Guide 26.1 Утилита инициализации менеджера каталогов данных 26.1.1 26.1.2 Вопросы лицензирования 26.1.3 Вопросы установки 26.2 Доступ к каталогам данных DB2 Версии 5 при помощи менеджера каталогов данных DB2 Версии 7 26.3 Конфигурирование каталога данных 26.4 Обмен метаданными с другими продуктами 26.5 Обмен метаданными при помощи командами flgnxoln 26.6 Обмен метаданными при помощи команды MDISDGC 26.7 Вызов программ Information Catalog Manager Programming Guide and Reference 27.1 Коды причин Менеджера каталогов данных Information Catalog Manager User's Guide Менеджер каталогов данных: Сообщения 29.1 Сообщение FLG0260E 29.2 Сообщение FLG0051E 29.3 Сообщение FLG0003E 29.4 Сообщение FLG0372E 29.5 Сообщение FLG0615E Менеджер каталогов данных: Электронная справка 30.1 Менеджер каталогов данных для Web DB2 Warehouse Manager Installation Guide 31.1 Требования к программному обеспечению для преобразователей хранилища Query Patroller Administration Guide 32.1 Клиент DB2 Query Patroller - это отдельный компонент 32.2 Перенастройка из Версии 6 DB2 Query Patroller с использованием dqpmigrate 32.3 Включение управления запросами 32.4 Положение табличного пространства для управляющих таблиц 32.5 Новые параметры команды dqpstart 32.6 Новый параметр команды iwm_cmd 32.7 Новая переменная реестра: DQP_RECOVERY_INTERVAL 32.8 Запуск QueryAdministrator 32.9 Управление пользователями 32.10 Создание очереди заданий 32.11 Использование интерфейса командной строки 32.12 Замечания по Query Enabler 32.13 DB2 Query Patroller Tracker может возвратить пустую страницу столбцов 32.14 Query Patroller и средства репликации 32.15 Приложение B. Troubleshooting DB2 Query Patroller Clients (Устранение неисправностей клиентов DB2 Query Patroller) Разработка прикладных программ Administrative API Reference 33.1 db2ArchiveLog (новый API) db2ArchiveLog 33.2 db2ConvMonStream 33.3 db2DatabasePing (новый API) db2DatabasePing - проверка связи с базой данных 33.4 db2HistData 33.5 db2HistoryOpenScan 33.6 db2XaGetInfo (новый API) db2XaGetInfo - Получить информацию для менеджера ресурсов 33.7 db2XaListIndTrans (новый API, заменяющий sqlxphqr) db2XaListIndTrans - Получить список неоднозначных транзакций 33.8 db2GetSnapshot - получить снимок 33.9 Запись журнала Forget 33.10 sqlaintp - Получить сообщение об ошибке 33.11 sqlbctcq - Закрыть запрос к контейнеру табличного пространства 33.12 sqlubkp - резервное копирование базы данных 33.13 sqlureot - реорганизовать таблицу 33.14 sqlurestore - восстановить базу данных 33.15 Ошибка документации о поддержке расширенной совместно используемой памяти AIX 33.16 SQLFUPD 33.16.1 locklist 33.17 SQLEDBDESC 33.18 Ошибка документации SQLFUPD Application Building Guide 34.1 Глава 1. Introduction 34.1.1 Поддерживаемое программное обеспечение 34.1.2 Примеры программ 34.2 Глава 3. General Information for Building DB2 Applications 34.2.1 Файлы построения, make-файлы и утилиты проверки ошибок 34.3 Глава 4. Building Java Applets and Applications 34.3.1 Задание среды 34.3.1.1 Уровень JDK в OS/2 34.3.1.2 Java2 в HP-UX 34.4 Глава 5. Building SQL Procedures 34.4.1 Настройка среды процедур SQL 34.4.2 Задание переменных среды компилятора 34.4.3 Настройка команды компиляции 34.4.4 Удаление промежуточных файлов 34.4.5 Резервное копирование и восстановление 34.4.6 Создание процедур SQL 34.4.7 Вызов хранимых процедур 34.4.8 Распространение скомпилированных процедур SQL 34.5 Глава 7. Building HP-UX Applications. 34.5.1 HP-UX C 34.5.2 HP-UX C++ 34.6 Глава 9. Building OS/2 Applications 34.6.1 VisualAge C++ for OS/2 Версии 4.0 34.7 Глава 10. Building PTX Applications 34.7.1 ptx/C++ 34.8 Глава 12. Building Solaris Applications 34.8.1 SPARCompiler C++ 34.9 Глава 13. Building Applications for Windows 32-bit Operating Systems 34.9.1 VisualAge C++ Версии 4.0 Application Development Guide 35.1 Глава 2. Coding a DB2 Application 35.1.1 Активация встраиваемых модулей проектов и инструментов IBM DB2 Universal Database для Microsoft Visual C++ 35.2 Глава 6. Common DB2 Application Techniques 35.2.1 Генерирование последовательных значений 35.2.1.1 Управление поведением последовательности 35.2.1.2 Улучшение производительности с помощью объектов последовательности 35.2.1.3 Сравнение объектов последовательности и столбцов идентификации 35.3 Глава 7. Stored Procedures 35.3.1 Ошибка типа DECIMAL в Java-процедурах Linux 35.3.2 Использование указателей в рекурсивных хранимых процедурах 35.3.3 Написание хранимых процедур автоматизации OLE 35.4 Глава 12. Working with Complex Objects: User-Defined Structured Types 35.4.1 Вставка в столбцы атрибутов структурированного типа 35.5 Глава 13. Using Large Objects (LOBs) 35.5.1 Поддержка больших объектов в системах баз данных объединения 35.5.1.1 Как DB2 получает большие объекты 35.5.1.2 Как программы могут использовать локаторы больших объектов 35.5.1.3 Ограничения больших объектов 35.5.1.4 Отображения типов данных больших объектов и других типов данных 35.5.2 Настройка системы 35.6 Часть 5. DB2 Programming Considerations 35.6.1 Провайдер OLE DB IBM DB2 35.7 Глава 20. Programming in C and C++ 35.7.1 Типы C/C++ для хранимых процедур, пользовательских функций и методов 35.8 Глава 21. Programming in Java 35.8.1 Сигнатура метода Java в процедурах и функциях с PARAMETER STYLE JAVA 35.8.2 Соединение с сервером апплетов JDBC 35.9 Приложение B. Примеры программ CLI Guide and Reference 36.1 Связывание утилит базы данных при использовании клиента времени выполнения 36.2 Использование статического SQL в прикладных программах CLI 36.3 Ограничения статического профилирования JDBC/ODBC/CLI 36.4 Преобразования ADT 36.5 Глава 3. Using Advanced Features 36.5.1 Writing Multi-Threaded Applications 36.5.2 Scrollable Cursors 36.5.2.1 Поддержка указателей с возможностью прокрутки на стороне сервера для OS/390 36.5.3 Using Compound SQL 36.5.4 Using Stored Procedures 36.5.4.1 Написание хранимой процедуры в CLI 36.5.4.2 Хранимые процедуры и автоматическое связывание CLI 36.6 Глава 4. Configuring CLI/ODBC and Running Sample Applications 36.6.1 Ключевые слова конфигурации 36.7 Глава 5. DB2 CLI Functions 36.7.1 Параметр SQLBindFileToParam - Связать ссылку файла большого объекта с большим объектом 36.7.2 SQLNextResult - Связать следующий набор результатов с другим хэндлом оператора 36.7.2.1 Назначение 36.7.2.2 Синтаксис 36.7.2.3 Аргументы функции 36.7.2.4 Использование 36.7.2.5 Коды возврата 36.7.2.6 Диагностика 36.7.2.7 Ограничения 36.7.2.8 Ссылки 36.8 Приложение D. Extended Scalar Functions 36.8.1 Date and Time Functions 36.9 Приложение K. Using the DB2 CLI/ODBC/JDBC Trace Facility Справочник по сообщениям 37.1 Получение справки по сообщению и SQLSTATE 37.2 Изменение отображения SQLCODE в DB2 Connect 37.3 Новые и измененные сообщения 37.3.1 Сообщения интерфейса уровня вызовов (CLI) 37.3.2 Сообщения DB2 37.3.3 Сообщения DBI 37.3.4 Сообщения Центра хранилищ данных (DWC) 37.3.5 Сообщения SQL 37.4 Измененные SQLSTATES SQL Reference 38.1 Справочник SQL поставляется в виде одного файла PDF 38.2 Глава 3. Language Elements (Элементы языка) 38.2.1 Правила именования и неявные спецификаторы имен объектов 38.2.2 DATALINK Assignments 38.2.3 Expressions (Выражения) 38.2.3.1 Синтаксическая диаграмма 38.2.3.2 Функции OLAP 38.2.3.3 Справочник по последовательностям 38.3 Глава 4. Functions (Функции) 38.3.1 Включение новых функций и процедур 38.3.2 Скалярные функции 38.3.2.1 ABS или ABSVAL 38.3.2.2 DECRYPT_BIN и DECRYPT_CHAR 38.3.2.3 ENCRYPT 38.3.2.4 GETHINT 38.3.2.5 IDENTITY_VAL_LOCAL 38.3.2.6 LCASE и UCASE (Unicode) 38.3.2.7 MQPUBLISH 38.3.2.8 MQREAD 38.3.2.9 MQRECEIVE 38.3.2.10 MQSEND 38.3.2.11 MQSUBSCRIBE 38.3.2.12 MQUNSUBSCRIBE 38.3.2.13 MULTIPLY_ALT 38.3.2.14 REC2XML 38.3.2.15 ROUND 38.3.2.16 WEEK_ISO 38.3.3 Table Functions (Табличные функции) 38.3.3.1 MQREADALL 38.3.3.2 MQRECEIVEALL 38.3.4 Процедуры 38.3.4.1 GET_ROUTINE_SAR 38.3.4.2 PUT_ROUTINE_SAR 38.4 Глава 5. Queries (Запросы) 38.4.1 оператор select/синтаксическая диаграмма 38.4.2 оператор select/условие fetch-first 38.5 Глава 6. SQL Statements (Операторы SQL) 38.5.1 Теперь поддерживается возможность изменения ключа разделения 38.5.1.1 Оператор: ALTER TABLE 38.5.1.2 Оператор: CREATE TABLE 38.5.1.3 Оператор: DECLARE GLOBAL TEMPORARY TABLE PARTITIONING KEY (имя-столбца,...) 38.5.1.4 Оператор: UPDATE 38.5.2 Длинные ключи индекса для баз данных Unicode 38.5.2.1 ALTER TABLE 38.5.2.2 CREATE INDEX 38.5.2.3 CREATE TABLE 38.5.3 ALTER SEQUENCE ALTER SEQUENCE 38.5.4 ALTER TABLE 38.5.5 Compound SQL (Embedded) (Составной SQL - встроенный) 38.5.6 Составной оператор (динамический) Составной оператор (динамический) 38.5.7 Функция CREATE (источник или шаблон) 38.5.8 Функция CREATE (скалярная SQL, табличная или строчная) 38.5.9 CREATE METHOD CREATE METHOD 38.5.10 CREATE SEQUENCE CREATE SEQUENCE 38.5.11 CREATE TRIGGER CREATE TRIGGER 38.5.12 CREATE WRAPPER 38.5.13 DECLARE CURSOR 38.5.14 DELETE 38.5.15 DROP 38.5.16 GRANT (привилегии для последовательности) GRANT (привилегии для последовательности) 38.5.17 INSERT 38.5.18 SELECT INTO 38.5.19 SET ENCRYPTION PASSWORD SET ENCRYPTION PASSWORD 38.5.20 SET переходная-переменная SET переменная 38.5.21 UPDATE 38.6 Глава 7 "SQL Procedures" теперь называется "SQL Control Statements" 38.6.1 Оператор процедуры SQL Оператор процедуры SQL 38.6.2 FOR FOR 38.6.3 Заголовок раздела Compound Statement изменен на Compound Statement (Procedure) 38.6.4 RETURN RETURN 38.6.5 SIGNAL SIGNAL 38.7 Приложение A. SQL Limits 38.8 Приложение D. Catalog Views 38.8.1 SYSCAT.SEQUENCES Построитель хранимых процедур DB2 39.1 Поддержка Java 1.2 для построителя хранимых процедур DB2 39.2 Удаленная отладка хранимых процедур DB2 39.3 Построение процедур SQL на платформах Windows, OS/2 или UNIX 39.4 Использование построителя хранимых процедур DB2 на платформе Solaris 39.5 Известные проблемы и ограничения 39.6 Использование построителя хранимых процедур DB2 с традиционным китайским языком 39.7 Установки в UNIX (AIX, Sun Solaris, Linux) и построитель хранимых процедур 39.8 Построение хранимых процедур SQL в OS/390 39.9 Отладка хранимых процедур SQL 39.10 Экспорт хранимых процедур Java 39.11 Вставка хранимых процедур в OS/390 39.12 Задание опций построения для хранимых процедур SQL на сервере рабочих станций 39.13 Автоматическое обновление адресного пространства WLM для построения хранимых процедур в OS/390 39.14 Разработка хранимых процедур Java в OS/390 39.15 Построение табличной пользовательской функции DB2 для MQ Series и OLE DB Обновления для Unicode 40.1 Введение 40.1.1 Базы данных Unicode и прикладные программы DB2 40.1.2 Обновление документации 40.2 SQL Reference 40.2.1 Глава 3. Language Elements 40.2.1.1 Расширение типов данных 40.2.1.2 Преобразование типов данных 40.2.1.3 Назначения и сравнения 40.2.1.4 Правила для типов данных результатов 40.2.1.5 Rules for String Conversions 40.2.1.6 Expressions 40.2.1.7 Predicates 40.2.2 Глава 4. Functions 40.2.2.1 Scalar Functions 40.3 CLI Guide and Reference 40.3.1 Глава 3. Using Advanced Features 40.3.1.1 Написание прикладной программы Unicode CLI DB2 40.3.2 Приложение C. DB2 CLI and ODBC 40.3.2.1 Прикладные программы Unicode ODBC 40.4 Data Movement Utilities Guide and Reference 40.4.1 Приложение C. Export/Import/Load Utility File Formats Соединение с хост-системами Дополнение по возможностям соединений 41.1 Настройка сервера прикладных программ в среде VM 41.2 Параметры PATCH1 и PATCH2 и конфигурации CLI/ODBC/JDBC Общие сведения Общие сведения 42.1 DB2 Universal Database Business Intelligence Quick Tour 42.2 DB2 Everywhere называется теперь DB2 Everyplace 42.3 Необходима мышь 42.4 При попытке связывания из клиента времени выполнения DB2 возникает ошибка "Не найдены файлы связывания" 42.5 Поиск SEARCH 42.6 Окна памяти для HP-UX 11 42.7 Действия пользователя при возникновении ошибки dlfm client_conf 42.8 В редких случаях, когда демон копирования не останавливается командой dlfm stop 42.9 Деинсталляция Client Enabler DFS DB2 42.10 Аутентификация клиента в Windows NT 42.11 AutoLoader может зависать при ветвлении потоков 42.12 Восстановление столбцов DATALINK 42.13 Определите ID пользователя и пароль в IBM Communications Server для Windows NT (CS/NT) 42.13.1 Определение узла 42.14 Ограничения системы объединения 42.15 Ограничение DataJoiner 42.16 Менеджер каталогов данных на иврите для Windows NT 42.17 Microsoft SNA Server и поддержка многоузлового изменения SNA (двухфазного принятия) 42.18 Ошибка запуска SPM SNA DB2 после загрузки Windows 42.19 Национальные настройки для сервера администратора DB2 42.20 Клавиши быстрого вызова не работают 42.21 Требования к учетным записям для DB2 в Windows NT и Windows 2000 42.22 Потеря привилегии EXECUTE для пользователей Query Patroller, созданных в версии 6 42.23 Ограничения Query Patroller 42.24 Необходимость принятия всех пользовательских программ, которые будут использованы в Центре хранилищ данных (Data Warehouse Center - DWC) 42.25 Новая опция команды экспорта Центра хранилищ данных 42.26 API служб резервного копирования (XBSA) 42.27 Агент OS/390 42.27.1 Обзор установки 42.27.2 Подробности установки 42.27.3 Настройка дополнительных функций агента 42.27.4 Составление расписания шагов хранилища при помощи программы триггера (XTClient) 42.27.5 Преобразователи 42.27.6 Доступ к другим базам данных (не из семейства DB2) 42.27.7 Запуск утилит DB2 for OS/390 42.27.8 Репликация 42.27.9 Регистрация агента 42.28 Кэширование на клиенте в Windows NT 42.29 Пробные программные продукты на компакт-дисках с Enterprise Edition для UNIX 42.30 Пробные программные продукты на компакт-дисках с DB2 Connect Enterprise Edition для UNIX 42.31 Отбрасывание Менеджера связей данных 42.32 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов 42.33 Ошибка SQL1035N при использовании CLP в Windows 2000 42.34 Усовершенствование SQL Assist 42.35 Интеграция с рабочим столом Gnome и KDE для DB2 on Linux 42.36 Запуск DB2 в режиме Administration Windows 2000 Terminal Server 42.37 Электронная справка для команд BACKUP и RESTORE 42.38 "Менеджер хранилищ данных" следует читать как "Менеджер хранилищ данных DB2" Дополнительная информация Дополнительная информация 43.1 Электронная поддержка DB2 Universal Database и DB2 Connect 43.2 DB2 Magazine Приложения Приложение A. Замечания A.1 Товарные знаки Индекс Добро пожаловать в систему DB2 Universal Database Версии 7! Прим.:Для облегчения чтения Замечаний по выпуску используйте моноширинный шрифт. Сайт поддержки DB2 Universal Database и DB2 Connect регулярно обновляется. Самую свежую информацию смотрите по адресу http://www.ibm.com/software/data/db2/udb/winos2unix/support. Этот файл содержит информацию, которая не была доступна при подготовке руководств DB2, о следующих продуктах: IBM DB2 Universal Database Personal Edition, Версия 7.2 IBM DB2 Universal Database Workgroup Edition, Версия 7.2 IBM DB2 Universal Database Enterprise Edition, Версия 7.2 IBM DB2 Data Links Manager, Версия 7.2 IBM DB2 Universal Database Enterprise - Extended Edition, Версия 7.2 IBM DB2 Query Patroller, Версия 7.2 IBM DB2 Personal Developer's Edition, Версия 7.2 IBM DB2 Universal Developer's Edition, Версия 7.2 IBM DB2 Data Warehouse Manager, Версия 7.2 IBM DB2 Relational Connect, Версия 7.2 Для следующих продуктов поставляется отдельный файл Замечаний по выпуску READCON.TXT: IBM DB2 Connect Personal Edition, Версия 7.2 IBM DB2 Connect Enterprise Edition, Версия 7.2 В книге "Что нового" содержится обзор некоторых основных усовершенствований DB2 в Версии 7.2. Если у вас нет Версии 7.2 книги "Что нового", ее можно взять по адресу http://www.ibm.com/software/data/db2/udb/winos2unix/support. Прим.:Вертикальная черта (|) на левом поле страницы отмечает строки, измененные с момента первой публикации данных Замечаний по выпуску. Особые замечания Особые замечания 1.1 Специальные возможности DB2 UDB Версии 7 Продукты семейства DB2 UDB включают ряд возможностей, делающих их более доступными для людей с физическими недостатками. Эти возможности включают: Возможности, облегчающие ввод с клавиатуры и использование клавиатуры для навигации Возможности, улучшающие свойства экрана Возможность выбора звуковых и визуальных предупреждений Совместимость с технологиями для людей с физическими недостатками Совместимость со специальными возможностями операционной системы Удобные форматы документации 1.1.1 Ввод с клавиатуры и навигация 1.1.1.1 Ввод с клавиатуры С Центром управления DB2 можно работать, используя только клавиатуру. Для пунктов меню и элементов управления есть клавиши доступа, позволяющие пользователям активировать элемент управления или выбирать пункт меню с помощью клавиатуры. Соответствующие этим клавишам буквы выделяются в названиях элементов управления и пунктов меню подчеркиванием. 1.1.1.2 Фокус ввода с клавиатуры В системах на основе UNIX положение фокуса ввода с клавиатуры выделяется на экране; тем самым указывается активная область окна, в которую будут вводиться символы при нажатии клавиатуры. 1.1.2 Средства облегчения работы с экраном В Центре управления DB2 есть ряд средств, улучшающих пользовательский интерфейс и облегчающих работу для пользователей со слабым зрением. В них входят поддержка параметров высококонтрастного вывода на экран и настраиваемых свойств шрифтов. 1.1.2.1 Высококонтрастный режим Интерфейс Центра управления поддерживает обеспечиваемый операционной системой высококонтрастный режим. Это облегчает работу пользователей, которым требуется большая степень контрастности между цветами фона и рисунка. 1.1.2.2 Параметры шрифтов Интерфейс Центра управления позволяет пользователям выбрать цвет, размер и тип шрифта, используемого в меню и для диалоговых окон. 1.1.2.3 Независимость от цвета Чтобы использовать любые функции этого продукта, пользователям не требуется различать цвета. 1.1.3 Альтернативные средства предупреждения Пользователь может выбрать, в каком виде получать предупреждения: в виде звуковых или визуальных сигналов. 1.1.4 Совместимость с технологиями для людей с физическими недостатками Интерфейс Центра управления DB2 совместим с программами чтения с экрана (такими, как Via Voice). В режиме прикладной программы интерфейс Центра управления обладает необходимыми свойствами, позволяющими таким программам облегчения работы получать информацию с экрана и делать ее доступной для слепых пользователей. 1.1.5 Удобный формат документации Документация для продуктов семейства DB2 доступна в формате HTML. Это позволяет пользователям просматривать документацию, используя предпочтения экрана, заданные для их браузеров. Это позволяет также использовать программы чтения с экрана и другие технологии для людей с физическими недостатками. 1.2 Дополнительный необходимый уровень исправления для Solaris Для DB2 Universal Database Версии 7 для Solaris Версии 2.6 кроме исправлений, перечисленных в руководстве DB2 for UNIX Быстрый старт, требуется исправление 106285-02 или более новое. 1.3 Поддерживаемые процессоры для DB2 Версии 7 для Solaris Не поддерживаются версии процессоров, более ранние, чем UltraSparc. 1.4 Проблемы при добавлении узлов в многораздельную базу данных При добавлении узлов в многораздельную базу данных, содержащую одно или несколько системных временных табличных пространств, размер страниц которых отличается от размера страниц по умолчанию (4 Кбайта), вы можете получить сообщение об ошибке "SQL6073N Операция Add Node прервана" и SQLCODE. Это вызвано тем, что при создании узла существует только пул буферов IBMDEFAULTBP с размером страниц 4 Кбайта. Например, для добавления узла в текущую многораздельную базу данных может использоваться команда db2start: DB2START NODENUM 2 ADDNODE HOSTNAME newhost PORT 2 Если эта многораздельная база данных содержит системные временные табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение: SQL6075W Операция Start Database Manager успешно добавила узел. Узел не будет активен, пока все узлы не будут остановлены и запущены еще раз. Однако если системные временные табличные пространства этой многораздельной базы данных имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение: SQL6073N Операция Add Node прервана. SQLCODE = "<-902>" Для добавления узла можно также использовать команду ADD NODE, предварительно вручную добавив описание нового узла в файл db2nodes.cfg. После изменения этого файла и выполнения команды ADD NODE для многораздельной базы данных, содержащей системные временные табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение: DB20000I Команда ADD NODE выполнена успешно. Однако если системные временные табличные пространства этой многораздельной базы данных имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение: SQL6073N Операция Add Node прервана. SQLCODE = "<-902>" Один из способов предотвратить описанную выше ошибку - выполнить команду: DB2SET DB2_HIDDENBP=16 перед выполнением команды db2start или ADD NODE. Эта переменная реестра разрешает DB2 выделять скрытые пулы буферов по 16 страниц каждый, используя размер страницы, отличный от размера страницы по умолчанию. Это обеспечивает успешное выполнение операции ADD NODE. Другой способ предотвращения этой ошибки - задать условие WITHOUT TABLESPACES в команде ADD NODE или db2start. После этого нужно будет создать пулы буферов, используя оператор CREATE BUFFERPOOL, и связать системные временные табличные пространства с пулом буферов, используя оператор ALTER TABLESPACE. При добавлении узлов в существующую группу узлов, содержащую одно или несколько табличных пространств, размер страниц которых отличается от размера страниц по умолчанию (4 Кбайта), вы можете получить сообщение об ошибке "SQL0647N Пул буферов "" в настоящее время неактивен.". Это происходит потому, что созданные на новом узле пулы буферов с размером страниц, отличным от размера страниц по умолчанию, не активируются для этих табличных пространств. Например, для добавления узла в группу узлов можно использовать оператор ALTER NODEGROUP: DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) Если эта группа узлов содержит табличные пространства, размер страниц которых равен размеру страниц по умолчанию, будет возвращено следующее сообщение: SQL1759W Для изменения распределения данных для объектов в группе узлов "" требуется перераспределение группы узлов со включением добавленных узлов или исключением отброшенных. Однако если табличные пространства этой группы узлов имеют размер страниц, отличный от размера страниц по умолчанию, будет возвращено сообщение: SQL0647N Пул буферов "" в настоящее время неактивен. Один из способов предотвратить описанную выше ошибку - создать пулы буферов для каждого размера страниц и затем заново соединиться с базой данных перед выполнением оператора ALTER NODEGROUP: DB2START CONNECT TO mpp1 CREATE BUFFERPOOL bp1 SIZE 1000 PAGESIZE 8192 CONNECT RESET CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) Другой способ предотвращения этой ошибки - выполнить команду: DB2SET DB2_HIDDENBP=16 перед выполнением команды db2start и операторов CONNECT и ALTER NODEGROUP. Другая ошибка может возникнуть, когда оператор ALTER TABLESPACE используется для добавления табличного пространства к узлу. Например: DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2) Эта последовательность команд и операторов генерирует сообщение об ошибке SQL0647N (а не ожидаемое сообщение SQL1759W). Чтобы правильно выполнить это изменение, необходимо заново соединиться с базой данных после выполнения оператора ALTER NODEGROUP... WITHOUT TABLESPACES. DB2START CONNECT TO mpp1 ALTER NODEGROUP ng1 ADD NODE (2) WITHOUT TABLESPACES CONNECT RESET CONNECT TO mpp1 ALTER TABLESPACE ts1 ADD ('ts1') ON NODE (2) Другой способ предотвращения этой ошибки - выполнить команду: DB2SET DB2_HIDDENBP=16 перед выполнением команды db2start и операторов CONNECT, ALTER NODEGROUP и ALTER TABLESPACE. 1.5 Ошибки при перенастройке Во время перенастройки в файле db2diag.log появляются записи об ошибках (база данных не перенастроена), даже если перенастройка выполнена успешно; эти сообщения можно проигнорировать. 1.6 Исправление китайской национальной версии для Red Flag Linux Если вы используете сервер Red Flag Linux Версии 1.1 с упрощенным китайским языком, получите у Red Flag исправление национальной версии для упрощенного китайского. Без исправления национальной версии для упрощенного китайского для Версии 1.1 DB2 не узнает, что для упрощенного китайского используется кодовая страница 1386. 1.7 Программа установки DB2 может зависнуть, если не подключен съемный диск Программа установки DB2 может зависнуть после выбора типа установки, если используется компьютер со съемным диском, который не подключен. Чтобы исправить эту ошибку, запустите программу setup с опцией -a: setup.exe -a 1.8 Дополнительный параметр национальной версии для DB2 for Linux в средах Linux с японским и упрощенным китайским языком Чтобы в системе Linux с японским или упрощенным китайским языком можно было использовать инструменты GUI Java, требуется дополнительный параметр национальной версии. Без этого параметра не могут правильно выводиться японские и китайские символы. Включите в профиль пользователя следующую команду или выполняйте ее из командной строки перед каждым запуском Центра управления. Для систем с японским языком: export LC_ALL=ja_JP Для систем с упрощенным китайским языком: export LC_ALL=zh_CN 1.9 Ошибка Центра управления в Microsoft Internet Explorer Существует ошибка, вызываемая установками опций защиты Internet Explorer (IE). Центр управления использует jar без подписи, поэтому доступ к системной информации отключается менеджером защиты. Чтобы устранить эту ошибку, переконфигурируйте опции защиты IE следующим образом: Выберите Свойства обозревателя в меню Вид (IE4) или в меню Сервис (IE5). На странице Безопасность выберите Зона надежных узлов (IE4) или Надежные узлы (IE5). Нажмите кнопку Добавить узлы (IE4) или Узлы (IE5). Добавьте к списку надежных узлов Web-сервер Центра управления. Если Web-сервер Центра управления находится в том же самом домене, может оказаться полезным добавить только имя Web-сервера (без имени домена). Например: http://ccWebServer.ccWebServerDomain http://ccWebServer Нажмите кнопку OK. Выберите Особый и нажмите кнопку Настройка (IE4) или нажмите кнопку Другой (IE5). Найдите Язык Java --> Разрешения Java (IE4) или Java --> Java Permissions (IE5) и выберите Специальная (IE4) или Custom (IE5). Нажмите кнопку Правила для языка Java. Выберите страницу Разрешения правки (Edit Permissions). Найдите Неподписанное содержимое -> Запустить неподписанное содержимое -> Дополнительные неподписанные разрешения -> Системные сведения (Unsigned Content -> Run Unsigned Content -> Additional Unsigned Permissions -> System Information) и выберите Включить (Enable). Нажмите кнопку OK в каждом открытом окне. 1.10 Несовместимость между Менеджером каталогов данных и Sybase в среде Windows Установка Менеджера каталогов данных Версии 7 на том же компьютере с Windows NT или Windows 2000, что и Sybase Open Client, приведет к ошибке, и Sybase Utilities перестанут работать. Будет выдано сообщение об ошибке, подобное следующему: Fail to initialize LIBTCL.DLL. Please make sure the SYBASE environment variable is set correctly. Это можно предотвратить, удалив параметр среды LC_ALL из параметров среды Windows. LC_ALL - параметр локальной категории. Локальные категории - константы, используемые процедурами локализации для указания того, какую часть информации о локали использовать для программы. Слово локаль означает здесь территорию (или страну), для которой возможна настройка определенных аспектов программы. К локально-зависимым областям относится, например, форматирование дат или формат отображения денежных единиц. LC_ALL влияет на все локально-зависимое поведение (всех категорий). Если удалить параметр среды LC_ALL с целью совместной работы менеджера каталогов данных и Sybase на платформе Windows, перестанут работать следующие функции DB2: Пользователь каталогов данных Администратор каталогов данных Менеджер каталогов данных 1.11 Потеря функции Центра управления С устаревшими клиентами Центра управления при применении FixPak 2 к серверу DB2 не должно быть никаких проблем. Однако в DB2 Версии 7.2 устаревшие клиенты Центра управления почти полностью теряют работоспособность. "Предыдущие уровни" в данном случае подразумевают любые клиенты Версии 6 с FixPak ранее 6 и любые клиенты Версии 7 с FixPak ранее 2. Клиентов Версии 5 это не касается. Для исправления рекомендуем обновить все затронутые клиенты. Клиенты версии 6 должны быть обновлены до FixPak 6 или более позднего, а клиенты версии 7 - до FixPak 2 или более позднего. 1.12 Компакт-диск Netscape не поставляется с DB2 UDB Компакт-диск Netscape более не поставляется с DB2 UDB. Продукты Netscape можно получить по адресу http://www.netscape.com. 1.13 Ошибка в файлах Readme XML В файле README.TXT для DB2 XML Extender Версии 7.1 в разделе "Considerations" сказано следующее: 3. The default version of DB2 UDB is DB2 UDB Version 7.1. If you wish to use DB2 UDB Version 6.1 on AIX and Solaris, you should ensure that you are running with DB2 UDB V6.1 instance and with the DB2 UDB V6.1 libraries. Это неверно. Модуль расширения DB2 XML Extender поддерживается только в DB2 Версии 7.1 и 7.2. В файлах readme.aix, readme.nt и readme.sun список требований к программному обеспечению выглядит так: DB2 UDB 6.1 with FP1_U465423 or higher (AIX) DB2 Universal Database Version 6.1 or higher with FixPak 3 installed (NT) DB2 UDB Version 6.1 with FixPak FP1_U465424 or higher (Sun) Это неверно. Для DB2 XML Extender необходима DB2 Версии 7.1 или 7.2. 1.14 Возможная потеря данных в Linux for S/390 При использовании DB2 on Linux for S/390 с ядром 2.2 количество доступной памяти RAM на компьютере Linux надо ограничить величиной не более 1 Гбайта. Это ограничение предотвращает возможную потерю данных в DB2 из-за ошибки в ядре Linux. Это затрагивает только DB2 on Linux for S/390, но не Linux на системах Intel. Исправление ядра можно получить по адресу http://www10.software.ibm.com/developerworks/opensource/linux390/alpha_src.html; после применения этого исправления можно использовать более 1 Гбайта памяти RAM. 1.15 DB2 UDB в Windows 2000 В этих Замечаниях по выпуску все ссылки на Windows NT относятся также к Windows 2000, если не сказано обратного. 1.16 Новые усовершенствования обработки деловой информации в DB2 Версии 7.2 В книге Что нового Версии 7.2 и в некоторой другой документации есть ссылки на новые усовершенствования обработки деловой информации в Версии 7.2. Эти усовершенствования будут доступны позже. Электронная документация (форматы HTML, PDF и поиск) 2.1 Поддерживаемые браузеры Web в операционной системе Windows 2000 В Windows 2000 рекомендуется использовать Microsoft Internet Explorer. При использовании Netscape учтите следующее: При использовании Netscape в Windows 2000 для поиска в электронной информации DB2 может потребоваться длительное время. Netscape будет использовать все доступные ресурсы процессора и может работать очень долго. Хотя в конце концов результаты поиска могут быть возвращены, рекомендуется после запуска поиска изменить фокус, щелкнув по другому окну. Через некоторое время будут возвращены результаты поиска. Вы можете также заметить, что когда в Центре управления запрошена справка, она правильно выводится в окне браузера Netscape, однако если оставить окно браузера открытым и впоследствии запросить справку из другой части Центра управления, содержимое окна браузера не изменится. Если закрыть окно браузера и снова запросить справку, она будет показана правильно. Эту ошибку можно исправить, выполнив шаги, описанные в разделе 2.4, Сообщения об ошибках при попытке запуска Netscape. Эту проблему можно также обойти, закрывая окно браузера перед запросом справки Центра управления. При запросе справки Центра управления или темы из Информационного центра вы можете получить сообщение об ошибке. Чтобы исправить эту ошибку, выполнив шаги, описанные в разделе 2.4, Сообщения об ошибках при попытке запуска Netscape. 2.2 Поиск электронной информации DB2 в Solaris При возникновении ошибок поиска электронной информации DB2 в Solaris проверьте параметры ядра в файле /etc/system. Здесь показаны минимальные значения параметров ядра, требуемые для системы поиска DB2 NetQuestion: semsys:seminfo_semmni 256 semsys:seminfo_semmap 258 semsys:seminfo_semmns 512 semsys:seminfo_semmnu 512 semsys:seminfo_semmsl 50 shmsys:shminfo_shmmax 6291456 shmsys:shminfo_shmseg 16 shmsys:shminfo_shmmni 300 Чтобы задать параметр ядра, добавьте в конец файла /etc/system такую строку: set <имя_семафора> = значение Чтобы новые или измененные значения вступили в силу, необходимо перезагрузить систему. 2.3 Переключение NetQuestion for OS/2 на использование TCP/IP Инструкции по переключению NetQuestion на использование TCP/IP в системах OS/2 неполны. Указанные в этих инструкциях файлы *.cfg находятся в подкаталоге данных каталога установки NetQuestion. Чтобы узнать каталог установки NetQuestion, можно использовать одну из следующих команд: echo %IMNINSTSRV% //для установок SBCS echo %IMQINSTSRV% //для установок DBCS 2.4 Сообщения об ошибках при попытке запуска Netscape Если при попытке запуска Netscape вы получили следующие сообщения об ошибках: Не найден файл <путь файла> (или один из его компонентов). Проверьте правильность пути и имени файла и убедитесь, что доступны все необходимые библиотеки. Не удалось открыть "D:\Program Files\SQLLIB\CC\..\doc\html\db2help\XXXXX.htm" выполните следующие действия для исправления этой ошибки в системах Windows NT, 95 или 98 (что нужно сделать в Windows 2000, смотрите ниже): В меню Пуск выберите Программы --> Проводник. Откроется Проводник Windows. В Проводнике Windows выберите Вид --> Параметры. Откроется записная книжка Параметры. Щелкните по вкладке Типы файлов. Откроется страница Типы файлов. В поле Зарегистрированные типы выберите Netscape Hypertext Document и нажмите кнопку Изменить. Откроется окно Изменение свойств типа. В поле Действия выберите "open". Нажмите кнопку Изменить. Откроется окно Изменение действия для типа. Выключите переключатель Использовать DDE. Убедитесь, что в самом конце строки в поле Приложение, исполняющее действие находится "%1" (включая кавычки и пробел перед первой кавычкой). Если такие сообщения получены в системе Windows 2000, выполните следующие действия: В меню Пуск выберите Проводник Windows. Откроется Проводник Windows. В Проводнике Windows выберите Средства --> Параметры папок. Откроется записная книжка Параметры папок. Щелкните по вкладке Типы файлов. На странице Типы файлов в поле Зарегистрированные типы выберите HTM Netscape Hypertext Document и нажмите кнопку Дополнительные. Откроется окно Изменение свойств типа. В поле Действия выберите "open". Нажмите кнопку Изменить. Откроется окно Изменение действия для типа. Выключите переключатель Использовать DDE. Убедитесь, что в самом конце строки в поле Приложение, исполняющее действие находится "%1" (включая кавычки и пробел перед первой кавычкой). Нажмите кнопку OK. Повторите шаги с 4 по 8 для типов файлов HTML Netscape Hypertext Document и SHTML Netscape Hypertext Document. 2.5 Требования к конфигурации для Adobe Acrobat Reader в системах на основе UNIX Для платформ на основе UNIX Acrobat Reader предлагается только для работы с английским языком, поэтому при попытке открыть файлы PDF с другими национальными языками могут возникнуть ошибки. В сообщениях об ошибках может говориться об ошибках доступа к шрифтам или об ошибках выделения содержимого файла PDF, но на самом деле эти ошибки вызваны тем, что английская версия Acrobat Reader может нормально работать в UNIX только в английской национальной среде. Чтобы просмотреть такие файлы PDF, перед запуском английской версии Acrobat Reader переключитесь на английскую национальную среду, для чего выполните следующие действия: Отредактируйте файл сценария запуска Acrobat Reader, добавив в него после оператора #!/bin/sh следующую строку: LANG=C;export LANG Это обеспечит правильное поведение Acrobat Reader при его запуске другими прикладными программами (например, из Netscape Navigator или из меню справки прикладной программы). Введите в командной строке LANG=C, чтобы задать английскую среду для прикладной программы Acrobat Reader. Чтобы получить дополнительную информацию, обратитесь в Adobe Systems (http://www.Adobe.com). 2.6 Справочник SQL поставляется в виде одного файла PDF В приложении "Использование библиотеки DB2" в каждой книге указано, что Справочник SQL доступен в формате PDF в виде двух отдельных томов. Это неверно. Хотя в печатном виде книга состоит из двух томов и два соответствующих номера форм правильны, существует только один файл PDF, содержащий оба тома. Имя этого файла PDF - db2s0x70. Установка и конфигурирование Частичное содержание Общая информация по установке 3.1 Загрузка установочных пакетов для всех поддерживаемых клиентов DB2 3.2 Установка DB2 в Windows 2000 3.3 Проблемы перенастройки производных таблиц, в определении которых использованы специальные регистры 3.4 Поддержка протокола IPX/SPX в Windows 2000 3.5 Остановка процессов DB2 перед обновлением предыдущей версии DB2 3.6 После установки DB2 выполните db2iupdt, если уже установлен другой продукт DB2 3.7 Задание среды Linux для запуска Центра управления DB2 3.8 DB2 Universal Database Enterprise Edition и DB2 Connect Enterprise Edition для Linux на S/390 3.9 DB2 Universal Database Enterprise - Extended Edition for UNIX Quick Beginnings 3.10 Параметр ядра shmseg для HP-UX 3.11 Перенастройка управляющих баз данных IBM Visual Warehouse 3.12 Доступ к управляющим базам данных хранилища Data Links Manager Quick Beginnings 4.1 Ошибка запуска Dlfm с сообщением: "Ошибка получения afsfid для префикса" 4.2 Задание класса Tivoli Storage Manager для файлов архивов 4.3 Требования к дисковому пространству для DFS Client Enabler 4.4 Мониторинг процессов внутренней обработки менеджера файлов связей данных в AIX 4.5 Установка и конфигурирование менеджера связей данных DB2 для AIX: Особенности установки в средах DCE-DFS 4.6 Ошибка выполнения команды "dlfm add_prefix" 4.7 Установка и конфигурирование менеджера связей данных DB2 для AIX: Использование утилиты db2setup для установки менеджера связей данных DB2 в AIX 4.8 Установка и конфигурирование менеджера связей данных DB2 для AIX: Задачи после установки в DCE-DFS 4.9 Установка и конфигурирование менеджера связей данных DB2 для AIX: Ручная установка менеджера связей данных DB2 с помощью SMIT 4.10 Установка и конфигурирование Client Enabler DFS для связей данных DB2 4.11 Установка и конфигурирование менеджера связей данных DB2 для Solaris 4.12 Выбор метода резервного копирования для менеджера связей данных DB2 в AIX 4.13 Выбор метода резервного копирования для менеджера связей данных DB2 в операционной среде Solaris 4.14 Выбор метода резервного копирования для менеджера связей данных DB2 в Windows NT 4.15 Резервное копирование файловой системы с журналами в AIX 4.16 Привилегии группы администратора в связях данных в Windows NT 4.17 Минимизация записи в журнал при установке фильтра файловой системы связей данных (Data File System Filter - DLFF) 4.17.1 Запись сообщений в журнал после установки 4.18 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов 4.19 Before You Begin/Determine hostname (Прежде чем вы начнете/Определение имени хоста) 4.20 Работа с менеджером файлов связей данных: очистка после удаления менеджера связей данных DB2 из базы данных DB2 4.21 DLFM1001E (Новое сообщение об ошибке) 4.22 Опция задания файла конфигурации DLFM 4.23 Ошибка при работе сценария связей данных/DFS dmapp_prestart в AIX 4.24 Интеграция Tivoli Space Manager Integration с Data Links 4.24.1 Ограничения 4.25 Глава 4. Installing and Configuring DB2 Data Links Manager for AIX (Установка и конфигурирование менеджера связей данных DB2 для AIX) 4.25.1 Общие замечания по установке 4.25.1.1 Перенастройка менеджера файлов DB2 Версии 5.2 в Менеджер связей данных DB2 Версии 7 Дополнение по установке и настройке 5.1 Глава 5. Установка клиентов DB2 в операционных системах UNIX 5.1.1 Параметры конфигурации ядра HP-UX 5.2 Глава 12. Запуск собственных прикладных программ 5.2.1 Связывание утилит базы данных при использовании клиента времени выполнения 5.2.2 Доступ к DB2 с использованием ODBC из клиентов UNIX 5.3 Глава 24. Настройка системы объединения на работу с несколькими источниками данных 5.3.1 Системы объединения 5.3.1.1 Ограничение 5.3.2 Установка DB2 Relational Connect 5.3.2.1 Установка DB2 Relational Connect на серверах Windows NT 5.3.2.2 Установка DB2 Relational Connect на серверах AIX, Linux и операционной среды Solaris 5.4 Глава 26. Доступ к источникам данных Oracle 5.4.1 Ошибки документации 5.5 Доступ к источникам данных Sybase (новая глава) 5.5.1 Добавление источников данных Sybase на сервер объединения 5.5.1.1 Шаг 1: Задание переменных среды и изменение реестра профиля 5.5.1.2 Шаг 2: Компоновка DB2 с программным обеспечением клиента Sybase (только для AIX и Solaris) 5.5.1.3 Шаг 3: Перезапуск экземпляра DB2 5.5.1.4 Шаг 4: Создание и настройка файла интерфейсов 5.5.1.5 Шаг 5: Создание оболочки 5.5.1.6 Шаг 6 (необязательный): Задание переменной среды DB2_DJ_COMM 5.5.1.7 Шаг 7: Создание сервера 5.5.1.8 Шаг 8 (необязательный): Задание опции сервера CONNECTSTRING 5.5.1.9 Шаг 9: Создание отображения пользователей 5.5.1.10 Шаг 10: Создание псевдонимов для таблиц и производных таблиц 5.5.2 Задание кодовых страниц Sybase 5.6 Обращение к источникам данных Microsoft SQL Server с использованием ODBC (новая глава) 5.6.1 Добавление на сервер объединения источников данных Microsoft SQL Server 5.6.1.1 Шаг 1: Задание переменных среды (только для AIX) 5.6.1.2 Шаг 2: Запуск сценария оболочки (только для AIX) 5.6.1.3 Шаг 3 (необязательный): Задание переменной среды DB2_DJ_COMM 5.6.1.4 Шаг 4: Перезапуск экземпляра DB2 (только для AIX) 5.6.1.5 Шаг 5: Создание оболочки 5.6.1.6 Шаг 6: Создание сервера 5.6.1.7 Шаг 7: Создание отображения пользователей 5.6.1.8 Шаг 8: Создание псевдонимов для таблиц и производных таблиц 5.6.1.9 Шаг 9 (необязательный): Получение трассировок ODBC 5.6.2 Обзор кодовых страниц Microsoft SQL Server Общая информация по установке 3.1 Загрузка установочных пакетов для всех поддерживаемых клиентов DB2 Установочные пакеты для всех поддерживаемых клиентов DB2, в том числе для клиентов DB2 более ранних версий (до Версии 7), можно загрузить с сайта IBM DB2 Client Application Enabler Pack по адресу: http://www.ibm.com/software/data/db2/db2tech/clientpak.html 3.2 Установка DB2 в Windows 2000 В Windows 2000 при установке поверх более ранней версии DB2 или повторной установке текущей версии убедитесь, что для опций восстановления для всех служб DB2 задано значение "Не выполнять никаких действий". 3.3 Проблемы перенастройки производных таблиц, в определении которых использованы специальные регистры После перенастройки базы данных нельзя использовать производные таблицы, для определения столбцов которых использованы специальные регистры USER или CURRENT SCHEMA. Например: create view v1 (c1) as values user В Версии 5 специальные регистры USER и CURRENT SCHEMA имели тип данных CHAR(8), но, начиная с Версии 6 они определены как VARCHAR(128). Если в этом примере производная таблица создана в Версии 5, столбец c1 имеет тип данных CHAR и после перенастройки базы данных он также будет иметь тип данных CHAR. Если эта производная таблица используется после перенастройки, этот столбец будет вычисляться во время выполнения и это вызовет ошибку из-за несовпадения типов данных. Решение проблемы: отбросить и заново создать эту производную таблицу. Перед ее отбрасыванием сохраните оператор, использованный для ее создания, запросив производную таблицу каталога SYSCAT.VIEWS. Например: select text from syscat.views where viewname='<>' 3.4 Поддержка протокола IPX/SPX в Windows 2000 Эта информация относится к главе Планирование установки вашей книги Быстрый старт, к разделу под заголовком "Возможные сценарии связи клиент-сервер". Опубликованная схема поддержки протокола не вполне правильна. Не поддерживается соединение клиента Windows 2000 с сервером в OS/2 или системе на основе UNIX при помощи IPX/SPX. Также не поддерживается соединение клиента OS/2 или клиента в системе на основе UNIX с сервером Windows 2000 при помощи IPX/SPX. 3.5 Остановка процессов DB2 перед обновлением предыдущей версии DB2 Эта информация относится к сведениям о перенастройке в вашей книге DB2 for Windows Быстрый старт. При обновлении предыдущей версии DB2 на компьютере с системой Windows программа установки выдает сообщение, содержащее список процессов, удерживающих в памяти модули DLL DB2. После этого вы можете вручную остановить процессы, указанные в этом списке, или можете позволить программе установки автоматически завершить эти процессы. Чтобы избежать потери данных, рекомендуется вручную завершить все процессы DB2 перед установкой. Лучший способ убедиться, что процессы DB2 не выполняются - проверить запущенные в системе процессы, используя панель Windows Службы. В панели Windows Службы убедитесь, что не запущены службы DB2, службы OLAP или службы хранилища данных. Прим.:Одновременно в системе Windows может работать только одна версия DB2. Например, нельзя одновременно запустить на одном компьютере Windows DB2 Версии 7 и DB2 Версии 6. При установке DB2 Версии 7 на компьютере, на котором установлена DB2 Версии 6, программа установки удалит в процессе установки DB2 Версии 6. Дополнительную информацию о перенастройке из предыдущих версий DB2 смотрите в соответствующем руководстве Быстрый старт. 3.6 После установки DB2 выполните db2iupdt, если уже установлен другой продукт DB2 Следующую информацию надо добавить к документации по установке в вашей книге Быстрый старт. При установке DB2 UDB Версии 7 в системах на основе UNIX, в которых уже установлен продукт DB2, нужно будет выполнить команду db2iupdt, чтобы обновить те экземпляры, которые должны использовать новые возможности этого продукта. Некоторые возможности не будут доступны, пока не будет выполнена эта команда. 3.7 Задание среды Linux для запуска Центра управления DB2 Следующую информацию надо включить в главу "Установка Центра управления DB2" книги Быстрый старт. Запустив программу установки DB2 в системе Linux и вернувшись в окно терминала, введите следующие команды, чтобы задать правильную среду для работы Центра управления DB2: su -l <имя экземпляра> export JAVA_HOME=/usr/jdk118 export DISPLAY=<имя компьютера>:0 Затем откройте еще одно окно терминала и введите команды: su root xhost +<имя компьютера> Закройте это окно терминала и вернитесь в окно терминала, в котором вы зарегистрировались как владелец экземпляра, и введите команду: db2cc чтобы запустить Центр управления. 3.8 DB2 Universal Database Enterprise Edition и DB2 Connect Enterprise Edition для Linux на S/390 DB2 Universal Database Enterprise Edition и DB2 Connect Enterprise Edition теперь доступны для Linux на S/390. Перед установкой Linux на компьютер S/390 необходимо ознакомиться с требованиями к программному обеспечению и аппаратуре: Аппаратура S/390 9672 Generation 5 или более новое, Multiprise 3000. Программное обеспечение SuSE Linux v7.0 for S/390 или Turbolinux Server 6 for zSeries and S/390 уровень ядра 2.2.16 с исправлениями для S/390 (смотрите ниже) glibc 2.1.3 libstdc++ 6.1 Для Linux на S/390 требуются следующие исправления: в настоящее время исправления не требуются. Последние исправления смотрите в Интернете по адресу http://www.software.ibm.com/data/db2/linux. Примечания: Поддерживаются только 32-битные Linux для платформы Intel и Linux на S/390. Под Linux/390 в DB2 Версии 7 недоступны: DB2 UDB Enterprise - Extended Edition Модули расширения DB2 Менеджер связей данных Клиент управления DB2 Поддержка изменения пароля Поддержка LDAP 3.9 DB2 Universal Database Enterprise - Extended Edition for UNIX Quick Beginnings В Главе 5. Installing and Configuring DB2 Universal Database on Linux (Установка и конфигурирование DB2 Universal Database в Linux должно быть указано, что у каждого физического узла в кластере Linux EEE уровни ядра, glibc и libstdc++ должны совпадать. Пробную версию DB2 EEE for Linux можно получить на Web-сайте http://www6.software.ibm.com/dl/db2udbdl/db2udbdl-p 3.10 Параметр ядра shmseg для HP-UX Информация об изменении параметров конфигурации ядра HP-UX в книге Quick Beginnings (Быстрый старт) неверна. Рекомендуемое значение параметра ядра shmseg для HP-UX следует игнорировать. Вместо этого следует использовать значение HP-UX по умолчанию (120). 3.11 Перенастройка управляющих баз данных IBM Visual Warehouse Информация о перенастройке активной управляющей базы данных хранилища при типовой установке DB2 Universal Database Версии 7 в Windows NT и Windows 2000 содержится в руководстве DB2 Universal Database: Быстрый старт для Windows. Если нужно перенастроить несколько управляющих баз данных хранилища, для перенастройки дополнительных баз данных необходимо использовать окно Менеджер управляющей базы данных хранилища. В каждый момент времени активной может быть только одна управляющая база данных хранилища. Если база данных, перенастроенная последней - это не та база данных, которую нужно использовать при следующей регистрации в Центре хранилищ данных, с помощью окна Менеджер управляющей базы данных хранилища зарегистрируйте в качестве активной нужную базу данных. 3.12 Доступ к управляющим базам данных хранилища При типовой установке DB2 Версии 7 в Windows NT вместе с сервером хранилища данных создается управляющая база данных хранилища DB2 Версии 7. Если установлена управляющая база данных хранилища Visual Warehouse, перед перенастройкой метаданных этой управляющей базы данных хранилища для использования Центром хранилищ данных DB2 Версии 7 необходимо обновить содержащий эту базу данных сервер DB2 в DB2 Версии 7. Необходимо перенастроить все управляющие базы данных хранилища, которые нужно использовать в Версии 7. Метаданные в активной управляющей базе данных хранилища перенастраиваются в Версию 7 в процессе установки DB2 Версии 7. Для перенастройки метаданных в других управляющих базах данных хранилища используйте утилиту перенастройки управляющей базы данных хранилища, для вызова которой в Windows NT выберите Пуск --> Программы --> IBM DB2 --> Менеджер управляющей базы данных хранилища. Информацию о перенастройке управляющих баз данных хранилища смотрите в руководстве DB2 Universal Database for Windows: Быстрый старт. Data Links Manager Quick Beginnings 4.1 Ошибка запуска Dlfm с сообщением: "Ошибка получения afsfid для префикса" Обратитесь в Службу поддержки IBM, если для менеджера связей данных, работающего в среде DCE-DFS, возникает ошибка запуска dlfm с сообщением: Ошибка получения afsfid для префикса Эта ошибка может возникнуть, если набор файлов DFS, зарегистрированный в менеджере связей данных с помощью "dlfm add_prefix", удален. 4.2 Задание класса Tivoli Storage Manager для файлов архивов Чтобы задать, какой класс управления TSM должен использоваться для файлов архивов, задайте соответствующее имя класса управления в переменной реестра DB2 DLFM_TSM_MGMTCLASS. 4.3 Требования к дисковому пространству для DFS Client Enabler DFS Client Enabler - это дополнительный компонент, который можно выбрать при установке клиента или сервера DB2 Universal Database. Нельзя установить DFS Client Enabler, не устанавливая продукт клиента или сервера DB2 Universal Database, даже если DFS Client Enabler работает сам по себе и не требуются клиент или сервер DB2 UDB. Если DFS Client Enabler устанавливается при установке клиента времени выполнения DB2, кроме 2 Мбайт дискового пространства, необходимых для кода DFS Client Enabler, нужно зарезервировать дополнительные 40 Мбайт. Если DFS Client Enabler устанавливается при установке клиента администратора DB2 или сервера DB2, потребуется больший объем дискового пространства. Дополнительную информацию о требуемом дисковом пространстве для продуктов DB2 Universal Database смотрите в руководстве DB2 for UNIX Быстрый старт. 4.4 Мониторинг процессов внутренней обработки менеджера файлов связей данных в AIX Изменены выходные данные команды dlfm see. Когда эта команда используется для отслеживания процессов внутренней обработки менеджера файлов связей данных в AIX, возвращаемые ей выходные данные будут выглядеть так: PID PPID PGID RUNAME UNAME ETIME DAEMON NAME 17500 60182 40838 dlfm root 12:18 dlfm_copyd_(dlfm) 41228 60182 40838 dlfm root 12:18 dlfm_chownd_(dlfm) 49006 60182 40838 dlfm root 12:18 dlfm_upcalld_(dlfm) 51972 60182 40838 dlfm root 12:18 dlfm_gcd_(dlfm) 66850 60182 40838 dlfm root 12:18 dlfm_retrieved_(dlfm) 67216 60182 40838 dlfm dlfm 12:18 dlfm_delgrpd_(dlfm) 60182 1 40838 dlfm dlfm 12:18 dlfmd_(dlfm) DLFM SEE request was successful. Имя в скобках - это имя экземпляра dlfm, в данном случае "dlfm". 4.5 Установка и конфигурирование менеджера связей данных DB2 для AIX: Особенности установки в средах DCE-DFS В разделе "Предварительные требования для установки" должна быть добавлена новая информация: Необходимо также установить или e-fix for DFS 3.1, или PTF set 1 (когда он станет доступным). Этот e-fix доступен по адресу: http://www.transarc.com/Support/dfs/datalinks/efix_dfs31_main_page.html А также: Перед установкой менеджера связей данных должен быть запущен клиент dfs. Используйте db2setup или smitty. В разделе "Файл keytab" есть ошибка, которую надо исправить так: Файл keytab, содержащий информацию о принципалах и паролях, должен называться datalink.ktb и .... В примере ниже используется правильное имя datalink.ktb. Раздел "Keytab file" надо переставить ниже "DCE-DFS Post-Installation Task", так как этот файл нельзя создать, пока не будет создан экземпляр DLMADMIN. В разделе "Data Links File Manager servers and clients" должно быть указано, что сервер менеджера связей данных должен быть установлен до установки клиентов менеджера связей данных. Должен быть добавлен новый раздел "Каталог резервного копирования": Если для резервного копирования используется локальная файловая система, каталог должен быть задан в файловой системе DFS. Убедитесь, что администратор DFS создал этот набор файлов DFS. Он не должен быть набором файлов DMLFS. 4.6 Ошибка выполнения команды "dlfm add_prefix" Для менеджера связей данных, работающего в среде DCE/DFS, может возникать ошибка команды dlfm add_prefix с кодом возврата -2061 (ошибка создания резервной копии). Если это произошло, выполните следующие действия: Остановите процесс демона менеджера связей данных командой dlfm stop. Остановите процессы DB2 командой dlfm stopdbm. Получите права корневого пользователя DCE, выполнив команду dce_login root. Запустите процессы DB2 командой dlfm startdbm. Зарегистрируйте набор файлов на менеджере связей данных с помощью команды dlfm add_prefix. Запустите процесс демона менеджера связей данных командой dlfm start. 4.7 Установка и конфигурирование менеджера связей данных DB2 для AIX: Использование утилиты db2setup для установки менеджера связей данных DB2 в AIX В разделе "DB2 database DLFM_DB created" база данных DLFM_DB не создается в среде DCE_DFS. Это необходимо сделать после установки. В разделе "DCE-DFS pre-start registration for DMAPP" Шаг 2 должен быть изменен на следующий текст: 2. В /opt/dcelocal/tcl/user_cmd.tcl добавлены команды, обеспечивающие запуск DMAPP при запуске DFS. 4.8 Установка и конфигурирование менеджера связей данных DB2 для AIX: Задачи после установки в DCE-DFS Должен быть добавлен следующий новый раздел "Завершение установки менеджера связей данных": Для завершения установки на сервере связей данных нужно выполнить следующие действия: Создайте файл keytab, как это описано в подразделе "Keytab file" раздела "Additional Installation Considerations in DCE-DFS Environment" главы "Installing and Configuring DB2 Data Links Manager for AIX". Зарегистрировавшись как пользователь root, введите следующие команды для запуска DMAPP: stop.dfs all start.dfs all Выполните команду "dlfm setup", используя права пользователя root DCE: Зарегистрируйтесь как администратор менеджера связей данных DLMADMIN. В качестве пользователя root введите команду dce_login. Введите команду: dlfm setup. Для завершения установки на клиенте связей данных нужно выполнить следующие действия: Создайте файл keytab, как это описано в подразделе "Keytab file" раздела "Additional Installation Considerations in DCE-DFS Environment" главы "Installing and Configuring DB2 Data Links Manager for AIX". Зарегистрировавшись как пользователь root, введите следующие команды для запуска DMAPP: stop.dfs all start.dfs all 4.9 Установка и конфигурирование менеджера связей данных DB2 для AIX: Ручная установка менеджера связей данных DB2 с помощью SMIT В разделе "SMIT Post-installation Tasks" измените шаг 7, указав в нем, что команда "dce_login root" должна выполняться перед командой "dlfm setup". Шаг 11 не нужен. Этот шаг выполняется автоматически после выполнения шага 6 (dlfm server_conf) или 8 (dlfm client_conf). Удалите также шаг 12 (dlfm start). Для завершения установки выполните следующие действия: Создайте файл keytab, как это описано в подразделе "Keytab file" раздела "Additional Installation Considerations in DCE-DFS Environment" главы "Installing and Configuring DB2 Data Links Manager for AIX". Зарегистрировавшись как пользователь root, введите следующие команды для запуска DMAPP: stop.dfs all start.dfs all 4.10 Установка и конфигурирование Client Enabler DFS для связей данных DB2 В разделе "Configuring a DFS Client Enabler" добавьте в шаг 2 следующую информацию: Обычно конфигурирование завершается командами "secval". Однако может также понадобиться перезагрузка компьютера. Если возникли ошибки при обращении к файлам READ PERMISSION DB, перезагрузите компьютер, на котором только что был установлен Client Enabler DFS DB2. 4.11 Установка и конфигурирование менеджера связей данных DB2 для Solaris После установки менеджера связей данных DB2 для Solaris необходимо выполнить следующие действия: Добавить к файлу /etc/system следующие три строки: set dlfsdrv:glob_mod_pri=0x100800 set dlfsdrv:glob_mesg_pri=0xff set dlfsdrv:ConfigDlfsUid=UID где UID - ID пользователя dlfm. Перезагрузить компьютер, чтобы изменения вступили в силу. 4.12 Выбор метода резервного копирования для менеджера связей данных DB2 в AIX Для резервного копирования файлов с сервера связей данных кроме копирования на диск и XBSA можно также использовать Tivoli Storage Manager (TSM). Чтобы в качестве сервера архивов использовать Tivoli Storage Manager: Установите Tivoli Storage Manager на сервере связей данных. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. Зарегистрируйте прикладную программу клиента связей данных на сервере Tivoli Storage Manager. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. В файлы сценариев db2profile или db2cshrc администратора менеджера связей данных добавьте следующие переменные среды: (для оболочки Bash, Bourne или Korn) export DSMI_DIR=/usr/tivoli/tsm/client/api/bin export DSMI_CONFIG=$HOME/tsm/dsm.opt export DSMI_LOG=$HOME/dldump export PATH=$PATH:$DSMI_DIR (для оболочки C) setenv DSMI_DIR /usr/tivoli/tsm/client/api/bin setenv DSMI_CONFIG ${HOME}/tsm/dsm.opt setenv DSMI_LOG ${HOME}/dldump setenv PATH=${PATH}:$DSMI_DIR Убедитесь, что файл системных опций TSM dsm.sys находится в каталоге $DSMI_DIR. Убедитесь, что файл пользовательских опций TSM dsm.opt находится в каталоге INSTHOME/tsm, где INSTHOME - начальный каталог администратора менеджера связей данных. В файле системных опций Tivoli Storage Manager /usr/tivoli/tsm/client/api/bin/dsm.sys задайте для опции PASSWORDACCESS значение generate. Зарегистрируйте пароль TSM с опцией generate перед первым запуском менеджера файлов связей данных. Теперь не нужно будет задавать пароль при установлении соединения менеджера файлов связей данных с сервером TSM. Дополнительную информацию смотрите в документации по используемому продукту TSM. Для переменной реестра DLFM_BACKUP_TARGET задайте значение TSM. В этом случае значение переменной реестра DLFM_BACKUP_DIR_NAME будет игнорироваться. Для резервного копирования будет использоваться Tivoli Storage Manager. Примечания: Имейте в виду, что если во время работы изменить значение переменной реестра DLFM_BACKUP_TARGET с TSM на положение на диске, созданные файлы архивов не будут перемещены в новое положение. Например, если менеджер файлов связей данных был запущен со значением TSM переменной реестра DLFM_BACKUP_TARGET и затем значение этой переменной реестра было изменено на положение на диске, вновь создаваемые файлы архивов будут сохраняться в этом новом положении на диске. Файлы архивов, сохраненные ранее в TSM, не будут перемещены в это новое положении на диске. Чтобы переопределить класс управления TSM по умолчанию, можно использовать новую переменную реестра DLFM_TSM_MGMTCLASS. Если эта переменная реестра не задана, используется класс управления TSM по умолчанию. Остановите менеджер файлов связей данных командой dlfm stop. Запустите менеджер файлов связей данных командой dlfm start. 4.13 Выбор метода резервного копирования для менеджера связей данных DB2 в операционной среде Solaris Для резервного копирования файлов с сервера связей данных кроме копирования на диск и XBSA можно также использовать Tivoli Storage Manager (TSM). Чтобы в качестве сервера архивов использовать Tivoli Storage Manager: Установите Tivoli Storage Manager на сервере связей данных. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. Зарегистрируйте прикладную программу клиента связей данных на сервере Tivoli Storage Manager. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. В файлы сценариев db2profile или db2cshrc администратора менеджера связей данных добавьте следующие переменные среды: (для оболочки Bash, Bourne или Korn) export DSMI_DIR=/opt/tivoli/tsm/client/api/bin export DSMI_CONFIG=$HOME/tsm/dsm.opt export DSMI_LOG=$HOME/dldump export PATH=$PATH:/opt/tivoli/tsm/client/api/bin (для оболочки C) setenv DSMI_DIR /opt/tivoli/tsm/client/api/bin setenv DSMI_CONFIG ${HOME}/tsm/dsm.opt setenv DSMI_LOG ${HOME}/dldump setenv PATH=${PATH}:/opt/tivoli/tsm/client/api/bin Убедитесь, что файл системных опций TSM dsm.sys находится в каталоге /opt/tivoli/tsm/client/api/bin. Убедитесь, что файл пользовательских опций TSM dsm.opt находится в каталоге INSTHOME/tsm, где INSTHOME - начальный каталог администратора менеджера связей данных. В файле системных опций Tivoli Storage Manager /opt/tivoli/tsm/client/api/bin/dsm.sys задайте для опции PASSWORDACCESS значение generate. Зарегистрируйте пароль TSM с опцией generate перед первым запуском менеджера файлов связей данных. Теперь не нужно будет задавать пароль при установлении соединения менеджера файлов связей данных с сервером TSM. Дополнительную информацию смотрите в документации по используемому продукту TSM. Для переменной реестра DLFM_BACKUP_TARGET задайте значение TSM. В этом случае значение переменной реестра DLFM_BACKUP_DIR_NAME будет игнорироваться. Для резервного копирования будет использоваться Tivoli Storage Manager. Примечания: Имейте в виду, что если во время работы изменить значение переменной реестра DLFM_BACKUP_TARGET с TSM на положение на диске, созданные файлы архивов не будут перемещены в новое положение. Например, если менеджер файлов связей данных был запущен со значением TSM переменной реестра DLFM_BACKUP_TARGET и затем значение этой переменной реестра было изменено на положение на диске, вновь создаваемые файлы архивов будут сохраняться в этом новом положении на диске. Файлы архивов, сохраненные ранее в TSM, не будут перемещены в это новое положении на диске. Чтобы переопределить класс управления TSM по умолчанию, можно использовать новую переменную реестра DLFM_TSM_MGMTCLASS. Если эта переменная реестра не задана, используется класс управления TSM по умолчанию. Остановите менеджер файлов связей данных командой dlfm stop. Запустите менеджер файлов связей данных командой dlfm start. 4.14 Выбор метода резервного копирования для менеджера связей данных DB2 в Windows NT При вставке значения DATALINK в таблицу со столбцом DATALINK, для которого определено восстановление, в расписание вносится операция резервного копирования на сервере архивов соответствующих файлов DATALINK с сервера связей данных. В настоящее время поддерживаются две опции резервного копирования файлов на сервере архивов: копирование на диск (метод по умолчанию) и Tivoli Storage Manager. В будущих выпусках менеджера связей данных DB2 для Windows NT будут поддерживаться другие носители и программы резервного копирования. Копирование на диск (метод по умолчанию) Когда на сервере DB2 введена команда backup, для заданных в базе данных файлов на сервере связей данных создается резервная копия в каталоге, задаваемом переменной среды DLFM_BACKUP_DIR_NAME. По умолчанию эта переменная имеет значение c:\dlfmbackup, где c:\ обозначен диск резервной установки менеджера связей данных. Чтобы задать для этой переменной значение c:\dlfmbackup, введите следующую команду: db2set -g DLFM_BACKUP_DIR_NAME=c:\dlfmbackup Положение, задаваемое в переменной среды DLFM_BACKUP_DIR_NAME, не должно определяться в файловой системе с помощью фильтра файловой системы связей данных и каталог, заданный для резервного копирования файлов, должен содержать достаточно свободного пространства. Задайте также для переменной DLFM_BACKUP_TARGET значение LOCAL, используя следующую команду: db2set -g DLFM_BACKUP_TARGET=LOCAL После задания или изменения этих переменных остановите и перезапустите менеджер файлов связей данных с помощью команд dlfm stop и dlfm start. Tivoli Storage Manager Чтобы в качестве сервера архивов использовать Tivoli Storage Manager: Установите Tivoli Storage Manager на сервере связей данных. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. Зарегистрируйте прикладную программу клиента связей данных на сервере Tivoli Storage Manager. Дополнительную информацию смотрите в документации по используемому продукту Tivoli Storage Manager. Нажмите кнопку Пуск и выберите Настройка -> Панель управления -> Система. Откроется окно Свойства системы. Выберите закладку Среда и введите следующие переменные среды и их значения: Переменная Значение DSMI_DIR c:\tsm\baclient DSMI_CONFIG c:\tsm\baclient\dsm.opt DSMI_LOG c:\tsm\dldump Убедитесь, что файл системных опций TSM dsm.sys находится в каталоге c:\tsm\baclient. Убедитесь, что файл пользовательских опций TSM dsm.opt находится в каталоге c:\tsm\baclient. В файле системных опций Tivoli Storage Manager c:\tsm\baclient\dsm.sys задайте для опции PASSWORDACCESS значение generate. Зарегистрируйте пароль TSM с опцией generate перед первым запуском менеджера файлов связей данных. Теперь не нужно будет задавать пароль при установлении соединения менеджера файлов связей данных с сервером TSM. Дополнительную информацию смотрите в документации по используемому продукту TSM. Для переменной среды DLFM_BACKUP_TARGET задайте значение TSM, используя следующую команду: db2set -g DLFM_BACKUP_TARGET=TSM В этом случае значение переменной среды DLFM_BACKUP_DIR_NAME будет игнорироваться. Для резервного копирования будет использоваться Tivoli Storage Manager. Примечания: Имейте в виду, что если во время работы изменить значение переменной среды DLFM_BACKUP_TARGET с TSM на LOCAL, созданные файлы архивов не будут перемещены в новое положение. Например, если менеджер файлов связей данных был запущен со значением TSM переменной среды DLFM_BACKUP_TARGET и затем значение этой переменной среды было изменено на LOCAL, вновь создаваемые файлы архивов будут сохраняться в этом новом положении на диске. Файлы архивов, сохраненные ранее в TSM, не будут перемещены в это новое положении на диске. Чтобы переопределить класс управления TSM по умолчанию, можно использовать новую переменную среды DLFM_TSM_MGMTCLASS. Если эта переменная не задана, используется класс управления TSM по умолчанию. Остановите менеджер файлов связей данных командой dlfm stop. Запустите менеджер файлов связей данных командой dlfm start. 4.15 Резервное копирование файловой системы с журналами в AIX В этой книге сказано, что необходимо остановить менеджер связей данных и выполнить резервное копирование файловой системы в автономном режиме. Для пользователей, которым требуется большая доступность системы, предлагается следующий подход, позволяющий избежать необходимости останавливать менеджер связей данных. Возьмите исходный файл CLI quiesce.c и сценарий оболочки online.sh. Эти файлы находятся в каталоге /samples/dlfm. Скомпилируйте quiesce.c: xlC -o quiesce -L$HOME/sqllib/lib -I$HOME/sqllib/include -c quiesce.c Как пользователь root, выполните этот сценарий на узле с файловой системой DLFS. В сценарии оболочки online.sh предполагается, что на узле менеджера связей данных есть запись каталога для каждой базы данных, зарегистрированной на менеджере связей данных. Подразумевается также, что /etc/filesystems содержит полную запись для файловой системы DLFS. Этот сценарий оболочки делает следующее: Стабилизирует все таблицы в базах данных, зарегистрированных на менеджере связей данных. Это предотвращает все новые операции с ними. Размонтирует файловую систему и вновь монтирует ее как файловую систему только для чтения. Выполняет резервное копирование файловой системы. Размонтирует файловую систему и вновь монтирует ее как файловую систему только для чтения и записи. Выводит таблицы DB2 из состояния стабилизации. Этот сценарий нужно изменить в соответствии с вашей средой: Выберите команду резервного копирования и задайте ее в функции do_backup в этом сценарии. Задайте в этом сценарии следующие переменные среды: В качестве значения DLFM_INST задайте имя экземпляра DLFM. В качестве значения PATH_OF_EXEC задайте путь выполняемого файла "quiesce". Запустите этот сценарий: online.sh <имя_файловой_системы> 4.16 Привилегии группы администратора в связях данных в Windows NT В Windows NT у пользователя, принадлежащего к группе администратора, должны быть те же самые привилегии в отношении файлов, связанных с использованием DataLinks, что и у корневого пользователя UNIX в отношении большинства функций. Эти два набора привилегий сравниваются в следующей таблице. Операция Unix (root) Windows NT (администратор) Переименование Да Да Доступ к файлу без маркера Да Да Удаление Да Нет (смотрите примечание ниже) Изменение Да Нет (смотрите примечание ниже) Прим.:NTFS отменяет разрешение этих операций для файлов с доступом только для чтения. Пользователь группы администратора может успешно выполнять эти операции, включив для файла разрешение на запись. 4.17 Минимизация записи в журнал при установке фильтра файловой системы связей данных (Data File System Filter - DLFF) Можно минимизировать запись в журнал при установке фильтра файловой системы связей данных (DLFF), изменив файл dlfs_cfg. Файл dlfs_cfg передается процедуре strload для загрузки драйвера и параметров конфигурации. Этот файл расположен в каталоге /usr/lpp/db2_07_01/cfg/. Через символическую связь этот файл можно также найти в каталоге /etc. Формат файла dlfs_cfg следующий: d 'имя-драйвера' 'номер vfs' 'id dlfm' 'глобальный приоритет сообщений' 'глобальный приоритет модулей' - 0 1 где: d Параметр d указывает, что драйвер должен быть загружен. имя-драйвера Имя-драйвера - полный путь загружаемого драйвера. Например, полный путь для DB2 Версии 7: /usr/lpp/db2_07_01/bin/dlfsdrv. Имя драйвера - dlfsdrv. номер vfs Это запись vfs для DLFS в /etc/vfs. id dlfm Это ID пользователя администратора менеджера связей данных. глобальный приоритет сообщений Это глобальный приоритет сообщений глобальный приоритет модулей Это глобальный приоритет модулей 0 1 0 1 - младшие цифры для создания неклонированных узлов для этого драйвера. Имена узлов создаются путем присоединения младших цифр к имени клонированного узла драйвера. Может быть задано не больше пяти младших цифр (0-4). Реальный пример может выглядеть так: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,255,-1 - 0 1 Сообщения, записываемые в журнал, зависит от установок для глобального приоритета сообщений и от глобального приоритета модулей. Для минимизации записи в журнал можно изменить значение для глобального приоритета сообщений. Для приоритета сообщений можно использовать четыре значения: #define LOG_EMERGENCY 0x01 #define LOG_TRACING 0x02 #define LOG_ERROR 0x04 #define LOG_TROUBLESHOOT 0x08 У большинства сообщений в DLFF в качестве приоритета сообщений используется LOG_TROUBLESHOOT. Несколько альтернативных примеров конфигурации: Если вам необходимы аварийные сообщения и сообщения об ошибках, установите для глобального приоритета сообщений значение 5 (1+4) в файле конфигурации dlfs_cfg: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,5,-1 - 0 1 Если требуются только сообщения об ошибках, установите для глобального приоритета сообщений 4: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,4,-1 - 0 1 Если вам не требуется запись в журнал для DLFS, установите для глобального приоритета сообщений 0: d /usr/lpp/db2_07_01/bin/dlfsdrv 14,208,0,-1 - 0 1 4.17.1 Запись сообщений в журнал после установки При необходимости записывать в журнал сообщения об аварийных ситуациях, ошибках и предупреждениях после установки следует изменить файл dlfs_cfg. Файл dlfs_cfg расположен в каталоге /usr/lpp/db2_07_01/cfg. Для глобального приоритета сообщений должно быть установлено 255 (максимальный приоритет) или 13 (8+4+1). При установке для приоритета 13 (8+4+1) будет записываться информация об аварийных ситуациях, ошибках и предупреждениях. После установки глобального приоритета сообщений демонтируйте файловую систему фильтра DLFS и перезагрузите драйвер dlfsdrv, чтобы во время загрузки были установлены новые значения приоритета. После перезагрузки драйвера dlfsdrv файловая система фильтра DLFS должна быть перемонтирована. Прим.:Установки для dlfs_cfg будут оставаться для всех последующих загрузок драйвера dlfsdrv до тех пор, пока файл dlfs_cfg не будет снова изменен. 4.18 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов Перед установкой DB2 (Версии 5, 6 или 7) на компьютер с AIX, на котором установлен менеджер связей данных, выполните следующие шаги: В качестве пользователя root сделайте копию /etc/vfs, используя команду: cp -p /etc/vfs /etc/vfs.bak Деинсталлируйте DB2. В качестве пользователя root замените /etc/vfs на резервную копию, сделанную на шаге 1: cp -p /etc/vfs.bak /etc/vfs 4.19 Before You Begin/Determine hostname (Прежде чем вы начнете/Определение имени хоста) Вам надо определить имена для каждого из серверов DB2 и серверов связей данных. Эти имена хостов понадобятся для проверки установки. При соединении с менеджером файлов связей данных (DLFM) DB2 сервер DB2 UDB внутренним образом посылает ему следующую информацию: Имя базы данных Имя экземпляра Имя хоста Затем DLFM сравнивает эту информацию со своими внутренними таблицами, чтобы определить, разрешать ли соединение. Соединение будет разрешено только в том случае, если сочетание имени базы данных, имени экземпляра и имени хоста зарегистрировано на нем при помощи команды dlfm add_db. Имя хоста, которое использовалось в команде dlfm add_db, должно точно совпадать с именем хоста, внутренним образом посланным с сервера DB2 UDB. Используйте точное имя хоста, которое можно узнать так: Введите на вашем сервере DB2 команду hostname. Допустим, это команда возвращает имя db2server. В зависимости от платформы сделайте следующее: На AIX введите команду host db2server, где db2server - имя, полученное на предыдущем шаге. Эта команда должна вернуть примерно следующее: db2server.services.com is 9.11.302.341, Aliases: db2server В Windows NT введите команду nslookup db2server, где db2server - имя, полученное на предыдущем шаге. Эта команда должна вернуть примерно следующее: Server: dnsserv.services.com Address: 9.21.14.135 Name: db2server.services.com Address: 9.21.51.178 В Solaris введите cat /etc/hosts | grep 'имя-хоста'. Если имя хоста указано в /etc/hosts без имени домена, эта команда должна вернуть примерно следующее: 9.112.98.167 db2server loghost Если имя хоста указано с именем домена, вывод будет выглядеть так: 9.112.98.167 db2server.services.com loghost При регистрации используйте в базе данных в команде dlfm add_db в качестве имени хоста используйте db2server.services.com. Если вместо него в команде dlfm add_db указать другой алиас, внутреннее соединение сервера DB2 с DLFM завершится неудачно. Сервер связей данных регистрируется на базе данных DB2 при помощи команды DB2 "add datalinks manager for database алиас_базы_данных using node имя_хоста port номер_порта". Имя хоста - это имя сервера связей данных. В этой команде можно использовать любой допустимый алиас сервера связей данных. Значения DATALINK, которые ссылаются на этот сервер связей данных, должны содержать в URL имя хоста, то есть точное имя, которое было использовано в команде "add datalinks manager", надо использовать и при назначении URL столбцам DATALINK. Использование другого алиаса вызовет ошибку при выполнении оператора SQL. 4.20 Работа с менеджером файлов связей данных: очистка после удаления менеджера связей данных DB2 из базы данных DB2 Когда менеджер связей данных DB2 удаляется из базы данных командой DROP DATALINKS MANAGER, сама эта команда не очищает соответствующую информацию в менеджере связей данных DB2. Пользователи могут явно запустить отсоединение файлов, связанных с базой данных, и сборку мусора информации копирования. Для этого используется команда dlfm drop_dlm. Эта команда запускает асинхронное удаление всей информации для определенной базы данных. Чтобы эта команда сработала, менеджер связей данных DB2 должен быть запущен. Крайне важно использовать эту команду только после удаления менеджера связей данных DB2 из базы данных, иначе важная информация о менеджера связей данных DB2 будет потеряна безвозвратно. Чтобы запустить удаление связей и чистку мусора информации резервного копирования для определенной базы данных: Войдите в систему как администратор менеджера связей данных DB2. Введите команду: dlfm drop_dlm база-данных экземпляр имя-хоста где: база-данных - имя удаленной базы данных DB2 UDB; экземпляр - имя экземпляра, в котором находится эта база данных; и имя-хоста - имя хоста сервера DB2 UDB, на котором находится эта база данных. Выйдите из системы. Полный сценарий использования, где показан контекст выполнения этой команды, смотрите в справочнике Command Reference. Для этой команды введен новый код ошибки (смотрите раздел 4.21, DLFM1001E (Новое сообщение об ошибке)). 4.21 DLFM1001E (Новое сообщение об ошибке) DLFM1001E: Ошибка при обработке drop_dlm. Причина: Менеджер связей данных не смог запустить отсоединение связей и сборку мусора для указанной базы данных. Это могло произойти по одной из следующих причин: Менеджер связей данных не работает. В команде задано неверное сочетание базы данных, имени экземпляра и имени хоста. Ошибка одной из служб компонентов менеджера связей данных. Действия: Выполните следующие действия: Убедитесь, что менеджер связей данных работает. Если он еще не работает, запустите его. Убедитесь, что сочетание базы данных, имени экземпляра и имени хоста соответствует зарегистрированной базе данных. Это можно сделать при помощи команды "dlfm list registered databases" в менеджере связей данных. Если ошибка повторяется, посмотрите информацию в файле db2diag.log, чтобы проверить, не зарегистрирована ли ошибка одной из служб компонентов (например, службы управления соединениями, службы управления транзакциями и т.п.). Запишите код ошибки из db2diag.log и предпримите действия для этого кода ошибки. 4.22 Опция задания файла конфигурации DLFM Опция задания dlfm.cfg для DFLM исключена. Ссылки на эту опцию в документации надо игнорировать. 4.23 Ошибка при работе сценария связей данных/DFS dmapp_prestart в AIX Если команда /usr/sbin/cfgdmepi -a "/usr/lib/drivers/dmlfs.ext" завершается неудачно с кодом возврата 1 при выполнении сценария связей данных/DFS dmapp_prestart, установите DFS 3.1 ptfset1, чтобы исправить cfgdmepi. 4.24 Интеграция Tivoli Space Manager Integration с Data Links Менеджер связей данных DB2 теперь может использовать функциональные возможности Tivoli Space Manager. Клиентская программа Tivoli Space Manager Hierarchical Storage Manager (HSM) автоматически переносит подходящие файлы на место хранения, поддерживая заданный уровень свободного места в локальных файловых системах. При обращении к перенесенным файлам они вызываются автоматически; пользователь также может переносить на хранение и вызывать заданные файлы. Эта новая возможность поможет пользователям с файловыми системами, где хранятся большие файлы, которые надо периодически перемещать на носитель длительного хранения, и пространством этих файловых систем надо управлять на регулярной основе. Для многих пользователей Tivoli Space Manager дает возможность управлять такими носителями длительного хранения. Поддержка Tivoli Space Manager в менеджере связей данных DB2 повышает гибкость управления пространством для файлов DATALINK. Вместо предварительного размещения достаточной памяти в файловой системе менеджера связей данных для всех возможных файлов, Tivoli Space Manager позволяет размещать управляемую менеджером связей данных файловую систему, периодически корректируемую без риска ее переполнения при обычном использовании. Добавление поддержки связей данных и HSM к файловой системе При регистрации файловой системы с Hierarchical Storage Management (HSM) надо сначала добавить поддержку HSM, а затем - менеджера файлов связей данных. Добавьте поддержку HSM при помощи команды "dsmmigfs add /fs". Добавьте поддержку DLM при помощи команды "dlfmfsmd /fs". Поддержка связей данных для файловой системы отражается в следующих строках файла/etc/filesystems для файловой системы HSM: vfs = dlfs mount = false options = rw,Basefs=fsm nodename = - Добавление поддержки связей данных для существующей файловой системы HSM Добавьте поддержку DLM при помощи команды "dlfmfsmd /fs". Добавление поддержки HSM для существующей файловой системы с поддержкой связей данных Добавьте поддержку HSM при помощи команды "dsmmigfs add /fs". Добавьте поддержку DLM при помощи команды "dlfmfsmd /fs". Удаление поддержки связей данных из файловой системы с поддержкой связей данных и HSM Удалите поддержку связей данных при помощи команды "dlfmfsmd -j /fs". Удаление поддержки HSM из файловой системы с поддержкой связей данных и HSM Удалите поддержку HSM при помощи команды "dsmmigfs remove /fs". Удалите поддержку связей данных при помощи команды "dlfmfsmd -j /fs". Добавьте поддержку DLM при помощи команды "dlfmfsmd /fs". Удаление поддержки связей данных и HSM из файловой системы с поддержкой связей данных и HSM Удалите поддержку HSM при помощи команды "dsmmigfs remove /fs". Удалите поддержку связей данных при помощи команды "dlfmfsmd -j /fs". 4.24.1 Ограничения В настоящее время эта функция поддерживается только в AIX. Избирательное перемещение (dsmmigrate) и вызов связанных файлов FC (базы данных разрешений на чтение) может выполняться только пользователем root. Избирательное перемещение может выполнять только владелец файла, то есть в случае файлов базы данных разрешений на чтение - администратор менеджера связей данных (dlfm). Для обращения к этим файлам необходим маркер со стороны базы данных хоста. Единственный пользователь, которому такой маркер не требуется - это пользователь "root". Для пользователя "root" проще выполнять избирательное перемещение и вызов файлов базы данных разрешений на чтение. Пользователь dlfm может выполнить перемещение файла FC при помощи действующего маркера только один раз. При повторной попытке перемещения (после вызова) операция завершится неудачно с сообщением об ошибке "ANS1028S Internal program error. Please see your service representative." (Внутренняя ошибка программы. Обратитесь к представителю по обслуживанию.) Запуск dsmmigrate для файла FC другим пользователем (не root) завершится неудачно. Это ограничение малосущественно, поскольку обычно к этим файлам на сервере обращаются именно администраторы. Системные вызовы stat и statfs показывают тип Vfs как fsm, а не dlfs, хотя dlfs устанавливается поверх fsm. Это нормальное поведение демонов dsmrecalld, которые выполняют вызовы statfs для файловой системы, проверяя, является ли тип Vfs fsm или нет. Команда "dsmls" не выводит ничего, если файл с минимальным номером inode связан с FC (базой данных разрешений на чтение) Команда dsmls подобна команде ls и выводит список файлов, управляемых TSM. Никаких действий пользователя не требуется 4.25 Глава 4. Installing and Configuring DB2 Data Links Manager for AIX (Установка и конфигурирование менеджера связей данных DB2 для AIX) 4.25.1 Общие замечания по установке 4.25.1.1 Перенастройка менеджера файлов DB2 Версии 5.2 в Менеджер связей данных DB2 Версии 7 Информация в шаге 3 неверна. Шаг 3 должен выглядеть так: "3. Как администратор DLFM, выполните команду /usr/lpp/db2_07_01/adm/db2dlmmg. Дополнение по установке и настройке 5.1 Глава 5. Установка клиентов DB2 в операционных системах UNIX 5.1.1 Параметры конфигурации ядра HP-UX В рекомендации по заданию параметров конфигурации ядра HP-UX ошибочно утверждается, что для параметров msgmbn и msgmax следует задавать значение 65535 или больше. Оба значения должны быть равны 65535. 5.2 Глава 12. Запуск собственных прикладных программ 5.2.1 Связывание утилит базы данных при использовании клиента времени выполнения Клиент времени выполнения нельзя использовать для связывания утилит базы данных (import, export, reorg и процессор командной строки) или файлов связывания CLI DB2 с базами данных, чтобы они могли использоваться с этими базами данных. Вместо него нужно использовать клиент администратора DB2 или клиент разработки прикладных программ DB2. Прежде чем утилиты базы данных и файлы связывания CLI DB2 можно будет использовать с базой данных, они должны быть связаны с этой базой данных. Если в сетевой среде используется несколько клиентов, работающих в разных операционных системах или имеющих разные уровни версий или служб DB2, необходимо связать утилиты один раз для каждой комбинации операционной системы и версии DB2. 5.2.2 Доступ к DB2 с использованием ODBC из клиентов UNIX В главе 12 ("Выполнение ваших прикладных программ") сказано, что если с прикладной программой клиента ODBC или SDK ODBC установлен менеджер драйверов ODBC, необходимо изменить содержимое файла odbcinst.ini. Это не совсем так. Не нужно изменять odbcinst.ini, если установлен продукт Merant ODBC Driver Manager. 5.3 Глава 24. Настройка системы объединения на работу с несколькими источниками данных 5.3.1 Системы объединения Система объединения DB2 - это особый тип распределенной системы управления базами данных (СУБД). Система объединения позволяет запрашивать и получать данные, расположенные на других СУБД, таких как Oracle, Sybase и Microsoft SQL Server. При использовании операторов SQL в одном операторе модно ссылаться на несколько СУБД или отдельных баз данных. Например, можно объединить данные, находящиеся в таблице DB2 Universal Database, таблице Oracle и в производной таблице Sybase. К поддерживаемым СУБД относятся Oracle, Sybase, Microsoft SQL Server (для Windows NT) и продукты семейства DB2 Universal Database (например, DB2 for OS/390, DB2 for AS/4000 и DB2 for Windows). Система объединения DB2 состоит из сервера, экземпляра DB2 (базы данных, которая будет служить базой данных объединения) и одного или нескольких источников данных. База данных объединения содержит записи каталога, идентифицирующие источники данных и их характеристики. Источник данных включает в себя СУБД и данные. В DB2 Universal Database есть протоколы, называемые оболочками, которые можно использовать для обращения к источникам данных. Оболочка - это механизм, посредством которого серверы объединения связываются с источниками данных и получают от них данные. Для ссылок на таблицы и производные таблицы, расположенные на этих источниках данных, используются псевдонимы. Программы обращаются к базе данных объединения, как и к любой другой базе данных DB2. Оболочка, которую вы используете, зависит от платформы, на которой запускается DB2 Universal Database. Когда система объединения сконфигурирована, к информации источников данных можно обращаться так, как если бы она находилась в одной большой базе данных. Пользователи и программы посылают запросы в одну базу данных объединения, которая получает данные от источников данных. Система объединения DB2 работает с некоторыми ограничениями. В DB2 Версии 7 распределенные запросы ограничены только операциями чтения. Кроме того, нельзя применять к псевдонимам утилиты (LOAD, REORG, REORGCHK, IMPORT, RUNSTATS и т.п.) Однако, работая через промежуточный сервер, операторы DDL и DML можно передать непосредственно системам управления базами данных, используя диалект SQL этого источника данных. 5.3.1.1 Ограничение Новые оболочки в Версии 7.2 (например, Oracle в Linux и Solaris, Sybase в AIX и Solaris, Microsoft SQL Server в NT и AIX) недоступны в пакете FixPak 3; вы должны приобрести DB2 Relational Connect Версии 7.2. 5.3.2 Установка DB2 Relational Connect В этом разделе приводятся инструкции по установке DB2 Relational Connect на сервере, который вы будете использовать в качестве сервера системы объединения. 5.3.2.1 Установка DB2 Relational Connect на серверах Windows NT Перед установкой DB2 Relational Connect на сервере объединения Windows NT: Убедитесь, что на этом сервере объединения установлена либо DB2 Universal Database Enterprise Edition, либо DB2 Universal Database Enterprise - Extended Edition. Если в своих распределенных запросах вы собираетесь использовать базы данных семейства DB2, при установке DB2 Universal Database должна быть выбрана опция источников данных Распределенное объединение для DB2. Можно убедиться, что эта опция была задана, проверив, что для параметра FEDERATED задано значение YES. Посмотреть значение этого параметра можно, введя команду GET DATABASE MANAGER CONFIGURATION, которая выводит все параметры и их текущие значения. Убедитесь, что на сервере объединения установлено клиентское программное обеспечение для источника данных (например, Sybase Open Client). Зарегистрируйтесь в системе с учетной записью пользователя, которую вы создали для установки. Завершите все запущенные программы, чтобы программа настройки могла изменить файлы, как это требуется. Вызовите программу установки. Ее можно вызвать автоматически или вручную. Если программа установки не запускается автоматически, или если вы хотите запустить ее на другом языке, вызовите ее вручную. Для автоматического запуска программы установки вставьте в дисковод CD-ROM компакт-диск DB2 Relational Connect. Функция автозапуска автоматически запустит программу установки. Будет определен язык системы, и загрузится программа установки для этого языка. Чтобы вызвать программу установки вручную: Нажмите кнопку Пуск и выберите Выполнить. В окне Открыть введите следующую команду: x:\setup /i язык где: x: - Буква дисковода компакт-дисков. язык - Код вашего языка (например, RU для русского). Нажмите кнопку OK. Откроется панель запуска установки. Чтобы начать установку, нажмите кнопку Установить. Следуйте подсказкам программы установки. По завершении программы установки DB2 Relational Connect будет установлена в вашем каталоге установки с другими продуктами DB2. 5.3.2.2 Установка DB2 Relational Connect на серверах AIX, Linux и операционной среды Solaris Перед установкой DB2 Relational Connect на серверах объединения AIX, Linux и операционной среды Solaris: Убедитесь, что на этом сервере объединения установлена либо DB2 Universal Database Enterprise Edition, либо DB2 Universal Database - Extended Edition. Если в своих распределенных запросах вы собираетесь использовать базы данных семейства DB2, при установке DB2 Universal Database должна быть выбрана опция источников данных Распределенное объединение для DB2. Можно убедиться, что эта опция была задана, проверив, что для параметра FEDERATED задано значение YES. Посмотреть значение этого параметра можно, введя команду GET DATABASE MANAGER CONFIGURATION, которая выводит все параметры и их текущие значения. Убедитесь, что на сервере объединения установлено программное обеспечение клиента для источника данных (например, Sybase Open Client). Чтобы установить DB2 Relational Connect на серверах AIX, Linux и операционной среды Solaris, воспользуйтесь утилитой db2setup: Войдите в систему как пользователь root. Вставьте и смонтируйте компакт-диск продукта DB2. Информацию о монтировании компакт-диска смотрите в книге Quick Beginnings for AIX. Перейдите в каталог, где смонтирован компакт-диск, введя команду cd /cdrom, где cdrom - точка монтирования компакт-диска вашего продукта. Введите команду ./db2setup. Через несколько секунд откроется окно утилиты установки DB2. Выберите Установить. Откроется окно Установка DB2 Версии 7. Переместите выделение на DB2 Relational Connect для вашего клиента, например, Relational Connect for Sybase, и выберите его, нажав клавишу пробела. Рядом с выбранным значением появляется звездочка. Нажмите кнопку OK. Откроется окно Создать службы DB2. Можно выбрать создание экземпляра DB2. Нажмите кнопку OK. Откроется окно сводного отчета по установке. Два компонента устанавливаются автоматически: распределенное объединение для Oracle и сигнатура продукта для DB2 Relational Connect. Сигнатура продукта требуется для соединений с источниками данных Sybase. Нажмите кнопку Далее. Откроется окно с предупреждением, что это последняя возможность остановить установку Relational Connect. Нажмите кнопку OK, чтобы продолжить установку. Установка может занять несколько минут. Когда появится сообщение об успешном завершении установки, нажмите кнопку OK. Появится окно сводного отчета с сообщениями об успешной или неудачной установке по каждой выбранной опции; снова нажмите кнопку OK. Когда установка завершится, DB2 Relational Connect будет установлена в каталоге с другими продуктами DB2. В AIX это каталог /usr/lpp/db2_07_01, в Solaris - /opt/IBMdb2/V7.1, а Linux - /usr/IBMdb2/V7.1. 5.4 Глава 26. Доступ к источникам данных Oracle Помимо поддержки оболочек в AIX и Windows NT, DB2 Universal Database теперь поддерживает оболочку Oracle в Linux и в операционной среде Solaris. Эта поддержка ограничена Oracle Версии 8. Чтобы получить доступ к оболочкам для этих платформ, необходимо вставить компакт-диск DB2 Relational Connect Версии 7.2 и выбрать DB2 Relational Connect для источников данных Oracle. После установки DB2 Relational Connect источник данных Oracle можно добавить в сервер объединения: Установите и сконфигурируйте клиентское программное обеспечение Oracle на сервере объединения DB2. Задайте переменные среды источника данных, внеся изменения в файл db2dj.ini и введя команду db2set. Если вы используете сервер объединения DB2 на платформе UNIX, запустите сценарий djxlink, чтобы скомпоновать библиотеки Oracle для SQL*Net или Net8 под ваш сервер объединения DB2. Убедитесь, что в файл SQL*Net или Net8 tnsnames.ora внесены изменения. Перезапустите экземпляр DB2. Создайте оболочку. Необязательно: Задайте переменную среды DB2_DJ_COMM. Создайте сервер. Создайте отображение пользователей. Создайте псевдонимы для таблиц и производных таблиц. Подробные указания по этим действиям, включая задание переменных среды, даются в Главе 26. Настройка системы объединения на работу с источниками данных Oracle книги Дополнение по установке и настройке DB2. 5.4.1 Ошибки документации Раздел "Добавление источников данных Oracle в систему объединения" содержит следующие ошибки: В процедуре пропущен один из шагов. Правильные шаги: Установите и сконфигурируйте программное обеспечение клиента Oracle на сервере объединения DB2, руководствуясь документацией Oracle. Задайте переменные среды источника данных: внесите изменения в файл db2dj.ini и введите команду db2set. Команда db2set приводит реестр профиля DB2 в соответствие с вашими настройками. Подробные инструкции по заданию переменных среды приводятся в Главе 26. Настройка системы объединения на работу с источниками данных Oracle книги Дополнение по установке и настройке DB2. Если вы используете сервер объединения DB2 на платформе UNIX, запустите сценарий djxlink, чтобы скомпоновать библиотеки Oracle для SQL*Net или Net8 под ваш сервер объединения DB2. В зависимости от платформы сценарий djxlink находится в каталоге: /usr/lpp/db2_07_01/bin - в AIX /opt/IBMdb2/V7.1/bin - в Solaris /usr/IBMdb2/V7.1/bin - в Linux Запускайте сценарий djxlink только по окончании установки клиентского программного обеспечения Oracle на сервере объединения DB2. В документации рекомендуется задать: DB2_DJ_INI = sqllib/cfg/db2dj.ini Это неверно, правильное значение: DB2_DJ_INI = $INSTHOME/sqllib/cfg/db2dj.ini 5.5 Доступ к источникам данных Sybase (новая глава) Перед тем, как добавить в сервер объединения источники данных Sybase, на сервере объединения DB2 необходимо установить и сконфигурировать клиентское программное обеспечение Sybase Open Client. Особенности установки программного обеспечения Open Client подробно описаны в установочных процедурах в документации, поставляемой с программным обеспечением баз данных Sybase. Не забудьте включить в установку хранимые процедуры каталога и библиотеки Sybase Open Client. Чтобы настроить свой сервер объединения на доступ к данным, хранимым в источниках данных Sybase, нужно: Установить DB2 Relational Connect Версии 7.2. Смотрите раздел 5.3.2, Установка DB2 Relational Connect. Добавить источники данных Sybase на сервер объединения. Задать кодовые страницы Sybase. В этой главе обсуждаются шаги 2 и 3. Указания этой главы относятся к операционным средам Windows NT, AIX и Solaris. Особенности конкретных платформ оговариваются специально. 5.5.1 Добавление источников данных Sybase на сервер объединения Чтобы добавить источник данных Sybase на сервер объединения, нужно: Задать переменные среды и изменить реестр профиля. Скомпоновать DB2 с программным обеспечением клиента Sybase (только для AIX и Solaris) Перезапустить экземпляр DB2. Создать и настроить файл интерфейсов. Создать оболочку. Необязательно: Задать переменную среды DB2_DJ_COMM. Создать сервер. Необязательно: Задать опцию сервера CONNECTSTRING Создать отображение пользователей. Создать псевдонимы для таблиц и производных таблиц. Эти шаги подробно объясняются в данном разделе. 5.5.1.1 Шаг 1: Задание переменных среды и изменение реестра профиля Задайте переменные среды источника данных: внесите изменения в файл db2dj.ini и введите команду db2set. В файле db2dj.ini содержится информация о конфигурации программного обеспечения клиента Sybase, установленного на вашем сервере объединения. Команда db2set приводит реестр профиля DB2 в соответствие с вашими настройками. В системе многораздельной базы данных можно использовать один файл db2dj.ini для всех узлов определенного экземпляра сервера или же отдельные файлы db2dj.ini для одного или нескольких узлов экземпляра сервера. В системе однораздельных баз данных может быть только один файл db2dj.ini на один экземпляр сервера. Чтобы задать переменные среды: Отредактируйте файл db2dj.ini в каталоге sqllib/cfg, задав следующую переменную среды: SYBASE="<домашний каталог Sybase>" где <домашний каталог Sybase> - каталог установки клиента Sybase. Измените файл .profile экземпляра DB2, задав переменную среды Sybase. Для этого введите следующие команды: export PATH="$SYBASE/bin:$PATH" export SYBASE="<домашний каталог Sybase>" где <домашний каталог Sybase> - каталог установки клиента Sybase. Запустите на выполнение .profile экземпляра DB2, введя: . .profile Введите команду db2set, чтобы внести сделанные изменения в реестр профиля DB2. Синтаксис этой команды db2set зависит от структуры вашей системы баз данных. Этот шаг необходим, только если вы используете файл db2dj.ini в одной из следующих структур систем баз данных: Если вы используете файл db2dj.ini в системе однораздельных баз данных или хотите применить файл db2dj.ini только к текущему узлу, введите: db2set DB2_DJ_INI = sqllib/cfg/db2dj.ini Если вы используете файл db2dj.ini в системе многораздельной базы данных и хотите применить значения в файле db2dj.ini ко всем узлам в пределах данного экземпляра, введите: db2set -g DB2_DJ_INI = sqllib/cfg/db2dj.ini Если вы используете файл db2dj.ini в системе многораздельной базы данных и хотите применить значения в файле db2dj.ini к конкретному узлу, введите: db2set -i ЭКЗЕМПЛЯРx 3 DB2_DJ_INI = sqllib/cfg/node3.ini где: ЭКЗЕМПЛЯРx - Имя нужного экземпляра. 3 - Номер узла, указанный в db2nodes.cfg. node3.ini - Измененный и переименованный вариант файла db2dj.ini. 5.5.1.2 Шаг 2: Компоновка DB2 с программным обеспечением клиента Sybase (только для AIX и Solaris) Для возможности доступа к источникам данных Sybase сервер объединения DB2 нужно скомпоновать с библиотеками клиента. В процессе компоновки создается оболочка для каждого источника данных, с которым будет связываться сервер объединения. Запуская сценарий djxlink, вы создаете библиотеку оболочки. Чтобы запустить сценарий djxlink, введите: djxlink 5.5.1.3 Шаг 3: Перезапуск экземпляра DB2 Чтобы гарантировать задание переменных среды в программе, перезапустите экземпляр DB2. При перезапуске экземпляра DB2 вы обновляете его, и внесенные изменения вступают в силу. Чтобы перезапустить экземпляр DB2, введите следующую команду: На серверах DB2 для Windows NT: NET STOP имя_экземпляра NET START имя_экземпляра На серверах DB2 для AIX и Solaris: db2stop db2start 5.5.1.4 Шаг 4: Создание и настройка файла интерфейсов Чтобы создать и настроить файл интерфейсов, нужно создать этот файл и сделать его доступным. Чтобы создать файл интерфейсов, включающий в себя данные для всех серверов Sybase Open Server, к которым вы хотите получить доступ, воспользуйтесь утилитой, поставляемой с Sybase. Дополнительную информацию об использовании этой утилиты смотрите в документации по установке Sybase. В Windows NT этот файл обычно называется sql.ini. Переименуйте этот файл из sql.ini в interfaces, чтобы он назывался одинаково во всех платформах. Если вы не переименуете sql.ini в interfaces, надо будет воспользоваться параметром IFILE или опцией CONNECTSTRING, которые объясняются в шаге 8. В системах AIX и Solaris этот файл называется <домашний_каталог_экземпляра>/sqllib/interfaces. Сделайте файл интерфейсов доступным для DB2. На серверах DB2 для Windows NT: Поместите этот файл в каталог %DB2PATH% экземпляра DB2. На серверах DB2 для AIX и Solaris: Поместите этот файл в каталог %HOME/sqllib% экземпляра DB2. Воспользуйтесь командой ln для компоновки с файлом из каталога $HOME/sqllib экземпляра DB2. Например: ln -s -f /home/sybase/interfaces /home/db2djinst1/sqllib 5.5.1.5 Шаг 5: Создание оболочки С помощью оператора CREATE WRAPPER задайте оболочку, которая будет использоваться для работы с источниками данных Sybase. Оболочка - это механизм, посредством которого серверы объединения подключаются к источникам данных и получают от них данные. В DB2 включены две оболочки для Sybase - CTLIB и DBLIB. Ниже приводится пример оператора CREATE WRAPPER: CREATE WRAPPER CTLIB где CTLIB - имя оболочки по умолчанию, используемое с программным обеспечением Sybase Open Client. Оболочку CTLIB можно использовать на серверах Windows NT, AIX и Solaris. Имя оболочки по умолчанию можно заменить на выбранное вами имя. Однако в этом случае придется включить параметр LIBRARY и указать имя библиотеки оболочки для сервера объединения в операторе CREATE WRAPPER. Дополнительно об именах библиотек оболочек смотрите в информации об операторе CREATE WRAPPER в справочнике DB2 SQL Reference. 5.5.1.6 Шаг 6 (необязательный): Задание переменной среды DB2_DJ_COMM Чтобы улучшить производительность при обращении к источнику данных Sybase, задайте переменную среды DB2_DJ_COMM. Эта переменная определяет, загружается ли оболочка при инициализации сервера объединения. Задайте переменную среды DB2_DJ_COMM, чтобы включить библиотеку оболочки, соответствующую оболочке, заданной вами на предыдущем этапе; например: На серверах DB2 для Windows NT: db2set DB2_DJ_COMM='ctlib.dll' На серверах DB2 для AIX: db2set DB2_DJ_COMM='libctlib.a' На серверах DB2 для Solaris: db2set DB2_DJ_COMM='libctlib.so' Слева и справа от знака равенства (=) не должно быть пробелов. Дополнительную информацию об именах библиотек оболочек смотрите в справочнике DB2 SQL Reference. Информацию о переменной среды DB2_DJ_COMM смотрите в руководстве Руководство администратора. 5.5.1.7 Шаг 7: Создание сервера Задайте каждый сервер Sybase, к источникам данных которого вы намереваетесь обращаться, с помощью оператора CREATE SERVER; например: CREATE SERVER сервер_Sybase TYPE SYBASE VERSION 12.0 WRAPPER имя_оболочки OPTIONS (NODE 'узел_Sybase', DBNAME'база_данных_Sybase') где: сервер_Sybase - Имя, присваиваемое серверу Sybase. Это имя должно быть уникальным. SYBASE - Тип источника данных, доступ к которому вы конфигурируете. Sybase - единственный поддерживаемый источник данных. 12.0 - Версия Sybase, к которой производится подключение. Поддерживаются версии 10.0, 11.0, 11.1, 11.5, 11.9 и 12.0. имя_оболочки Имя оболочки, которое вы задали в операторе CREATE WRAPPER. 'узел_Sybase' - Имя узла, на котором расположен сервер_Sybase. Возьмите это значение из файла интерфейсов. Оно регистрозависимо. Хотя имя узла указывается как необязательный параметр, при работе с источниками данных Sybase его задание необходимо. Информацию о дополнительных опциях смотрите в справочнике DB2 SQL Reference. 'база_данных_Sybase' - Имя базы данных Sybase, к которой хотите получить доступ. 5.5.1.8 Шаг 8 (необязательный): Задание опции сервера CONNECTSTRING Задайте предельные значения для срока ожидания, путь и имя для файла интерфейсов, а также размер пакета файла интерфейсов. Предельные значения для срока ожидания используются в Sybase Open Client для прерывания запросов и ответов, которые выполняются слишком долго. Эти предельные значения можно задать в DB2 с помощью опции CONNECTSTRING оператора CREATE SERVER OPTION DDL. С помощью опции CONNECTSTRING задается: Срок ожидания для запросов SQL. Срок ожидания для ответа по регистрации. Путь и имя для файла интерфейсов. Размер пакета. .-;-------------------------------------------. V | >>----+---------------------------------------+--+------------->< +-TIMEOUT-- = --время_в_секундах--------+ +-LOGIN_TIMEOUT-- = --время_в_секундах--+ +-IFILE-- = --"строка"------------------+ +-PACKET_SIZE-- = --размер_в_байтах-----+ '-;-------------------------------------' TIMEOUT Задает число секунд, которое DB2 Universal Database будет ждать ответ от Sybase Open Client на любой оператор SQL. Значение время_в_секундах - положительное целое число в диапазоне целых числе DB2 Universal Database. Задаваемое вами значение для срока ожидания зависит от используемой оболочки. Все серверы Windows NT, AIX и Solaris могут использовать оболочку DBLIB. Значение по умолчанию для оболочки DBLIB - 0. На серверах Windows NT, AIX и Solaris это значение по умолчанию для DBLIB заставляет DB2 Universal Database ожидать ответ неопределенно долгое время. LOGIN_TIMEOUT Задает время в секундах, которое DB2 Universal Database будет ждать ответ от Sybase Open Client на запрос по регистрации. Значения по умолчанию такие же, как и для TIMEOUT. IFILE Задает путь и имя для файла интерфейсов Sybase Open Client. Путь, который указывается в строке, должен быть заключен в двойные кавычки ("). На серверах Windows NT значение по умолчанию - %DB2PATH%. На серверах AIX и Solaris значение по умолчанию - sqllib/interfaces в домашнем каталоге экземпляра DB2 Universal Database. PACKET_SIZE Задает размер пакета файла интерфейсов в байтах. Если источник данных не поддерживает заданный размер пакета, соединение завершится неудачно. Если каждая запись очень большая (например, при вставке строк в большие таблицы), увеличение размера пакета значительно улучшает производительность. Размер в байтах - числовое значение. Дополнительную информацию смотрите в справочных руководствах Sybase. Примеры: На серверах Windows NT задайте значение срока ожидания 60 секунд и имя файла интерфейсов C:\etc\interfaces, введя следующее: CREATE SERVER OPTION connectstring FOR SERVER sybase1 SETTING 'TIMEOUT=60;LOGIN_TIMEOUT=5;IFILE="C:\etc\interfaces";' На серверах AIX и Solaris задайте значение срока ожидания 60 секунд и имя файла интерфейсов /etc/interfaces, введя: CREATE SERVER OPTION connectstring FOR SERVER sybase1 SETTING 'TIMEOUT=60;PACKET_SIZE=4096;IFILE="/etc/interfaces";' 5.5.1.9 Шаг 9: Создание отображения пользователей Если ID или пароль пользователя на сервере объединения отличен от ID или пароля пользователя в источнике данных Sybase, создайте отображение локального ID пользователя на ID и пароль, заданные в источнике данных Sybase, с помощью оператора CREATE USER MAPPING, например: CREATE USER MAPPING FOR пользователь_DB2 SERVER сервер_Sybase OPTIONS ( REMOTE_AUTHID 'пользователь_Sybase', REMOTE_PASSWORD 'пар0ль') где: пользователь_DB2 - Локальный ID пользователя, для которого создается отображение на ID пользователя, заданный в источнике данных Sybase. сервер_Sybase - Имя источника данных Sybase, заданное в операторе CREATE SERVER. 'пользователь_Sybase' - ID пользователя в источнике данных Sybase, с которым устанавливается соответствие идентификатора пользователь_DB2. Значение этого параметра регистрозависимо. 'пар0ль' - Пароль пользователя "пользователь_Sybase". Значение этого параметра регистрозависимо. Подробную информацию о дополнительных опциях смотрите в справочнике DB2 SQL Reference. 5.5.1.10 Шаг 10: Создание псевдонимов для таблиц и производных таблиц Назначьте псевдонимы для всех производных таблиц и таблиц, находящихся в источнике данных Sybase. Эти псевдонимы будут использоваться при запросах источника данных Sybase. Псевдонимы Sybase регистрозависимы. Заключите имена схем и таблиц в двойные кавычки ("). Ниже приводится пример использования оператора CREATE NICKNAME: CREATE NICKNAME SYBSALES FOR SYBSERVER."salesdata"."europe" где: SYBSALES - Уникальный псевдоним таблицы или производной таблицы Sybase. SYBSERVER."salesdata"."europe" - Трехчастный идентификатор в формате: имя_источника_данных."имя_удаленной_схемы"."имя_удаленной_таблицы" Повторите данный шаг для каждой таблицы и производной таблицы, для которой хотите создать псевдоним. После создания псевдонима DB2 будет использовать соединение для запроса каталога источника данных. При таком запросе происходит проверка вашего соединения с источником данных. Если соединение не работает, вы получаете сообщение об ошибке. Более подробную информацию об операторе CREATE NICKNAME смотрите в справочникеDB2 SQL Reference. Более подробная информация о псевдонимах в целом приводится в публикации Руководство администратора 5.5.2 Задание кодовых страниц Sybase Этот шаг необходим, только если сервер объединения DB2 и сервер Sybase запускаются с разными кодовыми страницами. Для источников данных, где используется тот же кодовый набор, что и в DB2, преобразование не требуется. Ниже в таблице приводятся эквивалентные опции Sybase для общих кодовых страниц поддержки национальных языков (NLS). Необходимо, чтобы источник данных Sybase был сконфигурирован в соответствии с этими эквивалентами, либо чтобы программа клиента могла распознавать несовпадения и помечать их как ошибки или выполнять отображение данных с помощью собственной семантики. Если не удается найти ни одной таблицы преобразования из исходной кодовой страницы в кодовую страницу назначения, DB2 выдает сообщение об ошибке. Дополнительную информацию смотрите в документации по Sybase. Табл. 1. Опции кодовых страниц Sybase Кодовая страница Эквивалентная опция Sybase 850 cp850 897 sjis 819 iso_1 912 iso_2 1089 iso_6 813 iso_7 916 iso_8 920 iso_9 5.6 Обращение к источникам данных Microsoft SQL Server с использованием ODBC (новая глава) Перед тем, как добавить в сервер объединения DB2 источники данных Microsoft SQL Server, на сервере объединения необходимо установить и сконфигурировать драйвер ODBC. Особенности установки драйвера подробно описаны в установочных процедурах в документации, поставляемой с драйвером ODBC. Чтобы настроить сервер объединения на доступ к данным из источников данных Microsoft SQL Server, нужно: Установить и сконфигурировать драйвер ODBC на сервере объединения. Особенности установки драйвера подробно описаны в установочных процедурах в документации, поставляемой с драйвером ODBC. На серверах DB2 for Windows NT: Сконфигурируйте системное имя источника данных (DSN) с помощью менеджера устройств ODBC. На серверах DB2 for AIX: Установите потоковую версию библиотек, поставляемых MERANT, первой записью в LIBPATH задайте каталог библиотеки MERANT и настройте файл .odbc.ini. Создайте файл .odbc.ini в домашнем каталоге. Установите DB2 Relational Connect Версии 7.2. Смотрите раздел 5.3.2, Установка DB2 Relational Connect. Добавьте источники данных Microsoft SQL Server на сервер объединения. Задайте кодовые страницы Microsoft SQL Server. В этой главе обсуждаются шаги 3 и 4. Указания этой главы относятся к платформам Windows NT и AIX. Особенности конкретных платформ оговариваются специально. 5.6.1 Добавление на сервер объединения источников данных Microsoft SQL Server После установки драйвера ODBC и DB2 Relational Connect добавьте на сервер объединения источники данных Microsoft SQL Server, выполнив следующие шаги: Задайте переменные среды (только для AIX). Запустите сценарий оболочки (только для AIX). Необязательно: Задайте переменную среды DB2_DJ_COMM. Перезапустите экземпляр DB2 (только для AIX). Создайте оболочку. Создайте сервер. Создайте отображение пользователей. Создайте псевдонимы для таблиц и производных таблиц. Необязательно: Получите трассировки ODBC. Эти шаги подробно объясняются в разделах ниже. 5.6.1.1 Шаг 1: Задание переменных среды (только для AIX) Задайте переменные среды источника данных: внесите изменения в файл db2dj.ini и введите команду db2set. В файле db2dj.ini содержится информация о конфигурации для соединения с источниками данных Microsoft SQL Server. Команда db2set приводит реестр профиля DB2 в соответствие с вашими настройками. В системе многораздельной базы данных можно использовать один файл db2dj.ini для всех узлов определенного экземпляра сервера или же отдельные файлы db2dj.ini для одного или нескольких узлов экземпляра сервера. В системе однораздельных баз данных может быть только один файл db2dj.ini на один экземпляр сервера. Чтобы задать переменные среды: Отредактируйте файл db2dj.ini в каталоге $HOME/sqllib/cfg, задав следующие переменные среды: ODBCINI=$HOME/.odbc.ini DJX_ODBC_LIBRARY_PATH=<путь к драйверу Merant>/lib LIBPATH=<путь к драйверу Merant>/lib DB2ENVLIST=LIBPATH Введите команду db2set, чтобы внести сделанные изменения в реестр профиля DB2. Синтаксис db2set зависит от структуры вашей системы баз данных: Если файл db2dj.ini используется в системе однораздельных баз данных, или если вы используете файл db2dj.ini в системе многораздельной базы данных и хотите применить его значения только к текущему узлу, выдайте такую команду: db2set DB2_DJ_INI=<путь к файлу ini>/db2dj.ini Если файл db2dj.ini используется в системе многораздельной базы данных и вы хотите применить его значения ко всем узлам в пределах данного экземпляра, введите такую команду: db2set -g DB2_DJ_INI=<путь к файлу ini>/db2dj.ini Если файл db2dj.ini используется в системе многораздельной базы данных и вы хотите применить его значения к конкретному узлу, введите такую команду: db2set -i ЭКЗЕМПЛЯРx 3 DB2_DJ_INI=$HOME/sqllib/cfg/node3.ini где: ЭКЗЕМПЛЯРx - Имя нужного экземпляра. 3 - Номер узла, указанный в файле db2nodes.cfg. node3.ini - Измененный и переименованный вариант файла db2dj.ini. 5.6.1.2 Шаг 2: Запуск сценария оболочки (только для AIX) Сценарий оболочки djxlink.sh компонует клиентские библиотеки с библиотеками оболочки. Чтобы запустить сценарий оболочки, введите: djxlink 5.6.1.3 Шаг 3 (необязательный): Задание переменной среды DB2_DJ_COMM Если вы считаете, что обращение к источнику данных Microsoft SQL Server занимает слишком много времени, можно улучшить производительность, задав переменную среды DB2_DJ_COMM, чтобы загружать оболочку при инициализации сервера объединения, а не при обращении к этому источнику. Задайте переменную среды DB2_DJ_COMM, чтобы включить библиотеку оболочки, соответствующую оболочке, заданной вами на Шаге 5. Например: На серверах DB2 for Windows NT: db2set DB2_DJ_COMM=djxmssql3.dll На серверах DB2 for AIX: db2set DB2_DJ_COMM=libmssql3.a Слева и справа от знака равенства (=) не должно быть пробелов. Дополнительную информацию об именах библиотек оболочек смотрите в справочнике DB2 SQL Reference. 5.6.1.4 Шаг 4: Перезапуск экземпляра DB2 (только для AIX) Чтобы гарантировать задание переменных среды в программе, перезапустите экземпляр DB2. При перезапуске экземпляра DB2 вы его обновляете, и внесенные изменения вступают в силу. Перезапустите экземпляр DB2, введя команду: db2stop db2start 5.6.1.5 Шаг 5: Создание оболочки В DB2 Universal Database есть два разных протокола, называемых оболочками, которые можно использовать для обращения к источникам данных Microsoft SQL Server. Оболочка - это механизм, посредством которого серверы объединения подключаются к источникам данных и получают от них данные. Используемая оболочка зависит от платформы, на которой запускается DB2 Universal Database. Чтобы выбрать подходящую оболочку, посмотрите Табл. 2. Табл. 2. Драйверы ODBC Драйвер ODBC Платформа Имя оболочки Драйвер ODBC Версии 3.0 (или новее) Windows NT DJXMSSQL3 Драйвер MERANT DataDirect Connect ODBC Версии 3.6 AIX MSSQLODBC3 С помощью оператора CREATE WRAPPER задайте оболочку, которая будет использоваться для работы с источниками данных Microsoft SQL Server. Ниже приводится пример оператора CREATE WRAPPER: CREATE WRAPPER DJXMSSQL3 где DJXMSSQL3 - имя оболочки по умолчанию, используемое на сервере DB2 for Windows NT (с использованием драйвера ODBC Версии 3.0). Для сервера DB2 for AIX нужно задать имя оболочки MSSQLODBC3. Имя оболочки по умолчанию можно заменить на выбранное вами имя. Однако в этом случае придется включить параметр LIBRARY и указать имя библиотеки оболочки для платформы сервера объединения в операторе CREATE WRAPPER. Например: На серверах DB2 for Windows NT: CREATE WRAPPER имя_оболочки LIBRARY 'djxmssql3.dll' где имя_оболочки - имя, которое вы хотите присвоить оболочке, а 'djxmssql3.dll' - имя библиотеки. На серверах DB2 for AIX: CREATE WRAPPER имя_оболочки LIBRARY 'libmssql3.a' где имя_оболочки - имя, которое вы хотите присвоить оболочке, а 'libdjxmssql.a' - имя библиотеки. Дополнительную информацию об именах библиотек оболочек смотрите в описании оператора CREATE WRAPPER в справочнике DB2 SQL Reference. 5.6.1.6 Шаг 6: Создание сервера Задайте каждый источник данных Microsoft SQL Server, с которым вы хотите соединяться, при помощи оператора CREATE SERVER. Например: CREATE SERVER сервер_sql TYPE MSSQLSERVER VERSION 7.0 WRAPPER djxmssql3 OPTIONS (NODE 'узел_sql', DBNAME 'имя_базы_данных') где: сервер_sql - Имя, присваиваемое серверу Microsoft SQL Server. Это имя должно быть уникальным. MSSQLSERVER - Тип источника данных, доступ к которому вы конфигурируете. 7.0 - Версия Microsoft SQL Server, к которому производится подключение. DB2 Universal Database поддерживает Microsoft SQL Server Версий 6.5 и 7.0. djxmssql3 - Имя оболочки, которое вы задали в операторе CREATE WRAPPER. 'узел_sql' - имя системного источника данных (DSN), ссылающегося на Microsoft SQL Server. Значение этого параметра регистрозависимо. Хотя имя узла указывается как необязательный параметр, при работе с источниками данных Microsoft SQL Server его задание необходимо. Дополнительные опции, которые можно использовать с оператором CREATE SERVER, описаны в справочнике DB2 SQL Reference. 'имя_базы_данных' - Имя базы данных, к которой вы подсоединяетесь. Хотя имя базы данных указывается в операторе CREATE SERVER как необязательный параметр, при работе с источниками данных Microsoft SQL Server его задание необходимо. 5.6.1.7 Шаг 7: Создание отображения пользователей Если ID или пароль пользователя на сервере объединения отличен от ID или пароля пользователя в источнике данных Microsoft SQL Server, создайте отображение локального ID пользователя на ID и пароль, заданные в источнике данных Microsoft SQL Server, с помощью оператора CREATE USER MAPPING, например: CREATE USER MAPPING FOR пользователь_db2 SERVER имя_сервера OPTIONS (REMOTE_AUTHID 'пользователь_mssql', REMOTE_PASSWORD 'пар0ль') где: пользователь_db2 - Локальный ID пользователя, для которого создается отображение на ID пользователя, заданный в источнике данных Microsoft SQL Server. имя_сервера - Имя сервера, определенное в операторе CREATE SERVER. 'пользователь_mssql' - ID пользователя в источнике данных Microsoft SQL Server, с которым устанавливается соответствие идентификатора пользователь_db2. Значение этого параметра регистрозависимо. 'пар0ль' - Пароль пользователя "пользователь_mssql". Значение этого параметра регистрозависимо. Дополнительные опции, которые можно использовать с оператором CREATE USER MAPPING, описаны в справочнике DB2 SQL Reference. 5.6.1.8 Шаг 8: Создание псевдонимов для таблиц и производных таблиц Назначьте псевдонимы для всех производных таблиц и таблиц, находящихся в источнике данных Microsoft SQL Server, к которому вы намереваетесь подключаться. Эти псевдонимы будут использоваться при запросах источника данных Microsoft SQL Server. Для назначения псевдонимов используйте оператор CREATE NICKNAME. Псевдонимы регистрозависимы. Ниже приводится пример использования оператора CREATE NICKNAME: CREATE NICKNAME mssqlsales FOR server_name.salesdata.europe где: mssqlsales - Уникальный псевдоним таблицы или производной таблицы Microsoft SQL Server. server_name.salesdata.europe - Трехчастный идентификатор в формате: имя_сервера_источника_данных.имя_удаленной_схемы.имя_удаленной _таблицы Части псевдонима имя_удаленной_схемы и имя_удаленной_таблицы рекомендуется задавать в двойных кавычках. После создания псевдонима DB2 пытается получить доступ к таблицам каталога источника данных (Microsoft SQL Server обращается к ним как к системным таблицам). При этом происходит проверка соединения с источником данных. Если соединение завершается неудачно, вы получаете сообщение об ошибке. Повторите этот шаг для каждой таблицы и производной таблицы базы данных, для которых хотите создать псевдонимы. Дополнительную информацию об операторе CREATE NICKNAME смотрите в справочнике DB2 SQL Reference. Более подробную информацию о псевдонимах в целом и о проверке отображения типов данных смотрите в публикации Руководство администратора DB2. 5.6.1.9 Шаг 9 (необязательный): Получение трассировок ODBC Если вы испытываете трудности при обращении к источнику данных, можно получить информацию трассировки ODBC, чтобы проанализировать причины затруднений и устранить их. Чтобы убедиться, что трассировка ODBC работает правильно, воспользуйтесь инструментом трассировки, предоставляемым ODBC Data Source Administrator. Включенная трассировка снижает производительность системы, поэтому ее следует отключить, как только проблема будет решена. 5.6.2 Обзор кодовых страниц Microsoft SQL Server Microsoft SQL Server поддерживает многие из опций общих кодовых страниц поддержки национальных языков, которые поддерживает DB2 UDB. Для источников данных, где используется тот же кодовый набор, что и в DB2, преобразование не требуется. В таблице 3 приводятся кодовые страницы, которые поддерживает и DB2 Universal Database, и Microsoft SQL Server. Табл. 3. Опции кодовых страниц DB2 UDB и Microsoft SQL Server Кодовая страница Поддерживаемый язык 1252 Набор символов ISO 850 Многоязычная 437 Американский английский 874 Тайский 932 Японский 936 Китайский (упрощенный) 949 Корейский 950 Китайский (традиционный) 1250 Центральная Европа 1251 Кириллица 1253 Греческий 1254 Турецкий 1255 Иврит 1256 Арабский Когда сервер объединения DB2 и Microsoft SQL Server запускаются с разными кодовыми страницами поддержки национальных языков (NLS), необходимо, чтобы источник данных Microsoft SQL Server был сконфигурирован в соответствии с этими эквивалентами, либо чтобы программа клиента могла распознавать несовпадения и помечать их как ошибки или выполнять отображение данных с помощью собственной семантики. Если не удается найти ни одной таблицы преобразования из исходной кодовой страницы в кодовую страницу назначения, DB2 выдает сообщение об ошибке. Более подробная информация приводится в документации по Microsoft SQL Server. Управление Частичное содержание Руководство администратора: Планирование 6.1 Глава 8. Физическая структура базы данных 6.1.1 Ключи разделения 6.2 Разработка групп узлов 6.3 Глава 9. Разработка распределенных баз данных 6.3.1 Изменение нескольких баз данных 6.4 Глава 13. Высокая доступность в среде Windows NT 6.4.1 Необходимость перезагрузки компьютера перед запуском утилиты DB2MSCS 6.5 Глава 14. DB2 и высокая доступность Sun Cluster 2.2 6.6 Поддержка Veritas в Solaris 6.7 Приложение B. Правила именования 6.7.1 Замечания об ID пользователей и именах схем длиной более 8 символов 6.7.2 ID пользователей и пароли 6.8 Приложение D. Несовместимость выпусков 6.8.1 DLFS Windows NT несовместима с Norton Utilities 6.8.2 SET CONSTRAINTS заменено на SET INTEGRITY 6.9 Приложение E. Поддержка национальных языков 6.9.1 Национальные версии DB2 Версии 7 6.9.1.1 Наборы файлов Центра управления и документации 6.9.2 Национальные настройки для сервера администратора DB2 6.9.3 DB2 UDB на платформах Windows поддерживает кодовую страницу для стран Балтии (MS-1257) 6.9.4 Определение значений кодовых страниц 6.9.5 Поддержка кода страны и кодовой страницы 6.9.6 Наборы символов Руководство администратора: Реализация 7.1 Добавление или расширение контейнеров DMS (новый процесс) 7.2 Глава 1. Управление DB2 при помощи инструментов GUI 7.3 Глава 3. Создание базы данных 7.3.1 Создание табличного пространства 7.3.1.1 Использование непосредственного ввода/вывода в Linux 7.3.2 Создание последовательности 7.3.3 Сравнение столбцов идентификации (IDENTITY) и последовательностей 7.3.4 Создание индекса, расширения индекса или спецификации индекса 7.4 Глава 4. Изменение базы данных 7.4.1 Добавление к табличному пространству SMS контейнера на разделе 7.4.2 Изменение столбца идентификации 7.4.3 Изменение последовательности 7.4.4 Отбрасывание последовательности 7.4.5 Переключение состояния табличного пространства 7.4.6 Изменение контейнеров в табличном пространстве DMS 7.5 Глава 5. Управление доступом к базам данных 7.5.1 Привилегии последовательностей 7.5.2 Шифрование данных 7.6 Глава 8. Восстановление базы данных 7.6.1 Как использовать приостановленный ввод-вывод 7.6.2 Инкрементное резервное копирование и восстановление 7.6.2.1 Восстановление из инкрементных резервных копий 7.6.3 Параллельное восстановление 7.6.4 Резервное копирование в именованные конвейеры 7.6.5 Резервное копирование из отдельной копии 7.6.6 Архивирование журнала по требованию 7.6.7 Создание зеркальной копии журнала 7.6.8 Поддержка кроссплатформенного резервного копирования и восстановления на Sun Solaris и HP 7.6.9 Особенности менеджера связей данных DB2/Особенности утилиты резервного копирования 7.6.10 Особенности менеджера связей данных DB2/Особенности утилиты восстановления и повтора транзакций 7.6.11 Восстановление баз данных из резервных копий, сделанных в автономном режиме, без повтора транзакций 7.6.12 Восстановление баз данных и табличных пространств и повтор транзакций до конца файлов журнала 7.6.13 Взаимодействие менеджера связей данных и восстановления 7.6.14 Обнаружение ситуации, требующей согласования 7.7 Приложение C. Обработчик пользователя для восстановления базы данных 7.8 Приложение D. Выполнение команд на нескольких серверах разделов баз данных 7.9 Приложение I. Высокоскоростная межузловая связь 7.9.1 Подготовка DB2 к работе с использованием VI Руководство администратора: Производительность 8.1 Глава 3. Особенности прикладных программ 8.1.1 Задание уровня изоляции 8.1.2 Настройка класса оптимизации 8.1.3 Динамические составные операторы 8.2 Глава 4. Особенности среды 8.2.1 Использование индексных ключей большего размера 8.3 Глава 5. Статистики системного каталога 8.3.1 Сбор и использование статистики распределения 8.3.2 Правила обновления статистики каталога 8.3.3 Статистика подэлементов 8.4 Глава 6. Компилятор SQL 8.4.1 Реплицируемые сводные таблицы 8.4.2 Концепции доступа к данным и оптимизация 8.5 Глава 8. Производительность работы 8.5.1 Управление пулом буферов базы данных 8.5.2 Управление несколькими пулами буферов базы данных 8.6 Глава 9. Использование утилиты ограничения ресурсов 8.7 Глава 13. Конфигурирование DB2 8.7.1 Размер кучи сортировки (sortheap) 8.7.2 Порог кучи сортировки (sheapthres) 8.7.3 Максимальный процент списка блокировок перед расширением (maxlocks) 8.7.4 Конфигурирование для DB2/Менеджера связей данных DB2 интервала истечения срока маркера доступа к связям данных dl_expint 8.7.5 Параметр конфигурации базы данных MIN_DEC_DIV_3 8.7.6 Размер кучи управления программами (app_ctl_heap_sz) 8.7.7 Размер кучи системного монитора базы данных (mon_heap_sz) 8.7.8 Максимальное число активных прикладных программ (maxappls) 8.7.9 Диапазон восстановления и интервал мягких контрольных точек (softmax) 8.7.10 Разрешить отслеживание измененных страниц (trackmod) 8.7.11 Изменить путь журнала базы данных (newlogpath) 8.7.12 Положение файлов журналов (logpath) 8.7.13 Максимальная память для списка блокировок (locklist) 8.8 Приложение A. Переменные реестра DB2 и переменные среды 8.8.1 Таблица новых и измененных переменных реестра 8.9 Приложение C. Средства объяснения SQL Administering Satellites Guide and Reference 9.1 Настройка Версии 7.2 DB2 Personal Edition и DB2 Workgroup Edition в качестве сателлитов 9.1.1 Предварительные требования 9.1.1.1 Особенности установки 9.1.2 Конфигурирование системы Версии 7.2 для синхронизации 9.1.3 Установка FixPak 2 или новее в систему Версии 6 Enterprise Edition 9.1.3.1 Обновление Версии 6 DB2 Enterprise Edition для использования в качестве сервера управления DB2 9.1.4 Обновление Центра управления и Центра управления сателлитами Версии 6 Command Reference 10.1 db2batch - Замер производительности 10.2 db2cap (новая команда) db2cap - Утилита связывания статического пакета CLI/ODBC 10.3 db2ckrst (новая команда) db2ckrst - Проверка последовательности резервных копий для инкрементного восстановления 10.4 db2gncol (новая команда) db2gncol - Изменить значения генерируемых столбцов 10.5 db2inidb - инициализировать зеркальную копию базы данных 10.6 db2look - Утилита извлечения статистики DB2 10.7 db2updv7 - обновление базы данных до уровня текущего пакета FixPak Версии 7 10.8 Новая опция процессора командной строки (-x, подавление вывода заголовков столбцов) 10.9 Для процессора командной строки DB2 необходим шрифт True Type 10.10 ADD DATALINKS MANAGER 10.11 ARCHIVE LOG (новая команда) Archive Log 10.12 BACKUP DATABASE 10.12.1 Синтаксическая диаграмма 10.12.2 Особенности менеджера связей данных DB2 10.13 BIND 10.14 CALL 10.15 DROP DATALINKS MANAGER (новая команда) DROP DATALINKS MANAGER 10.16 EXPORT 10.17 GET DATABASE CONFIGURATION 10.18 GET ROUTINE (новая команда) GET ROUTINE 10.19 GET SNAPSHOT 10.20 IMPORT 10.21 LIST HISTORY 10.22 LOAD 10.23 PING (новая команда) PING 10.24 PUT ROUTINE (новая команда) PUT ROUTINE 10.25 RECONCILE 10.26 REORGANIZE TABLE 10.27 RESTORE DATABASE 10.27.1 Синтаксис 10.27.2 Особенности менеджера связей данных DB2 10.28 ROLLFORWARD DATABASE 10.29 Ошибка документации в разделе CLP Return Codes (Коды возврата процессора командной строки) Data Movement Utilities Guide and Reference 11.1 Глава 2. Import 11.1.1 Использованием импорта с буферизованными вставками 11.2 Глава 3. Load 11.2.1 Состояния отложенных действий после операции загрузки 11.2.2 Ограничения загрузки 11.2.3 Модификатор типа файла totalfreespace 11.3 Глава 4. AutoLoader 11.3.1 Для запуска автозагрузки при значении Authentication YES необходим rexecd Replication Guide and Reference 12.1 Репликация и серверы других типов (не IBM) 12.2 Репликация в Windows 2000 12.3 Известная ошибка при сохранении файлов SQL 12.4 Обслуживание DB2 12.5 Утилита DDU в Web 12.6 Глава 3. Data replication scenario 12.6.1 Сценарии репликации 12.7 Глава 5. Planning for replication 12.7.1 Имена столбцов и таблиц 12.7.2 Репликация столбцов DATALINK 12.7.3 Ограничения на большие объекты 12.7.4 Планирование репликации 12.8 Глава 6. Setting up your replication environment 12.8.1 Предварительное требование для повсеместного изменения 12.8.2 Настройка среды репликации 12.9 Глава 8. Problem Determination 12.10 Глава 9. Capture and Apply for AS/400 12.11 Глава 10. Capture and Apply for OS/390 12.11.1 Prerequisites for DB2 DataPropagator for OS/390 (Предварительные условия для DB2 DataPropagator for OS/390) 12.11.2 UNICODE and ASCII Encoding Schemes on OS/390 (Схемы кодировки UNICODE и ASCII в OS/390) 12.11.2.1 Choosing an Encoding Scheme (Выбор схемы кодировки) 12.11.2.2 Setting Encoding Schemes (Задание схем кодировки) 12.12 Глава 11. Capture and Apply for UNIX platforms 12.12.1 Задание переменных среды для программ Capture и Apply в системах UNIX и Windows 12.13 Глава 14. Table Structures 12.14 Глава 15. Capture and Apply Messages 12.15 Приложение A. Запуск программ Capture и Apply из прикладной программы System Monitor Guide and Reference 13.1 db2ConvMonStream Troubleshooting Guide 14.1 Запуск DB2 в Windows 95, Windows 98 и Windows ME, когда пользователь не зарегистрирован в системе 14.2 Глава 2. Troubleshooting the DB2 Universal Database Server Использование DB2 Universal Database на 64-битных платформах 15.1 Глава 5. Configuration 15.1.1 LOCKLIST 15.1.2 shmsys:shminfo_shmmax 15.2 Глава 6. Restrictions XML Extender Administration and Programming MQSeries 17.1 Установка и конфигурирование функций DB2 MQSeries 17.1.1 Установка MQSeries 17.1.2 Установка MQSeries AMI 17.1.3 Включение функций DB2 MQSeries 17.2 Модели передачи сообщений MQSeries 17.3 Структура сообщения 17.4 Обзор функций MQSeries 17.4.1 Ограничения 17.4.2 Коды ошибок 17.5 Использование сценариев 17.5.1 Базовая передача сообщений 17.5.2 Отправка сообщений 17.5.3 Прием сообщений 17.5.4 Возможности соединения программ друг с другом 17.5.4.1 Взаимодействие требование/ответ 17.5.4.2 Публикация/подписка 17.6 enable_MQFunctions enable_MQFunctions 17.7 disable_MQFunctions disable_MQFunctions Руководство администратора: Планирование 6.1 Глава 8. Физическая структура базы данных 6.1.1 Ключи разделения В подразделе "Особенности проектирования групп узлов" раздела "Проектирование групп узлов" при описании ограничений для ключей разделения следующие пункты не касаются случая, когда DB2_UPDATE_PART_KEY=ON: Прим.:Если DB2_UPDATE_PART_KEY=OFF, эти ограничения остаются в силе. Прим.:В FixPak 3 и более новых значение по умолчанию - ON. В строке таблицы нельзя изменить значение столбца, входящего в ключ разделения. Значения столбца, входящего в ключ разделения, можно только удалять и вставлять. 6.2 Разработка групп узлов В разделе под названием "Разработка групп узлов" в подразделе "Особенности проектирования групп узлов" и подразделе "Реплицируемые таблицы сводок" отбросьте последнее предложение второго абзаца: Ключевое слово REPLICATED можно задавать только для сводной таблицы, определенной с опцией REFRESH DEFERRED. 6.3 Глава 9. Разработка распределенных баз данных 6.3.1 Изменение нескольких баз данных В разделе "Изменение нескольких баз данных" есть неточность в описании шагов по установке. Шаг 4, который в английском издании утверждает: Precompile your application program to specify a type 2 connection (that is, specify CONNECT 2 on the PRECOMPILE PROGRAM command), and one-phase commit (that is, specify SYNCPOINT ONEPHASE on the PRECOMPILE PROGRAM command), as described in the Application Development Guide. следует изменить на: Precompile your application program to specify a type 2 connection (that is, specify CONNECT 2 on the PRECOMPILE PROGRAM command), and two-phase commit (that is, specify SYNCPOINT TWOPHASE on the PRECOMPILE PROGRAM command), as described in the Application Development Guide. 6.4 Глава 13. Высокая доступность в среде Windows NT 6.4.1 Необходимость перезагрузки компьютера перед запуском утилиты DB2MSCS Утилита DB2MSCS используется для конфигурирования DB2 для поддержки восстановления после отказов в среде Microsoft Cluster Service. Для успешного запуска утилиты DB2MSCS Cluster Service должна иметь возможность найти библиотеку DLL ресурсов, db2wolf.dll, которая находится в каталоге %ProgramFiles%\SQLLIB\bin. Программа установки DB2 UDB Версии 7 включает каталог %ProgramFiles%\SQLLIB\bin в переменную среды PATH системы. Однако при работе в среде Windows 2000 перезапуска компьютера после установки не требуется. Если вы хотите запустить утилиту DB2MSCS, надо перезапустить компьютер, чтобы изменить переменную среды PATH для Cluster Service. 6.5 Глава 14. DB2 и высокая доступность Sun Cluster 2.2 DB2 Connect поддерживается в Sun Cluster 2.2, если: Для связи с хостом используется протокол TCP/IP (не SNA) Двухфазное принятие не используется. Это ограничение ослабляется, если пользователь сконфигурирует журнал SPM на совместно используемом диске (это можно сделать при помощи параметра конфигурации менеджера баз данных spm_log_path) и если подменяющий компьютер имеет такую же конфигурацию TCP/IP (те же имя хоста, IP-адрес и т.д.). 6.6 Поддержка Veritas в Solaris Теперь DB2 поддерживает Veritas, который обеспечивает поддержку DB2 High Availability в Solaris. Описание Включает, отключает экземпляры DB2 UDB и наблюдает за их работой. Точки входа Online (включение) Команда db2start включает экземпляр. Offline (отключение) Команда db2stop отключает экземпляр. Monitor (наблюдение) Определяет, работает ли заданный экземпляр DB2. Использует соответствующий мониторинг процесса и (необязательно) мониторинг баз данных. Clean (очистка) Удаляет ресурсы экземпляра DB2. Атрибут Тип Определение probeDatabase string База данных для наблюдения instanceOwner string Имя владельца экземпляра instanceHome string Начальный каталог владельца экземпляра probeTable string Таблица в probeDatabase для наблюдения monitorLevel integer 1 - мониторинг процесса, 2 - мониторинг базы данных nodeNumber integer Номер узла для запуска экземпляра (не задан, если EE) Определение типа type DB2UDB ( static int CleanTimeout = 240 static int MonitorTimeout = 30 static int OfflineTimeout = 240 static int OnlineRetryLimit = 2 static int OnlineTimeout = 120 static int OnlineWaitLimit = 1 static int RestartLimit = 3 static int ToleranceLimit = 1 static str ArgList[] = { probeDatabase, instanceOwner, instanceHome, probeTable, monitorLevel, nodeNumber } NameRule = resource.db2udb str probeDatabase str instanceOwner str instanceHome str probeTable int monitorLevel int nodeNumber ) Пример конфигурации DB2UDB db2_resource_n0 ( probeDatabase = sample probeTable = vcstable instanceOwner = stevera instanceHome = "/export/home/stevera" monitorLevel = 2 ) Установка Создайте каталог /opt/VRTSvcs/bin/DB2UDB. Скопируйте файлы online, offline, monitor, clean и DB2UDBAgent в /opt/VRTSvcs/bin/DB2UDB и убедитесь, что они помечены как исполняемые. Скопируйте файл db2udb.type.cf в /etc/VRTSvcs/conf/config. Остановите кластер (например, hastop -all). Добавьте строку include db2udb.type.cf в файл main.cf после строки include types.cf Проверьте правильность конфигурации кластера командой /opt/VRTSvcs/bin/hacf -verify /etc/VRTSvcs/conf/config Теперь вы готовы создавать ресурсы DB2, необходимые для управления экземплярами DB2. 6.7 Приложение B. Правила именования 6.7.1 Замечания об ID пользователей и именах схем длиной более 8 символов Продукты DB2 Версии 7 для 32-битных платформ Windows поддерживают ID пользователей длиной до 30 символов. Однако сами системы Windows NT и Windows 2000 ограничивают фактическую максимальную длину ID пользователя 20 символами. DB2 Версии 7 поддерживает соединения с Windows NT и Windows 2000 от клиентов из других систем (не 32-битных систем Windows) с ID пользователей, длина которых превышает 8 символов, если ID пользователя и пароль задаются явно. Это не так для соединений, использующих аутентификацию клиента или аутентификацию DCE. Аутентификация DCE на всех платформах по-прежнему допускает ID пользователя не длиннее 8 символов. ID авторизации, возвращаемый в SQLCA успешно выполненным оператором CONNECT или ATTACH, усекается до 8 символов. Если ID авторизации был усечен, поле SQLWARN содержит предупреждения. Дополнительную информацию смотрите в описании оператора CONNECT в руководстве SQL Reference. ID авторизации, возвращаемый процессором командной строки (CLP) для успешно выполненного оператора CONNECT или ATTACH, усекается до 8 символов. Если ID авторизации был усечен, он дополняется многоточием (...). DB2 Версии 7 поддерживает имена схем длиной до 30 байт, за исключением следующих случаев: Таблицы с именами схем, длина которых больше 18 байт, не могут быть реплицированы. Имена схем пользовательских типов не могут превышать по длине 8 байт. 6.7.2 ID пользователей и пароли В разделе "ID пользователей и пароли" слова "от A до Z" надо заменить на: Однобайтные большие и маленькие латинские буквы (от A до Z и от a до z). Поддержка других символов зависит от используемой кодовой страницы. Дополнительную информацию о поддержке кодовых страниц смотрите в приложении "Поддержка национальных языков (NLS)". 6.8 Приложение D. Несовместимость выпусков 6.8.1 DLFS Windows NT несовместима с Norton Utilities Файловая система связей данных Windows NT несовместима с Norton Utilities. При удалении файла с дисковода, управляемого DLFS, происходит исключительная ситуация ядра: error 0x1E (Kernel Mode Exception Not Handled). Это исключительная ситуация 0xC00000005 (Нарушение доступа). Это нарушение происходит из-за того, что драйвер Norton Utilities загружается после того, как загружен драйвер фильтра DLFS. Временным обходным приемом для этого положения является загрузка драйвера DLFSD после драйвера Norton Utilities. Это может быть сделано путем перехода на запуск драйвера DLFSD вручную. Нажмите кнопку Пуск, выберите Настройка--> Панель управления-->Устройства-->DLFSD и установите для нее ручной режим. Можно создать пакетный файл, который при запуске системы загружает драйвер DLFSD и службу DLFM, и добавить его в папку Автозагрузка. Этот пакетный файл должен выглядеть так: net start dlfsd net start "dlfm service" Назовите этот пакетный файл start_dlfs.bat и скопируйте его в каталог C:\WINNT\Profiles\Administrator\Start Menu\Programs\Startup. Привилегия загружать драйвер фильтра DLFS и службу DLFM есть только у администратора. 6.8.2 SET CONSTRAINTS заменено на SET INTEGRITY Оператор SET CONSTRAINTS заменен оператором SET INTEGRITY. Для обратной совместимости DB2 UDB V7 воспринимает оба оператора. 6.9 Приложение E. Поддержка национальных языков 6.9.1 Национальные версии DB2 Версии 7 DB2 Версии 7 доступна на английском, французском, немецком, итальянском, испанском, бразильском португальском, японском, корейском, упрощенном китайском, традиционном китайском, датском, финском, норвежском, шведском, чешском, голландском, венгерском, польском, турецком, русском, болгарском и словенском языках. Для платформ на основе UNIX можно установить сообщения продуктов DB2 и библиотеку для нескольких языков. Утилита установки DB2 помещает наборы файлов каталога сообщений в общепринятые каталоги национальных версий для данной платформы. Если ваша система использует те же коды страниц, но другие имена национальных версий по сравнению с указанными, переведенные сообщения можно будет видеть, если создать связь с соответствующим каталогом сообщений. Например, если на вашем компьютере AIX по умолчанию используется национальная версия ja_JP.IBM-eucJP, а кодовая страница для ja_JP.IBM-eucJP - 954, можно создать связь из /usr/lpp/db2_07_01/msg/ja_JP.IBM-eucJP в /usr/lpp/db2_07_01/msg/ja_JP при помощи команды: ln -s /usr/lpp/db2_07_01/msg/ja_JP /usr/lpp/db2_07_01/msg/ja_JP.IBM-eucJP После выполнения этой команды все сообщения DB2 выводятся на японском языке. 6.9.1.1 Наборы файлов Центра управления и документации Наборы файлов Центра управления, справки Центра управления и документации помещаются на рабочей станции назначения в следующие каталоги: DB2 for AIX: /usr/lpp/db2_07_01/cc/%L /usr/lpp/db2_07_01/java/%L /usr/lpp/db2_07_01/doc/%L /usr/lpp/db2_07_01/qp/$L /usr/lpp/db2_07_01/spb/%L DB2 for HP-UX: /opt/IBMdb2/V7.1/cc/%L /opt/IBMdb2/V7.1/java/%L /opt/IBMdb2/V7.1/doc/%L DB2 for Linux: /usr/IBMdb2/V7.1/cc/%L /usr/IBMdb2/V7.1/java/%L /usr/IBMdb2/V7.1/doc/%L DB2 for Solaris: /opt/IBMdb2/V7.1/cc/%L /usr/IBMdb2/V7.1/java/%L /opt/IBMdb2/V7.1/doc/%L Наборы файлов Центра управления используют кодовую страницу Unicode. Документация и справка Центра управления используют кодовую страницу, которую может распознать браузер. Если в вашей системе используется имя национальной версии, отличное от указанного, для запуска переведенной версии Центра управления и получения переведенного варианта справки надо создать связи с соответствующими языковыми каталогами. Например, если на вашем компьютере AIX по умолчанию используется национальная версия ja_JP.IBM-eucJP, можно создать связь из /usr/lpp/db2_07_01/cc/ja_JP.IBM-eucJP в /usr/lpp/db2_07_01/cc/ja_JP и из /usr/lpp/db2_07_01/doc/ja_JP.IBM-eucJP в /usr/lpp/db2_07_01/doc/ja_JP при помощи команд: ln -s /usr/lpp/db2_07_01/cc/ja_JP /usr/lpp/db2_07_01/cc/ja_JP.IBM-eucJP ln -s /usr/lpp/db2_07_01/doc/ja_JP /usr/lpp/db2_07_01/doc/ja_JP.IBM-eucJP После выполнения этих команд текст Центра управления и справки выводятся на японском языке. Прим.:Управляющий центр Web не поддерживается на самих серверах Linux/390 и NUMA-Q. Для управления базами данных на этих платформах его можно запустить с клиентской рабочей станции. 6.9.2 Национальные настройки для сервера администратора DB2 Убедитесь, что национальная версия экземпляра сервера администратора DB2 совместима с национальной версией экземпляра DB2. В противном случае экземпляр DB2 не сможет связываться с сервером администратора DB2. Если в профиле пользователя сервера администратора DB2 не задана переменная среды LANG, сервер администратора DB2 будет запущен с системной национальной версией по умолчанию. Если системная национальная версия по умолчанию не определена, сервер администратора будет запущен с кодовой страницей 819. Если экземпляр DB2 использует одну из национальных версий DBCS, а сервер администратора DB2 запущен с кодовой страницей 819, этот экземпляр не сможет связываться с сервером администратора DB2. Национальная версия экземпляра сервера администратора DB2 и национальная версия экземпляра DB2 должны быть совместимы. Например, в системе Linux с упрощенным китайским в профиле пользователя сервера администратора DB2 должно быть задано "LANG=zh_CN". 6.9.3 DB2 UDB на платформах Windows поддерживает кодовую страницу для стран Балтии (MS-1257) В 32-битных операционных системах Windows DB2 UDB поддерживает кодовую страницу стран Балтии, MS-1257. Эта кодовая страница используется для латышского, литовского и эстонского языков. 6.9.4 Определение значений кодовых страниц В разделе "Определение значений кодовых страниц" первый абзац надо изменить с: Тем не менее устанавливать переменную реестра DB2CODEPAGE нет необходимости, поскольку DB2 определит необходимое значение кодовой страницы из операционной системы. на: Как правило, устанавливать переменную реестра DB2CODEPAGE нет необходимости, поскольку DB2 определит необходимое значение кодовой страницы из операционной системы. 6.9.5 Поддержка кода страны и кодовой страницы В разделе "Поддержка кода страниц и кодовой страницы" добавьте в таблицу следующую строку: Кодовая Набор Код страница Группа кодов Об. стр. Локаль ОС Страна ---- ----- -------- -- --- ----- ---- --------------- 943 D-1 IBM-943 JP 81 ja_JP.PCK Sun Япония 6.9.6 Наборы символов В разделе под названием "Наборы символов" в подразделе "Набор символов для идентификаторов" последние два предложения первого абзаца надо заменить на следующие: Используйте специальные символы #, @ и $ в среде NLS с осторожностью, поскольку они не включены в инвариантный набор символов хоста NLS (EBCDIC). В зависимости от применяемой кодовой страницы можно использовать и символы из расширенного набора символов. Если вы используете базу данных в среде с несколькими кодовыми страницами, необходимо убедиться, что все кодовые страницы поддерживают все элементы из того расширенного набора символов, который вы планируете использовать. Руководство администратора: Реализация 7.1 Добавление или расширение контейнеров DMS (новый процесс) Контейнеры DMS (как контейнеры файлов, так и контейнеры непосредственных устройств) теперь добавляются (во время или после создания табличного пространства) или расширяются программами предварительного чтения параллельно. Чтобы достичь большего параллелизма операций по созданию контейнеров и изменению их размеров, можно увеличить число выполняемых в системе программ предварительного чтения. Единственный процесс, который не выполняется в параллельном режиме - это регистрация этих действий и (для создания контейнеров) маркировка контейнеров. Прим.:Параллелизм операций CREATE TABLESPACE/ALTER TABLESPACE (для добавления новых контейнеров к существующему табличному пространства) возрастает, пока число программ предварительного чтения не станет равным числу добавляемых контейнеров. 7.2 Глава 1. Управление DB2 при помощи инструментов GUI В разделе, озаглавленном "Центр оповещения", удалите последние два предложения раздела. В разделе, озаглавленном "Монитор производительности", удалите второй пункт списка "Определения переменных производительности" в подразделе "Мониторинг производительности в некоторый момент времени". Ниже в том же подразделе несколько последних абзацев раздела следует заменить на: Для каждого пункта можно наблюдать за множеством переменных производительности. Описание всех переменных производительности смотрите в справочнике по переменным производительности в электронной справке, вызываемой из меню Справка любого окна Монитора снимков. Эти переменные собраны по категориям. Существуют следующие категории: Экземпляр: Агенты, Соединения, Сортировка База данных: Блокировка и тупиковая ситуация, Пул буферов и ввод/вывод, Соединения, Сортировка, Активность операторов SQL Таблица: Таблица Табличное пространство: Пул буферов и ввод/вывод Соединения с базами данных: Пул буферов и ввод/вывод, Блокировка и тупиковая ситуация, Сортировка, Активность операторов SQL Подробности о создании снимков смотрите в электронной справке. В том же разделе удалите последнее предложение в подразделе, озаглавленном "Действия в случае появления объекта в Центре оповещений". 7.3 Глава 3. Создание базы данных 7.3.1 Создание табличного пространства 7.3.1.1 Использование непосредственного ввода/вывода в Linux В Linux есть пул узлов с устройствами непосредственного ввода/вывода, который нужно связать с устройством блокировок, прежде чем на нем можно будет выполнять операции непосредственного ввода/вывода. Информация связывания непосредственных устройств с устройствами блочного ввода-вывода хранится на контроллере непосредственных устройств. Связывание выполняется при помощи утилиты под именем raw, которая обычно поставляется дистрибьютором Linux. Прежде чем установить в Linux непосредственный ввод-вывод, вам понадобятся: один или несколько свободных разделов диска IDE или SCSI Ядро Linux 2.4.0 или более новое (некоторые дистрибьюторы Linux предлагают непосредственный ввод/вывод в ядрах 2.2). контроллер непосредственных устройств под именем /dev/rawctl или /dev/raw. Если используется другое имя, создайте символическую ссылку: # ln -s /dev/ваш_контр_непоср_устр /dev/rawctl утилита raw, которая обычно поставляется с дистрибутивом Linux Пакет исправления DB2 версии 7.1 FixPak 3 или новее Прим.:В распространяемых в настоящее время дистрибутивах, поддерживающих непосредственный ввод-вывод, узлы непосредственных устройств называются по-разному: Дистрибутив Узлы непосредственных Контроллер непосредственных устройств устройств ------------ -------------------- --------------------- RedHat 6.2 /dev/raw/raw1 to 255 /dev/rawctl SuSE 7.0 /dev/raw1 to 63 /dev/raw DB2 поддерживает все вышеперечисленные контроллеры непосредственных устройств и большинство других названий для узлов непосредственных устройств. DB2 не поддерживает непосредственных устройств в Linux/390. Чтобы сконфигурировать непосредственный ввод-вывод в Linux: В этом примере используемый раздел raw - /dev/sda5. В нем не должно быть никакой существенной информации. Шаг 1. Вычислите количество страниц по 4096 байт, округляя, при необходимости, в меньшую сторону. Например: # fdisk /dev/sda Command (m for help): p Disk /dev/sda: 255 heads, 63 sectors, 1106 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/sda1 1 523 4200997 83 Linux /dev/sda2 524 1106 4682947+ 5 Extended /dev/sda5 524 1106 4682947 83 Linux Command (m for help): q # Число страниц в /dev/sda5 равно num_pages = floor( ((1106-524+1)*16065*512)/4096 ) num_pages = 11170736 Шаг 2. Свяжите с этим разделом неиспользуемый узел непосредственного устройства. Это необходимо делать при каждой перезагрузке компьютера; для этого нужен доступ с полномочиями root. Чтобы посмотреть, какие узлы непосредственных устройств уже используются, введите команду raw -a: # raw /dev/raw/raw1 /dev/sda5 /dev/raw/raw1: bound to major 8, minor 5 Шаг 3. Задайте глобальные права чтения на контроллере непосредственного устройства и разделе диска. Задайте глобальные права чтения и записи на непосредственном устройстве: # chmod a+r /dev/rawctl # chmod a+r /dev/sdb1 # chmod a+rw /dev/raw/raw1 Шаг 4. Создайте табличное пространство в DB2, выбрав непосредственное устройство, а не раздел диска. Например: CREATE TABLESPACE dms1 MANAGED BY DATABASE USING (DEVICE '/dev/raw/raw1' 11170736) Табличные пространства на непосредственных устройствах поддерживаются также для всех остальных размеров страниц, поддерживаемых DB2. 7.3.2 Создание последовательности После раздела, озаглавленного "Определение столбца идентификации в новой таблице", добавьте раздел "Создание последовательности": Последовательность - это объект базы данных, поддерживающий автоматическую генерацию значений. Последовательности идеально подходят для генерации уникальных значений ключей. Прикладные программы могут использовать последовательности для предотвращения конфликтов и проблем производительности из-за генерации счетчика уникальности вне базы данных. В отличии от атрибута столбца идентификации, последовательность не привязана к конкретному столбцу таблицы и не связана с уникальным столбцом таблицы, и только доступ к ней происходит через этот столбец таблицы. Последовательность можно создать или изменить, чтобы генерация значений происходила по одному из следующих методов: Монотонное увеличение или уменьшение без ограничений Монотонное увеличение или уменьшение до определяемого пользователем предела и остановка Монотонное увеличение или уменьшение до определяемого пользователем предела и циклическое повторение Ниже приводится пример создания объекта последовательности: CREATE SEQUENCE order_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 24 В этом примере последовательность названа order_seq. Она начнется с 1 и будет увеличиваться на 1 без ограничений сверху. Поскольку верхний предел не задан, нет смысла задавать возврат к 1 и повторение сначала. Число, связанное с параметром CACHE, задает максимальное число значений последовательности, которые менеджер баз данных разместит и будет сохранять в памяти. Генерируемые числовые последовательности обладают следующими свойствами: Значения могут быть любого точного числового типа данных с масштабом 0. К таким типам данных относятся: SMALLINT, BIGINT, INTEGER и DECIMAL. Последовательные значения могут отличаться на любое указанное целочисленное приращение. Значение приращения по умолчанию - 1. Значение счетчика допускает восстановление. Значение счетчика воссоздается по журналам, когда требуется восстановление. Значения могут помещаться в кэш для повышения производительности. Размещение и хранение значений в кэше уменьшает синхронный ввод/вывод в журнал при генерации значений для последовательности. При системном сбое все значения в кэше, которые не были приняты, больше не используются и считаются потерянными. Заданное значение CACHE - это максимальное число значений последовательности, которое может быть потеряно при этом. Если база данных, содержащая одну или несколько последовательностей, восстанавливается до более раннего момента времени, возникает опасность генерации повторных значений для некоторых последовательностей. Чтобы исключить появление повторяющихся значений, не следует подвергать базу данных с последовательностями восстановлению до более раннего момента времени. Последовательности поддерживаются только в одноузловых базах данных. Для работы с последовательностями используются два выражения. Выражение PREVVAL возвращает сгенерированное предыдущим оператором текущего сеанса значение данной последовательности. Выражение NEXTVAL возвращает следующее значение данной последовательности. Новый член числовой последовательности генерируется, когда в выражении NEXTVAL задается имя этой последовательности. Однако если в одном запросе есть несколько экземпляров выражения NEXTVAL с одним и тем же именем последовательности, приращение счетчика последовательности производится только один раз для каждой строки результата. Один и тот же член числовой последовательности может использоваться как значение ключа уникальности в двух отдельных таблицах, если в первой таблице ссылка на член числовой последовательности делается при помощи выражения NEXTVAL, а во всех остальных таблицах при помощи выражения PREVVAL. Например: INSERT INTO order (orderno, custno) VALUES (NEXTVAL FOR order_seq, 123456); INSERT INTO line_item (orderno, partno, quantity) VALUES (PREVVAL FOR order_seq, 987654, 1) Выражения NEXTVAL и PREVVAL можно использовать в следующих контекстах: оператор INSERT, условие VALUES оператор SELECT, список SELECT оператор присваивания SET оператор UPDATE, условие SET операторы VALUES и VALUES INTO 7.3.3 Сравнение столбцов идентификации (IDENTITY) и последовательностей После нового раздела под заголовком "Создание последовательности" добавьте следующий раздел: При всем сходстве столбцов идентификации и последовательностей между ними есть и различия. Особенности этих двух подходов могут использоваться при проектировании баз данных и прикладных программ. Особенности столбца идентификации: Столбец идентификации может быть определен как часть таблицы только в момент создания таблицы. После того, как таблица создана, добавить к ней столбец идентификации нельзя. (Однако можно изменить характеристики существующего столбца идентификации.) Столбец идентификации автоматически генерирует значения для одной таблицы. Когда столбец идентификации определен как GENERATED ALWAYS, используемые значения всегда генерируются менеджером баз данных. Прикладным программам не разрешено задавать собственные значения при изменении содержимого таблицы. Объект последовательности имеет следующие особенности: Объект последовательности - это объект базы данных, не привязанный к какой-либо одной таблице. Объект последовательность генерирует последовательные значения, которые можно использовать в любом операторе SQL. Поскольку объект последовательность может использоваться любой прикладной программой, есть два выражения, управляющие получением либо очередного значения в данной последовательности, либо значения, сгенерированного перед выполнением данного оператора. Выражение PREVVAL возвращает последнее значение, сгенерированное для данной последовательности предыдущим оператором в текущем сеансе. Выражение NEXTVAL возвращает следующее значение данной последовательности. Использование этих выражений допускает, чтобы одно и то же значение использовалось для разных операторов SQL в разных таблицах. Хотя это и не все особенности этих двух подходов, изложенное поможет вам определить, какой из них использовать с учетом структуры вашей базы данных и использующих базу данных прикладных программ. 7.3.4 Создание индекса, расширения индекса или спецификации индекса В разделе, озаглавленном "Создание индекса, расширения индекса или спецификации индекса", к абзацу, начинающемуся предложением "Длина столбца, входящий в ключ индекса, не может быть больше 255 байт" добавьте следующее примечание: Прим.:Переменная реестра DB2_INDEX_2BYTEVARLEN дает разрешение включать в состав ключа индекса столбцы, длина которых превышает 255. 7.4 Глава 4. Изменение базы данных В разделе "Изменение табличного пространства" надо добавить следующие новые разделы: 7.4.1 Добавление к табличному пространству SMS контейнера на разделе К табличному пространству SMS можно добавить контейнер на разделе (или узле), который в настоящее время не содержит контейнеров. Содержимое табличного пространства равномерно распределяется по всем контейнерам. В процессе этого перераспределения доступ к табличному пространству не ограничивается. Если нужно добавить несколько контейнеров, все их необходимо добавлять одновременно. Чтобы добавить контейнер к табличному пространству SMS с помощью командной строки, введите команду: ALTER TABLESPACE <имя> ADD ('<путь>') ON NODE (<номер_раздела>) Раздел задается его номером; каждый раздел (или узел) в этом диапазоне разделов должен существовать в группе узлов, в которой определено это табличное пространство. номер_раздела можно задавать только явно или внутри ровно одного условия ON NODES для оператора. В следующем примере показано, как добавить новый контейнер на третий раздел группы узлов, используемой табличным пространством "plans" в операционной системе на основе UNIX: ALTER TABLESPACE plans ADD ('/dev/rhdisk0') ON NODE (3) После раздела под заголовком "Изменение атрибутов таблиц" добавьте следующие разделы: 7.4.2 Изменение столбца идентификации Для изменения атрибутов существующего столбца идентификации используйте оператор ALTER TABLE. Дополнительную информацию об этом операторе, включая его синтаксис, смотрите в справочнике SQL Reference. Есть разные способы изменить столбец идентификации, чтобы придать ему некоторые свойства последовательностей. Некоторые задачи уникальны для ALTER TABLE и столбца идентификации: RESTART сбрасывает последовательность, связанную со столбцом идентификации, к значению, неявно или явно заданному в качестве начального значения первоначально при создании столбца идентификации. RESTART WITH <числовая-константа> сбрасывает последовательность, связанную со столбцом идентификации, к значению числовой константы точного типа. Числовая константа может представлять собой любое положительное или отрицательное значение без ненулевых цифр после десятичной точки, которое может быть присвоено столбцу идентификации. 7.4.3 Изменение последовательности Для изменения атрибутов существующей последовательности используется оператор ALTER SEQUENCE. Дополнительную информацию об этом операторе, включая его синтаксис, смотрите в справочнике SQL Reference. Возможны следующие изменения атрибутов последовательности: Изменение приращения между будущими значениями Установка новых минимальных или максимальных значений Изменение числа кэшируемых членов последовательности Установка или отмена циклического повторения последовательности Установка или отмена генерации членов последовательности по запросу Перезапуск последовательности Есть две задачи, не встречающиеся в ходе создания последовательности. Это: RESTART. Сбрасывает последовательность к значению, неявно или явно заданному в качестве начального значения при создании последовательности. RESTART WITH числовая-константа. Сбрасывает последовательность к значению числовой константы точного типа. Числовая константа может представлять собой любое положительное или отрицательное значение без ненулевых цифр после десятичной точки. После перезапуска последовательности или превращения ее в цикл возникает опасность генерации повторных членов последовательности. Оператор ALTER SEQUENCE влияет только на будущие члены последовательности. Тип данных последовательности изменять нельзя. Вместо этого нужно отбросить существующую последовательность и затем создать новую последовательность, выбрав новый тип данных. Все кэшируемые значения последовательности, не используемые DB2, при изменении последовательности теряются. 7.4.4 Отбрасывание последовательности Чтобы удалить последовательность, используйте оператор DROP. Дополнительную информацию об этом операторе, включая его синтаксис, смотрите в справочнике SQL Reference. Конкретную последовательность можно отбросить так: DROP SEQUENCE имя_последовательности где имя_последовательности - имя отбрасываемой последовательности, включая имя явной или неявной схемы для точного указания существующей последовательности. Последовательности, создаваемые системой для столбцов идентификации (IDENTITY), нельзя отбрасывать при помощи оператора DROP SEQUENCE. После того, как последовательность отброшена, все привилегии в отношении этой последовательности также отбрасываются. 7.4.5 Переключение состояния табличного пространства Если контейнеры, связанные с табличным пространством, вновь стали доступными, можно использовать условие SWITCH ONLINE оператора ALTER TABLESPACE, чтобы перевести это табличное пространство из состояния OFFLINE в состояние ONLINE. Табличное пространство переводится в состояние ONLINE, в то время как остальная база данных остается в рабочем состоянии и продолжает использоваться. Вместо того, чтобы использовать это условие, можно отсоединить от базы данных все прикладные программы и затем вновь установить соединения прикладных программ с базой данных. При этом табличное пространство будет переведено из состояния OFFLINE в состояние ONLINE. Чтобы переключить табличное пространство в состояние ONLINE из командной строки, введите команду: ALTER TABLESPACE <имя> SWITCH ONLINE 7.4.6 Изменение контейнеров в табличном пространстве DMS Табличные пространства DMS теперь создаются и изменяют размеры параллельно, что повышает производительность. Уровень параллелизма равен числу предварительных выборок плюс 1. 7.5 Глава 5. Управление доступом к базам данных После раздела под заголовком "Привилегии индексов" добавьте следующие разделы: 7.5.1 Привилегии последовательностей Создатель последовательности автоматически получает привилегию USAGE. Привилегия USAGE позволяет использовать выражения NEXTVAL и PREVVAL для этой последовательности. Чтобы разрешить другим пользователям использовать выражения NEXTVAL и PREVVAL, привилегии последовательности надо предоставить всем (то есть группе PUBLIC). Это позволит всем пользователям использовать выражения для данной последовательности. После раздела под заголовком "Управление доступом к данным с помощью утилиты аудита" добавьте следующий раздел: 7.5.2 Шифрование данных Составной частью плана защиты может быть шифрование данных. Для этого можно использовать встроенные функции шифрования и дешифровки: ENCRYPT, DECRYPT_BIN, DECRYPT_CHAR и GETHINT. Дополнительную информацию об этих функциях, включая их синтаксис, смотрите в разделе Справочник SQL Замечаний по выпуску. Функция ENCRYPT шифрует данные при помощи метода шифрования на основе паролей. Эти функции также позволяют встроить подсказку к паролю. Подсказка к паролю встраивается в зашифрованные данные. После шифрования единственная возможность расшифровки данных - это использование точного пароля. Разработчики, решившие использовать эти функции, должны запланировать мероприятия в случае забытых паролей и недоступных данных. Результат функций ENCRYPT имеет тот же тип данных, что и первый аргумент. Шифрование возможно только для длинных переменных (VARCHAR). Объявляемая длина результата - одна из следующих: Длина аргумента данных плюс 42, если задан необязательный параметр hint (подсказка). Длина аргумента данных плюс 10, если не задан необязательный параметр hint. Функции DECRYPT_BIN и DECRYPT_CHAR расшифровывают данные при помощи дешифровки, основанной на пароле. Результат функций DECRYPT_BIN и DECRYPT_CHAR имеет тот же тип данных, что и первый аргумент. Объявляемая длина результата равна длине первоначальных данных. Функция GETHINT возвращает встроенную подсказку к паролю. Подсказка к паролю - это фраза, которая помогает владельцам данных вспоминать пароли. Например, слово "океан" можно использовать как подсказку, помогающую вспомнить пароль "Тихий". Пароль, используемый для шифрования данных, определяется при помощи одного из двух способов: Аргумент Password. Пароль - это строка, явно передаваемая при вызове функции ENCRYPT. Данные будут шифроваться и дешифроваться при помощи данного пароля. Пароль из специального реестра. Оператор SET ENCRYPTION PASSWORD шифрует значение пароля и посылает зашифрованный пароль менеджеру баз данных, который сохраняет его в специальном реестре. Функции ENCRYPT, DECRYPT_BIN и DECRYPT_CHAR, вызванные без параметра пароля, используют значение специального реестра ENCRYPTION PASSWORD. Первоначальное значение специального реестра или значение по умолчанию - пустая строка. Допустимые длины паролей - от 6 до 127 включительно. Допустимые длины подсказок - от 0 до 32 включительно. Когда специальный реестр ENCRYPTION PASSWORD задается со стороны клиента, пароль шифруется у клиента, посылается серверу базы данных, а затем расшифровывается. Чтобы не оставлять пароль в читаемом виде, его повторно шифруют на сервере базы данных. Функции DECRYPT_BIN и DECRYPT_CHAR должны расшифровывать специальный реестр перед использованием. Значение, находящееся в ENCRYPTION PASSWORD, также не оставляется в читаемом виде. Защита шлюза не поддерживается. 7.6 Глава 8. Восстановление базы данных 7.6.1 Как использовать приостановленный ввод-вывод В главу 8 "Восстановление базы данных" надо добавить следующий новый раздел по использованию функции приостановленного ввода/вывода: Прим.:Приведенная далее информация об утилите db2inidb перекрывает информацию в книге Что нового Версии 7.2. С DB2 поставляется новый инструмент db2inidb, который позволяет выполнить восстановление после аварии и перевести базу данных в состояние отложенного повтора транзакций. Приостановленный ввод-вывод поддерживает постоянную доступность системы, полностью реализуя оперативное отделение зеркальной копии, то есть отделение зеркальной копии без закрытия базы данных. Если пользователь не может получить автономные или оперативные резервные копии большой базы данных, резервные копии или копии системы можно получить из ее зеркальной копии, выполнив приостановку ввода-вывода и отделение зеркальной копии. Варианты использования db2inidb зависят от способа зеркального копирования устройств хранения. В следующих вариантах использования предполагается, что вся база данных копируется зеркально, согласованно с системой хранения. В многоузловой среде, прежде чем можно будет использовать отделенный образ на любом из разделов, нужно запустить инструмент db2inidb на каждом разделе. Инструмент db2inidb можно запустить на всех разделах одновременно. Создание клона базы данных Цель этой операции - создание копии исходной базы данных, используемой только для чтения. Следующие процедуры описывают, как получить клон базы данных: Приостановите ввод-вывод в исходной системе, введя следующую команду: db2 set write suspend for database Воспользуйтесь командой уровня операционной системы, чтобы отделить зеркальную копию от исходной базы данных. Возобновите ввод-вывод в исходной системе, введя следующую команду: db2 set write resume for database После выполнения этой команды база данных в исходной системе должна вернуться в обычное состояние. Подключитесь к зеркальной копии базы данных с другого компьютера. Запустите этот экземпляр базы данных, введя команду: db2start Запустите восстановление после аварии DB2, введя следующую команду: db2inidb имя_базы_данных AS SNAPSHOT Прим.:Эта команда выполнит откат изменений, внесенных транзакциями, начатыми во время отделения зеркальной копии. Тот же процесс можно использовать для автономного резервного копирования, но если восстановление происходит в исходной системе, эту резервную копию нельзя будет использовать для повтора транзакций, поскольку последовательность файлов журнала ей не соответствует. Использование отделенной зеркальной копии в качестве резервной базы данных Так как для зеркальной (резервной) базы данных непрерывно выполняется повтор транзакций с использованием журналов, новые журналы, которые создаются в исходной базе данных, постоянно считываются из исходной системы. Следующая процедура описывает, как отделенная зеркальная копия может использоваться в качестве резервной базы данных: Приостановите в исходной базе данных операции записи ввода-вывода. Отделите зеркальную копию от исходной системы. Возобновите в исходной базе данных запись ввода-вывода, чтобы вернуть ее в обычный режим. Присоедините зеркальную копию базы данных к другому экземпляру. Переведите зеркальную копию в состояние отложенного повтора и выполните для нее повтор транзакций. Запустите инструмент db2inidb (db2inidb <алиас_базы_данных> as standby), чтобы вывести базу данных из состояния приостановленной записи и перевести базу данных с зеркальной копией в состояние отложенного повтора. Скопируйте журналы, установив программу обработчика пользователя для получения файлов журналов из исходной системы, чтобы гарантировать доступность для данной зеркальной копии базы данных самых новых журналов. Повторите транзакции базы данных до конца журналов. Вернитесь к шагу f и повторяйте данный процесс, пока исходная база данных не будет закрыта. Использование отделенной зеркальной копии в качестве резервной копии Следующая процедура описывает, как использовать зеркальную копию системы в качестве резервной копии для восстановления исходной системы: Воспользуйтесь командами операционной системы, чтобы скопировать данные и журналы зеркальной копии на место первичной системы. Запустите этот экземпляр базы данных, введя команду: db2start Чтобы перевести зеркальную базу данных в состояние отложенного повтора и отменить состояние приостановленной записи, введите следующую команду. db2inidb алиас_базы_данных AS MIRROR Повторите транзакции базы данных до конца журналов. 7.6.2 Инкрементное резервное копирование и восстановление В главу 8 "Восстановление базы данных" вставьте следующий раздел об инкрементном резервном копировании и восстановлении: По мере того, как размер баз данных, особенно хранилищ, продолжает расширяться до терабайтных и петабайтных масштабов, одновременно растут время и аппаратные ресурсы, требуемые для резервного копирования и восстановления этих баз данных. При работе с большими базами данных полное резервное копирование баз данных и табличных пространств не всегда оказывается лучшим подходом, поскольку требования к устройствам хранения для многочисленных копий таких баз данных оказываются непомерными. Рассмотрим следующие соображения: Когда меняется лишь малый процент данных в хранилище, должна быть возможность обходиться без резервного копирования всей базы данных. Добавление табличных пространств к существующим базам данных и последующее резервное копирование только табличного пространства рискованно, поскольку могут измениться данные вне копируемых табличных пространств. Теперь DB2 поддерживает инкрементное резервное копирование и восстановление (за исключением данных длинных полей и больших объектов). Инкрементная резервная копия - это резервная копия, содержащая лишь те страницы, которые были изменены после снятия предыдущей резервной копии. Помимо страниц с измененными данными и индексом, каждая инкрементная резервная копия содержит все метаданные первоначальной базы данных (такие как конфигурация базы данных, определения табличных пространств, хронологию базы данных и так далее), которые сохраняются при обычном полном резервном копировании. Поддерживаются два типа инкрементного резервного копирования: Инкрементный. Инкрементная резервная копия - это копия всех данных базы данных, которые изменились со времени последней успешной операции полного резервного копирования. Ее называют также кумулятивной резервной копией, поскольку каждая следующая инкрементная резервная копия будет содержать информацию всех предыдущих. Предшественником инкрементной резервной копии всегда является последняя успешная полная резервная копия того же объекта. Разностный. Разностная (или инкрементная разностная) копия, - это копия всех данных базы данных, которые изменились со времени последней успешной операции резервного копирования (полного, инкрементного или типа дельта) рассматриваемого табличного пространства. Она называется также дифференциальной резервной копией. Предшественником разностной резервной копии является последняя успешная резервная копия со всеми табличными пространствами, входящими в данную разностную резервную копию. Главное различие между инкрементной и разностной копиями заключается в их поведении при снятии последовательных резервных копий объекта, непрерывно менявшегося в течении какого-то времени. Каждая следующая инкрементная копия включает все содержимое предыдущей инкрементной копии плюс все новые или изменившиеся с момента изготовления предыдущей копии данные. Разностные резервные копии содержат только страницы, изменившиеся с момента изготовления предыдущей копии. Допускается сочетание инкрементного резервного копирования базы данных и табличного пространства, как в оперативном режиме, так и в автономном. Тщательно планируйте стратегию резервного копирования, поскольку сочетание инкрементного резервного копирования базы данных и табличного пространства приводит к тому, что предшественник резервной копии базы данных (или резервной копии нескольких табличных пространств) не всегда представляет собой единую копию, а может оказаться уникальным набором сделанных в разное время предыдущих резервных копий базы данных и табличных пространств. Чтобы восстановить базу данных или табличное пространство до согласованного состояния, процесс восстановления должен начаться с согласованной резервной копии всего воссоздаваемого объекта (базы данных или табличного пространства)и должен затем использовать все соответствующие инкрементные копии в описанном ниже порядке (смотрите раздел "Метод восстановления"). Чтобы разрешить отслеживание изменений базы данных, DB2 поддерживает новый параметр конфигурации базы данных TRACKMOD, который может иметь одно из двух допустимых значений: NO. Инкрементное резервное копирование в этой конфигурации не разрешено. Изменения страниц баз данных не отслеживаются и никак не регистрируются. YES. Инкрементное резервное копирование в этой конфигурации разрешено. Когда разрешается отслеживание изменений, новая конфигурация вступает в силу при первом успешном соединении с любой базой данных экземпляра. До первого инкрементного резервного копирования должно пройти полное резервное копирование базы данных. Значение TRACKMOD по умолчанию для существующих баз данных - NO; для новых баз данных - YES. Уровень отслеживания в этом случае - табличное пространства (как для SMS, так и для DMS). Даже минимальное отслеживание изменений в базе данных может сказаться на производительности при выполнении транзакций, связанных с изменениями или вставкой данных. 7.6.2.1 Восстановление из инкрементных резервных копий Операция восстановления из инкрементных резервных копий всегда содержит следующие шаги: Определение инкрементной копии назначения. Сначала администратор базы данных должен найти последнюю копию, подлежащую восстановлению, и из утилиты восстановления DB2 запросить операцию инкрементного восстановления. Этот образ при инкрементном восстановлении называется целевым образом, поскольку он будет последним из восстановленных образов. Команда инкрементного восстановления для этого образа может инициировать создание новой базы данных, конфигурация и определения табличных пространств которой будут взяты из этой целевой копии. Инкрементная целевая копия задается при помощи параметра TAKEN AT в команде RESTORE DATABASE. Восстановление наиболее поздней полной базы данных или табличного пространства в качестве отправной точки, к которой можно применять последовательные инкрементные резервные копии. Восстановление каждой из требуемых инкрементных резервных полных копий или копий табличного пространства в том порядке, в котором они создавались, начиная с исходной копии, восстановленной на шаге 2. Повторение шага 3, пока не будет вторично прочитана копия назначения из шага 1. Всего в ходе операции инкрементного восстановления происходит два обращения к целевой копии. Во время первого обращения из копии считываются только начальные данные; никакие пользовательские данные не считываются. Полная копия считывается и обрабатывается только во время второго обращения. Два обращения к целевой копии при операции инкрементного восстановления нужны для того, чтобы убедиться в корректности изначально заданной хронологии, конфигурации базы данных и определений табличных пространств для базы данных, которая будет создана в ходе операции восстановления. В тех случаях, когда табличное пространство отбрасывалось после снятия первоначальной полной копии базы данных, данные табличного пространства для этой копии будут считываться из резервных копий, но игнорироваться в ходе инкрементного восстановления. Например: 1. db2 restore database sample incremental taken at <отметка> где: <отметка> указывает на последнюю инкрементную резервную копию, которую нужно восстановить 2. db2 restore database sample incremental taken at <отметка1> где: <отметка1> указывает на начальную полную копию базы данных (или табличного пространства) 3. db2 restore database sample incremental taken at <отметкаX> где: <отметкаX> указывает на каждую из инкрементных резервных копий в порядке их создания 4. Повторить шаг 3, восстанавливая все инкрементные резервные копии вплоть до копии <отметка> Если предпринимается попытка операции восстановления базы данных и создавались инкрементные резервные образы табличного пространства, образы табличного пространства должны восстанавливаться в хронологическом порядке в соответствии их отметкам времени резервного копирования. 7.6.3 Параллельное восстановление Теперь DB2 использует несколько агентов как при восстановлении после аварии, так и при восстановлении с повтором транзакций базы данных. Можно ожидать повышения производительности при этих операциях, особенно в симметричной многопроцессорной среде (SMP); использование нескольких агентов при восстановлении базы данных использует дополнительные процессоры, доступные на компьютерах SMP. С этим усовершенствованием связан новый тип агента - db2agnsc. DB2 выбирает число агентов, используемых при восстановлении базы данных, на основе числа процессоров в компьютере. Для компьютеров SMP число используемых агентов равно числу процессоров + 1. На компьютерах с одним процессором для более производительного чтения журналов, обработки записей журналов и предварительной выборки страниц данных используются три агента. DB2 распределяет записи журнала между агентами так, чтобы они могли применять их одновременно, где возможно. Запись в журнал ведется параллельно на уровне страниц (записи журнала на одной и той же странице данных обрабатываются одним агентом), поэтому производительность растет даже в том случае, когда вся работа выполняется на одной таблице. 7.6.4 Резервное копирование в именованные конвейеры Теперь доступна поддержка резервного копирования базы данных в локальные именованные конвейеры (и восстановление из них) в системах на основе UNIX. Программа записи и программа чтения именованного конвейера должны находиться на одном и том же компьютере. Конвейер должен существовать и располагаться в локальной файловой системе. Поскольку именованный конвейер обрабатывается как локальное устройство, нет необходимости указывать, что назначение является именованным конвейером. Вот пример для AIX: 1. Создайте именованный конвейер: mkfifo /u/dbuser/mypipe 2. Используйте этот конвейер как назначение для операции резервного копирования базы данных: db2 backup db sample to /u/dbuser/mypipe 3. Восстановите базу данных: db2 restore db sample into mynewdb from /u/dbuser/mypipe 7.6.5 Резервное копирование из отдельной копии Теперь DB2 поддерживает полное автономное резервное копирование базы данных на отделенной зеркальной копии базы данных. Оперативное резервное копирование не поддерживается и в нем нет необходимости, поскольку база данных, которая находится в состоянии отложенного повтора транзакций, все равно недоступна. Когда происходит восстановление отдельной зеркальной резервной копии, она нуждается в повторе транзакций, поскольку во время отделения могли быть активные транзакции. Прим.:Для пакета исправления DB2 версии 7.1 FixPak 3 и DB2 версии 7.2 эта поддержка ограничена базами данных, которые содержат только табличные пространства DMS. При попытке резервного копирования базы данных после отделения и базы данных, содержащей табличные пространства SMS, резервное копирование не будет выполнено. После того, как база данных была разделена, нужно задать при помощи утилиты db2inidb одну из следующих опций: Snapshot (снимок). Эта опция инициирует восстановление после аварии, приводя базу данных к согласованному состоянию. Запускается новая последовательность файлов журнала, и база данных не сможет повторять транзакции по каким-либо журналам, начинающимся с первоначальной базы данных. База данных доступна для всех операций, включая резервное копирование. Standby (Резервная база данных). Эта опция переводит базу данных в состояние отложенного повтора транзакций. Восстановление после аварии не выполняется, и база данных остается в несовместимом состоянии. Mirror (Зеркальная копия). Эта опция заменяет первоначальную базу данных на зеркальную копию. База данных переводится в состояние отложенного повтора транзакций, а режим WRITE SUSPEND выключается. Восстановление после аварии не выполняется, и база данных остается в несовместимом состоянии. Вот несколько сценариев использования: Создание клона базы данных. Цель этой операции состоит в том, чтобы иметь копию исходной базы данных, доступную только для чтения и используемую, например, для создания отчетов. Для этого выполните следующие действия: Приостановите ввод/вывод в исходной системе: db2 set write suspend for database Отделите зеркальную копию. Воспользуйтесь командами уровня операционной системы, чтобы отделить зеркальную копию от исходной базы данных. Восстановите ввод/вывод в исходной системе: db2 set write resume for database База данных в исходной системе должна теперь вернуться в обычное состояние. Смонтируйте отделенные зеркальные копии базы данных на другом хосте. Запустите экземпляр: db2start Запустите восстановление после аварии DB2: db2inidb <имя_базы_данных> as snapshot Тот же процесс можно использовать для автономного резервного копирования, но если восстановление происходит в исходной системе, эту резервную копию нельзя будет использовать для повтора транзакций, поскольку последовательность файлов журнала ей не соответствует. Использование отделенной зеркальной копии в качестве резервной базы данных. Идея состоит в том, что для зеркальной (резервной) базы данных непрерывно выполняется повтор транзакций с использованием журналов, и даже новые журналы, которые создаются в исходной базе данных, непрерывно считываются из исходной системы. Чтобы использовать отделенную зеркальную копию в качестве резервной базы данных, выполните следующие действия: Приостановите ввод/вывод в исходной системе: db2 set write suspend for database Отделите зеркальную копию. Воспользуйтесь командами уровня операционной системы, чтобы отделить зеркальную копию от исходной базы данных. Восстановите ввод/вывод в исходной системе: db2 set write resume for database База данных в исходной системе должна теперь вернуться в обычное состояние. Смонтируйте отделенные зеркальные копии базы данных на другом хосте. Выведите базу данных с зеркальными копиями из состояния отложенной записи и переведите ее в состояние отложенного повтора транзакций. db2inidb <имя_базы_данных> as standby Скопируйте журналы. Установите программу обработчика пользователя для получения файлов журналов из архивного каталога исходной системы, чтобы гарантировать доступность для данной зеркальной копии базы данных самых новых журналов. Повторите транзакции для зеркальной копии до конца журналов. db2 rollforward db <имя_бд> to end of logs Повторяйте процесс с шага 6, пока исходная база данных не придет в рабочее состояние. Использование отделенной зеркальной копии для восстановления исходной системы. Следующая процедура описывает, как использовать зеркальную копию системы в качестве резервной копии для восстановления исходной системы: Выполните полное копирование. Воспользуйтесь командами операционной системы, чтобы скопировать данные и журналы зеркальной копии на место первичной системы. Запустите экземпляр: db2start Переведите восстановленную зеркальную базу данных в состояние отложенного повтора и выполните на зеркальной копии повтор транзакций до окончания журналов: db2inidb <имя_базы> as mirror Резервное копирование без выполнения восстановления после аварии. Выполнение автономного резервного копирования на отделенной зеркальной базе данных без выполнения восстановления после аварии означает, что вы можете восстановить эту резервную копию поверх исходной системы. Для этого выполните следующие действия: Приостановите ввод/вывод в исходной системе: db2 set write suspend for database Отделите зеркальную копию. Воспользуйтесь командами уровня операционной системы, чтобы отделить зеркальную копию от исходной базы данных. Восстановите ввод/вывод в исходной системе: db2 set write resume for database База данных в исходной системе должна теперь вернуться в обычное состояние. Смонтируйте отделенные зеркальные копии базы данных на другом хосте. Запустите экземпляр: db2start Переведите базу данных с зеркальными копиями в состояние отложенного повтора транзакций. db2inidb <имя_базы_данных> as standby Запустите операцию резервного копирования базы данных: db2 backup database <имя_базы_данных> Это создаст неявное соединение с базой данных, но не вызовет восстановления после аварии DB2. 7.6.6 Архивирование журнала по требованию Теперь DB2 поддерживает закрытие (и, если включена опция обработчика пользователя, то и архивирование) активного журнала восстановимой базы данных в любое время. Это дает возможность собрать полный комплект файлов журнала до известного момента, и затем использовать эти файлы журнала для изменения резервной базы данных. Прим.:Архивирование журналов по требованию не гарантирует, что файлы журналов будут сархивированы немедленно; оно прерывает запись журнала и выдает запрос на архивирование, но обработчик пользователя может вызвать некоторую задержку Вы можете инициировать архивирование журнала по требованию, введя новую команду DB2 ARCHIVE LOG или вызвав новый API db2ArchiveLog. 7.6.7 Создание зеркальной копии журнала В главу 8 "Восстановление базы данных" следует добавить следующий новый раздел по использованию функции приостановленного ввода/вывода: Теперь DB2 поддерживает создание зеркальной копии журнала на уровне базы данных. Создание зеркальной копии файлов журнала помогает защитить базу данных от таких опасностей, как: Случайное удаление активного журнала Разрушение данных из-за неисправности оборудования Если вы опасаетесь, что ваши активные журналы могут быть повреждены (в результате аварии диска), вы можете при помощи новой переменной реестра DB2 - DB2_NEWLOGPATH2, - задать вторичный путь, чтобы база данных работала с копиями активного журнала, создавая зеркальные тома для записи журналов. Переменная реестра DB2_NEWLOGPATH2 позволяет базе данных записывать идентичную вторую копию файлов журнала в другой путь. Рекомендуется разместить вторичный путь на другом физическом диске (желательно с другим контроллером диска). Тогда контроллер диска не будет уязвимой точкой. Прим.:Поскольку Windows NT и OS/2 не позволяют "монтировать" устройство с произвольным именем пути, на этих платформах невозможно задать вторичный путь на другом устройстве. DB2_NEWLOGPATH2 может быть включена (задана равной 1) или выключена (задана равной 0). Значение по умолчанию - ноль. Если этой переменной присвоена 1, имя вторичного пути равно текущему значению переменной LOGPATH плюс символ 2. Например, в среде SMP, если LOGPATH равен /u/dbuser/sqllogdir/logpath, вторичный путь журнала будет /u/dbuser/sqllogdir/logpath2. В среде MPP, если LOGPATH равен /u/dbuser/sqllogdir/logpath, DB2 присоединит к пути указатель узла, и в качестве первичного пути журнала будет использовать /u/dbuser/sqllogdir/logpath/NODE0000. В этом случае вторичный путь журнала будет /u/dbuser/sqllogdir/logpath2/NODE0000. При первом включении DB2_NEWLOGPATH2 вторичный путь журнала не используется, пока не будет завершен текущий файл журнала при следующем запуске базы данных. Это аналогично тому, как сейчас используется NEWLOGPATH. Если возникает ошибка при записи в первичный или вторичный путь журнала, база данных пометит отказавший путь как "плохой", запишет сообщение в файл db2diag.log и будет помещать следующие записи журнала только в оставшийся "хороший" путь журнала. DB2 не будет пытаться еще раз использовать "плохой" путь, пока не будет завершен текущий файл журнала. Когда DB2 потребуется открыть следующий файл журнала, она проверит, допустим ли этот путь, и если да, начнет использовать его. Если нет, DB2 не будет пытаться еще раз использовать путь до первого обращения к следующему файлу журнала. Попыток синхронизировать пути журналов не производиться, но DB2 сохраняет информацию о происходящих ошибках доступа, чтобы использовать правильные пути при архивации файлов журнала. Если сбой произойдет при записи в оставшийся "хороший" путь, база данных прервет работу. 7.6.8 Поддержка кроссплатформенного резервного копирования и восстановления на Sun Solaris и HP Теперь доступна поддержка for кроссплатформенного резервного копирования и восстановления между Sun Solaris и HP. Передача резервной копии между системами должна происходить в двоичном режиме. В системе назначения база данных должна быть создана с той же кодовой страницей/территорией, что и система, в которой была создана исходная база данных. 7.6.9 Особенности менеджера связей данных DB2/Особенности утилиты резервного копирования Второй абзац в этом разделе замените на следующий текст: Когда на файлы есть ссылки, серверы связей данных планируют их асинхронное копирование на архивный сервер, например, ADSM, или на диск. При работе утилиты резервного копирования DB2 проверяет, что скопированы все внесенные в расписание для копирования файлы. В начале снятия резервной копии DB2 связывается со всеми серверами связей данных, указанными в файле конфигурации DB2. Если у сервера связей данных есть один или несколько связанных файлов и он не запущен или же остановлен во время резервного копирования, резервная копия не будет содержать полной информации DATALINK. Операция резервного копирования при этом завершится успешно. Перед тем, как этот сервер связей данных можно будет снова объявить доступным для базы данных, надо успешно завершить все отложенные резервные копирования. Если резервное копирование вызвано, когда число отложенных резервных копирований на этом сервере связей данных уже вдвое превышает значение num_db_backups (смотрите ниже), операция резервного копирования завершится неудачно. Перед последующими операциями резервного копирования надо перезапустить этот сервер связей данных и завершить отложенные операции резервного копирования. 7.6.10 Особенности менеджера связей данных DB2/Особенности утилиты восстановления и повтора транзакций Замените абзацы, начинающиеся с: Если вы восстанавливаете из резервной копии базу данных или табличное пространство и не указали опцию WITHOUT DATALINK... и Если вы восстанавливаете из резервной копии базу данных или табличное пространство и не указали опцию WITHOUT DATALINK... на: Когда вы восстанавливаете базу данных или табличное пространство, для успешного завершения операции восстановления необходимы следующие условия: o Если не работает любой из серверов связей данных, записанных в файле резервной копии, операция восстановления все равно завершится успешно. Таблицы с информацией о столбце DATALINK, пострадавшие из-за отсутствия сервера связей данных, после операции восстановления будут переведены в состояние отложенного согласования связей данных (или отложенного повтора транзакций - если выполнялся повтор транзакций). Прежде чем серверы связей данных смогут быть снова помечены как доступные для базы данных, этот процесс восстановления должен успешно завершиться. o Если любой из серверов связей данных, записанных в файле резервной копии, остановится во время операции восстановления, операция восстановления завершится неудачно. Восстановление можно перезапустить при неработающем сервере связей данных (смотри выше). o Если предыдущая операция восстановления остается незавершенной на каких-либо серверах связей данных, последующие операции восстановления базы данных или табличных пространств будут завершаться неуспешно до тех пор, пока не будут перезапущены эти серверы связей данных и не будет завершено незавершенное восстановление. o Информация обо всех столбцах DATALINK, записанных в файле резервной копии, должна существовать в соответствующих регистрационных таблицах серверов связей данных. Если в регистрационных таблицах не записано всей информации о столбцах DATALINK, после завершения операции восстановления (или отложенного повтора транзакций - если выполнялся повтор транзакций) таблица с отсутствующим столбцом DATALINK переводится в состояние невозможности согласовать связи данных. Если резервная копия не записана в регистрационные таблицы, это может означать, что предоставленный файл резервной копии более ранний, чем значение для num_db_backups, и уже был помечен для "чистки мусора". Это означает, что архивированные файлы из этой более ранней резервной копии были удалены и не могут быть восстановлены. Все таблицы, у которых есть столбцы DATALINK, переводятся в состояние отложенного согласования связей данных. Если резервная копия не записана в регистрационные таблицы, это может означать, что процесс резервного копирования до сих пор не завершен, поскольку не работает сервер связей данных. Все таблицы, у которых есть столбцы DATALINK, переводятся в состояние отложенного согласования связей данных. Когда сервер связей данных будет перезапущен, процесс резервного копирования будет завершен до процесса восстановления. Таблица остается доступной для пользователей, но ссылки в столбцах DATALINK могут быть неверными (например, файл, заданный значением столбца DATALINK, может быть не найден). Если вы не хотите этого, можно перевести таблицу в состояние ожидания проверки, введя оператор "SET CONSTRAINTS for имя_таблицы TO DATALINK RECONCILE PENDING". Если после операции восстановления из резервной копии таблица находится в состоянии невозможности согласования связей данных, данные столбца DATALINK можно исправить одним из способов, предлагаемых в разделе "Вывод таблицы из состояния невозможности согласования связей данных (Datalink_Reconcile_Not_Possible State)". Примечание в конце первого абзаца остается прежним. В конце этого раздела добавьте следующую информацию: Настоятельно рекомендуется сархивировать файл datalink.cfg, чтобы предусмотреть некоторые необычные случаи восстановления, поскольку файл datalink.cfg в резервной копии базы данных лишь отражает файл datalink.cfg, каким он был на момент резервного копирования. В некоторых случаях восстановления требуется иметь наиболее поздний файл datalink.cfg. Таким образом, необходимо создавать резервную копию файла datalink.cfg после каждого вызова команды ADD DATALINKS MANAGER или DROP DATALINKS MANAGER. Это поможет получить наиболее поздний файл datalink.cfg, если самый свежий файл datalink.cfg на диске недоступен. Если наиболее поздний файл datalink.cfg на диске недоступен, замените существующий файл datalink.cfg (восстановленный из резервной копии) наиболее поздним файлом datalink.cfg, сархивированным до запуска восстановления повтором транзакций. Сделайте это после восстановления базы данных. 7.6.11 Восстановление баз данных из резервных копий, сделанных в автономном режиме, без повтора транзакций Восстановление без повтора транзакций можно выполнять только на уровне базы данных, но не на уровне табличного пространства. Восстановить базу данных без повтора транзакций можно, либо задав базу данных, для которой невозможен повтор транзакций (то есть использующую циклическую запись журнала), либо указав параметр WITHOUT ROLLING FORWARD в команде RESTORE DATABASE. Если вы используете утилиту восстановления с опцией WITHOUT DATALINK, все таблицы со столбцами DATALINK переводятся в состояние отложенного согласования связей (DRP), а во время операции восстановления никакого согласования с серверами связей данных не выполняется. Если вы не используете опцию WITHOUT DATALINK, а сервер связей данных, записанный в файл резервной копии, больше не определен для базы данных (то есть был отброшен при помощи команды DROP DATALINKS MANAGER), те таблицы, что содержали ссылки DATALINK на отброшенный сервер связей данных, утилитой восстановления переводятся в состояние DRP. Если вы не используете опцию WITHOUT DATALINK, все серверы связей данных доступны и вся информация о столбцах DATALINK полностью записана в регистрационные таблицы, то для всех серверов связей данных, записанных в файл резервной копии, происходит следующее: Все файлы, которые были связаны после образа резервной копии, использованной для операции восстановления базы данных, помечаются как несвязанные (поскольку они не записаны в образ резервной копии как связанные). Все файлы, ссылки на которые были удалены после снятия образа резервной копии, но имелись до снятия образа резервной копии, помечаются как связанные (поскольку они записаны в образ резервной копии как связанные). Если файл впоследствии был связан с другой таблицей в другой базе данных, восстановленная таблица переводится в состояние отложенного согласования связей данных. Прим.:Описанные шаги невозможны, если резервная копия, использованная для операции восстановления базы данных, была снята в момент, когда не работал хотя бы один сервер связей данных, поскольку информация DATALINK в резервной копии не полна. Описанные шаги также невыполнимы, если резервная копия, использованная для операции восстановления базы данных, была снята после восстановления базы данных с повтором транзакций или без него. В обоих случаях все таблицы со столбцами DATALINK переводятся в состояние отложенного согласования связей, а во время операции восстановления никакого согласования с серверами связей данных не выполняется. 7.6.12 Восстановление баз данных и табличных пространств и повтор транзакций до конца файлов журнала При восстановлении базы данных или табличного пространства с последующим повтором транзакций до конца файлов журнала (при условии, что все файлы доступны) проверка синхронизации не требуется, если только во время операции восстановления нет ни одного неработающего сервера связей данных, записанного в файле резервной копии. Если вы не уверены, что для операции повтора транзакций есть все файлы журнала, или полагаете, что может потребоваться синхронизация значений DATALINK, сделайте следующее: Введите оператор SQL для затронутых таблиц: SET CONSTRAINTS FOR имя_таблицы TO DATALINK RECONCILE PENDING Это переведет таблицу в состояние отложенного согласования связей данных и в состояние отложенной проверки. Если вы не хотите, чтобы таблица находилась в состоянии отложенной проверки, введите следующий оператор SQL: SET CONSTRAINTS FOR имя_таблицы IMMEDIATE CHECKED Это выведет таблицу из состояния отложенной проверки, но оставит ее в состоянии отложенного согласования связей данных. Для вывода таблицы из этого состояния необходимо использовать утилиту согласования. Может оказаться, что файл резервной копии содержит ссылки DATALINK на менеджер связей DB2 (то есть менеджер связей DB2 был зарегистрирован в базе данных во время резервного копирования), который в дальнейшем был отброшен от базы данных. Для каждого табличного пространства, для которого выполняется восстановление с повтором транзакций и которое содержит хотя бы одну таблицу со ссылками DATALINK на отброшенный менеджер связей DB2, все таблицы утилитой повтора транзакций переводятся в состояние DRP. 7.6.13 Взаимодействие менеджера связей данных и восстановления В следующей таблице показаны разные типы восстановления, которые можно выполнить; действия менеджера связей данных DB2 во время восстановления и повтора транзакций, и необходимо ли запускать утилиту согласования после завершения восстановления: Тип восстановления Действия менеджера связей во время восстановления Действия менеджера связей во время повтора транзакций Согласование Невосстановимая база данных (logretain=NO) Восстановление базы данных из полной резервной копии при работе всех серверов связей данных Выполняется быстрое согласование Нет Может быть запущена дополнительно при подозрении на ошибки связывания файлов Восстановление базы данных с использованием опции WITHOUT DATALINK Таблицы переводятся в состояние Datalink_Reconcile_Pending (ожидание согласования связей данных) Нет Обязательно Восстановление базы данных из полной резервной копии, когда хотя бы один из серверов связей данных не работает Быстрое согласование выполняется лишь на тех таблицах в табличных пространствах, у которых нет связей с неработающим сервером связей данных, тогда как остальные таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Нет Требуется для таблиц в табличных пространствах со связями с неработающим сервером связей данных Восстановление базы данных из неполной резервной копии при работе всех серверов связей данных Быстрое согласование не производится, все таблицы со столбцами DATALINK переводятся в состояние Datalink_Reconcile_ Pending state (ожидание согласования связей данных) Нет Обязательно Восстановимая база данных (logretain=YES) Восстановление базы данных с использованием опции WITHOUT ROLLING FORWARD из полной резервной копии при работе всех серверов связей данных Выполняется быстрое согласование Нет Необязательно Восстановление базы данных с использованием опций WITHOUT ROLLING FORWARD и WITHOUT DATALINK из полной или неполной резервной копии при работающих или неработающих серверах связей данных Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Нет Обязательно Восстановление базы данных с использованием опции WITHOUT ROLLING FORWARD из полной резервной копии, когда хотя бы один из серверов связей данных не работает Быстрое согласование выполняется лишь на тех таблицах в табличных пространствах, у которых нет связей с неработающими серверами связей данных, тогда как остальные таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Нет Требуется на таблицах в табличных пространствах со связями с неработающими серверами связей данных Восстановление базы данных с использованием опции WITHOUT ROLLING FORWARD из неполной резервной копии при работающих или неработающих серверах связей данных Быстрое согласование не производится, все таблицы со столбцами DATALINK переводятся в состояние Datalink_Reconcile_ Pending state (ожидание согласования связей данных) Нет Обязательно Восстановление базы данных и повтор транзакций до конца журналов из полной резервной копии при работе всех серверов связей данных Никаких действий Никаких действий Необязательно Восстановление базы данных и повтор транзакций до конца журналов из полной резервной копии, когда при выполнении повтора транзакций хотя бы один из серверов связей данных не работает Никаких действий Никаких действий Необязательно Восстановление базы данных и повтор транзакций до конца журналов из полной или неполной резервной копии, когда во время восстановления любой из серверов связей данных не работает Никаких действий Все таблицы со столбцами DATALINK переводятся в состояние Datalink_Reconcile_Pending state (ожидание согласования связей данных) Требуется для всех таблиц со столбцами DATALINK Восстановление базы данных и повтор транзакций до конца журналов из неполной резервной копии при работе всех серверов связей данных во время восстановления Никаких действий Никаких действий Необязательно Восстановление базы данных и повтор транзакций до конца журналов из полной или неполной резервной копии при работе всех серверов связей данных, когда на любом из серверов связей данных резервная копия неизвестна Никаких действий Все таблицы в табличных пространствах со связями с сервером связей данных, на котором резервная копия неизвестна, переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Обязательно Восстановление табличного пространства и повтор транзакций до конца журналов из полной резервной копии при работе всех серверов связей данных Никаких действий Никаких действий Необязательно Восстановление табличного пространства и повтор транзакций до конца журналов из полной резервной копии, когда при выполнении повтора транзакций хотя бы один из серверов связей данных не работает Никаких действий Никаких действий Необязательно Восстановление табличного пространства и повтор транзакций до конца журналов из полной или неполной резервной копии, когда во время восстановления любой из серверов связей данных не работает Никаких действий Все таблицы в табличных пространствах со связями с любым неработающим сервером связей данных переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Требуется для таблиц в табличных пространствах со связями с любым неработающим сервером связей данных Восстановление табличного пространства и повтор транзакций до конца журналов из неполной резервной копии при работе всех серверов связей данных Никаких действий Никаких действий Необязательно Восстановление базы данных и повтор транзакций до определенного момента времени из полной или неполной резервной копии при работающих или не работающих серверах связей данных во время процесса восстановления и/или повтора транзакций Никаких действий Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Обязательно Восстановление табличного пространства и повтор транзакций до определенного момента времени из полной или неполной резервной копии при работающих или не работающих серверах связей данных во время процесса восстановления и/или повтора транзакций Никаких действий Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Обязательно Восстановление базы данных с другим именем базы данных, алиасом, именем хоста или экземпляра без повтора транзакций(NOTE1) Таблицы переводятся в состояние Datalink_Reconcile _Not_Possible (согласование связей данных невозможно) Нет Необязательно, но таблицы в состоянии Datalink_Reconcile_ Not_Possible (согласование связей данных невозможно) нужно исправить вручную Восстановление базы данных с другим именем базы данных, алиасом, именем хоста или экземпляра и повтор транзакций Никаких действий Таблицы переводятся в состояние Datalink_Reconcile _Not_Possible (согласование связей данных невозможно) Необязательно, но таблицы в состоянии Datalink_Reconcile_Not _Possible (согласование связей данных невозможно) нужно исправить вручную Восстановление базы данных из непригодной к использованию резервной копии (образ был удален при чистке мусора на сервере связей данных) без повтора транзакций (NOTE1), с опцией WITHOUT DATALINK или без нее Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Никаких действий Обязательно Восстановление базы данных из непригодной к использованию резервной копии (образ был удален при чистке мусора на сервере связей данных) и повтор транзакций, с опцией WITHOUT DATALINK или без нее Никаких действий Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Обязательно Восстановление табличного пространства из непригодной к использованию резервной копии (образ был удален при чистке мусора на сервере связей данных) и повтор транзакций Никаких действий Таблицы переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) Обязательно Примечания: Восстановление с использованием резервной копии, сделанной в автономном режиме, и опции WITHOUT ROLLING FORWARD (logretain включен), или восстановление с использованием резервной копии, сделанной в автономном режиме (logretain выключен). Полная резервная копия - это резервная копия, снятая при всех работающих серверах связей данных. Неполная резервная копия - это резервная копия, снятая, когда хотя бы один из серверов связей данных не работал. Процесс быстрого согласования не производится, если резервная копия, использованная для операции восстановления базы данных, была снята после восстановления базы данных - с повтором транзакций или без него. В этом случае все таблицы со столбцами DATALINK переводятся в состояние Datalink_Reconcile_ Pending (ожидание согласования связей данных) 7.6.14 Обнаружение ситуации, требующей согласования Далее приводятся несколько ситуаций, в которых может потребоваться запуск утилиты согласования: Вся база данных восстановлена, и для нее произведен повтор транзакций до определенного момента времени. Поскольку для всей базы данных был выполнен повтор транзакций до принятой транзакции, ни одна из таблиц не будет находиться в состоянии ожидания проверки (из-за реляционных или проверочных ограничений). Все данные в базе данных приведены в согласованное состояние. Тем не менее, столбцы DATALINK могут быть не синхронизированы с метаданными в Менеджере связей данных DB2, и требуется согласование. В этом случае таблицы с данными столбцов DATALINK уже будут в состоянии DRP (ожидание согласования связей данных). Для каждой из этих таблиц необходимо вызвать утилиту согласования. Один из серверов связей данных, на котором запущен менеджер связей DB2, теряет след своих метаданных. Это может произойти по нескольким причинам. Например: После холодного старта сервера связей данных. После восстановления метаданных сервера связей данных до более раннего состояния. В некоторых ситуациях, например, при выполнении операторов SQL UPDATE и DELETE, DB2 может быть в состоянии обнаружить ошибку метаданных на сервере связей. В таких ситуациях DB2 откажется обработать оператор SQL. Вам придется перевести таблицу в состояние DRP (ожидание согласования связей данных) при помощи оператора SET CONSTRAINTS, а затем запустить утилиту согласования для этой таблицы. Файловая система недоступна (например, из-за отказа диска) и не восстанавливается до текущего состояния. В этой ситуации могут отсутствовать отдельные файлы. Менеджер связей DB2 отброшен в базе данных, но в столбце DATALINK FILE LINK CONTROL есть ссылки на этот менеджер связей DB2. Для таких таблиц следует запустить утилиту согласования. 7.7 Приложение C. Обработчик пользователя для восстановления базы данных В разделе "Особенности архивирования и получения" следующий абзац теперь неверен, и его надо удалить: Программа обработчика пользователя может быть прервана, если удаленный клиент потеряет свое соединение с сервером DB2. Это происходит, если пока обработчик пользователя обрабатывает архивирование журналов, один из подсоединенных клиентов SNA становится неработоспособным или выключается, в результате чего на сервер посылается сигнал (SIGUSR1). Сервер передает этот сигнал обработчику пользователя, что приводит к прерыванию. Программу обработчика пользователя можно изменить так, чтобы она проверила прерывание и продолжила обработку. В разделе Обработка ошибок есть список Примечания, в котором содержание Примечания 3 должно быть заменено на следующее: Требования программы обработчика пользователя приостанавливаются на пять минут. В течении этого времени все требования игнорируются, включая требование файла журнала, из-за которого поступил этот код возврата. После пятиминутной приостановки обработки требований обрабатывается следующее требование. Если при обработке этого запроса не возникли ошибки, продолжается обработка новых запросов программы обработчика пользователя и DB2 повторит запрос архивирования для файлов журналов, при архивировании которых ранее возникла ошибка или архивирование которых было приостановлено. Если во время повтора генерируется код возврата больше 8, требования приостанавливаются еще на пять минут. Пятиминутные приостановки продолжаются, пока не будет исправлена ошибка или не будет остановлена и перезапущена база данных. Когда все прикладные программы отключены от базы данных и база данных повторно открыта, DB2 выдает запрос архивирования для всех файлов журналов, которые, возможно, не были успешно архивированы при предыдущем использовании базы данных. Если программа обработчика пользователя не смогла заархивировать файлы журналов, диск может быть заполнен файлами журналов и дополнительные затраты на форматирование этих файлов журналов могут ухудшить производительность. Когда диск будет переполнен, менеджер баз данных не будет более принимать запросы прикладных программ на изменение баз данных. Если программа обработчика пользователя вызывалась для получения файлов журнала, восстановление с повтором транзакций будет отложено, но не остановлено, если только остановка не была задана в утилите ROLLFORWARD DATABASE. Если остановка не задана, вы можете исправить ошибку и продолжить восстановление. 7.8 Приложение D. Выполнение команд на нескольких серверах разделов баз данных В конец раздела "Задание команды для выполнения" надо добавить следующее: При выполнении любого сценария оболочки korn, содержащего операции чтения из stdin в фоновом режиме, надо явно перенаправить stdin в источник, откуда процесс может читать без остановки с терминала (сообщение SIGTTIN). Для перенаправления stdin надо запустить сценарий в следующем виде: shell_script 8,5 AND C <= 10. Оценка значения r_2 с использованием линейной интерполяции должна быть изменена на: 10 - 8,5 r_2 *= ---------- x (число строк, значение в которых > 8,5 и <= 100,0) 100 - 8,5 10 - 8,5 r_2 *= ---------- x (10 - 7) 100 - 8,5 1,5 r_2 *= ---- x (3) 91,5 r_2 *= 0 Следующий за этим новым примером абзац также нужно изменить: Итоговая оценка - r_1 + r_2 *= 7, и абсолютная ошибка равна только -12,5%. 8.3.2 Правила обновления статистики каталога В разделе "Правила обновления статистики столбцов" последний абзац в первом пункте списка надо заменить следующим: HIGH2KEY должно быть больше, чем LOW2KEY, если в соответствующем столбце есть более 3 различных значений. Если число различных значений в столбце равно или меньше 3, HIGH2KEY может равняться LOW2KEY. 8.3.3 Статистика подэлементов В FixPak 1 есть опция для сбора и использования статистики подэлементов. Это статистика о содержимом данных в столбцах, когда структура данных имеет вид последовательностей подполей и подэлементов, разделенных пробелами. Например, предположим, что база данных содержит таблицу DOCUMENTS, в которой каждая строка описывает документ, и в DOCUMENTS есть столбец под названием KEYWORDS, содержащий список соответствующих ключевых слов, описывающих текст этого документа. Значения в KEYWORDS могут выглядеть так: 'база моделирование аналитика бизнес интеллект' 'моделирование модель дрозофила размножение температура' 'лес хвойный почва эрозия дождевой' 'лес температура почва осадки пожар' В этом примере каждое значение столбца состоит из 5 подэлементов, каждый из которых является словом (ключевым словом), отделенным от других одним пробелом. Для запросов, содержащих предикаты LIKE для таких столбцов с использованием символа %, который означает соответствие всем символам: SELECT .... FROM DOCUMENTS WHERE KEYWORDS LIKE '%моделирование%' оптимизатору часто полезно знать основные статистические характеристики структуры подэлементов этого столбца, а именно: SUB_COUNT Среднее число подэлементов. SUB_DELIM_LENGTH Средняя длина ограничителя, отделяющего подэлемент, где ограничитель в данном контексте - один или несколько последовательных символов пробела. В приведенном примере SUB_COUNT равняется 5, а SUB_DELIM_LENGTH - 1, поскольку все ограничители состоят из одного символа пробела. В FixPak 1 системный администратор управляет сбором и использованием такой статистики при помощи расширения переменной реестра DB2_LIKE_VARCHAR. Эта переменная реестра определяет, как оптимизатор DB2 UDB работает с предикатами вида: COLUMN LIKE '%xxxxxx' где xxxxxx - любая строка символов; то есть с любыми предикатами LIKE, поисковое значение которых начинается с символа %. (Оно может и заканчиваться символом %, но это не обязательно). Далее мы будем называть их "предикаты LIKE с подстановкой". Для каждого предиката оптимизатор должен оценить, какое число строк отвечает этому предикату. Для предикатов LIKE с подстановкой оптимизатор полагает, что у COLUMN, для которого найдено совпадение, имеется структура из последовательности сочлененных элементов, образующих собственно столбец, и оценивает длину каждого из этих элементов на основе длины строки символов, исключая из нее начальные и конечные символы %. Новый синтаксис: db2set DB2_LIKE_VARCHAR=[Y|N|S|num1][,Y|N|num2] где - первый член (перед запятой) означает следующее (только для столбцов, не имеющих позитивной статистики подэлементов) статистика подэлементов S Использовать алгоритм, как в DB2 версии 2. N Использовать алгоритм подэлементов с фиксированной длиной. Y (по умолчанию) Использовать алгоритм подэлементов с переменной длиной с используемым по умолчанию значением для параметра алгоритма. num1 Использовать алгоритм подэлементов с переменной длиной со значением num1 для параметра алгоритма. - второй член (после запятой) означает: N (по умолчанию) Не собирать или не использовать статистики подэлементов. Y Собирать статистики подэлементов. Использовать алгоритм подэлементов с переменной длиной, использующий эти статистики, а также устанавливаемое по умолчанию значение для параметра алгоритма в случае столбцов с позитивными статистиками подэлементов. num2 Собирать статистики подэлементов. Использовать алгоритм подэлементов с переменной длиной, использующий эти статистики, а также значение num2 для параметра алгоритма в случае столбцов с позитивными статистиками подэлементов. Если значение DB2_LIKE_VARCHAR содержит только первый член, статистика для подэлементов не собирается, а вся ранее собранная статистика игнорируется. Указанное значение влияет подсчет оптимизатором селективности предикатов LIKE с подстановкой так же, как и раньше, то есть: Если указано значение S, оптимизатор использует такой же алгоритм, как использовался в DB2 версии 2, в которой не предполагалось подэлементной модели. Если указано значение N, оптимизатор использует алгоритм, предполагающий подэлементную модель, и считает, что COLUMN имеет фиксированную длину даже в том случае, когда он определен как имеющий переменную длину. Если указано значение Y (по умолчанию) или константа с плавающей запятой, оптимизатор использует алгоритм, предполагающий подэлементную модель, и распознает, что COLUMN имеет переменную длину, если он так определен. Это также подразумевает получение статистики подэлементов непосредственно из запроса, а не из данных. Этот алгоритм содержит параметр ("параметр алгоритма"), указывающий, насколько элемент длиннее, чем строка символов, заключенная в символы %. Если указано Y, для параметра алгоритма оптимизатор по умолчанию использует значение 1,9. Если указана константа с плавающей запятой, для параметра алгоритма оптимизатор использует это значение. Константа должна быть в диапазоне от 0 до 6,2. Если значение DB2_LIKE_VARCHAR содержит два члена и второй из них - Y или константа с плавающей запятой, статистика подэлементов собирается во время операции RUNSTATS по столбцам типа CHAR, VARCHAR, GRAPHIC или VARGRAPHIC со строками наборов однобайтных символов и используются во время компиляции запросов, включающих в себя предикаты LIKE с подстановкой. Оптимизатор использует алгоритм, предполагающий подэлементную модель, и вычисляет селективность предиката по показателям SUB_COUNT и SUB_DELIM_LENGTH, а также по параметру алгоритма. Параметр алгоритма указывается так же, как описано выше, то есть: Если указано Y, для параметра алгоритма оптимизатор по умолчанию использует значение 1,9. Если указана константа с плавающей запятой, для параметра алгоритма оптимизатор использует это значение. Константа должна быть в диапазоне от 0 до 6,2. Если во время компиляции оптимизатор обнаружит, что статистики подэлементов для включенного в запрос столбца не собраны, он будет использовать "дедуктивный" алгоритм подэлементов, то есть алгоритм, используемый, если указан только первый член DB2_LIKE_VARCHAR. Таким образом, чтобы статистики подэлементов были использованы оптимизатором, второй член DB2_LIKE_VARCHAR должен быть установлен и во время RUNSTATS, и во время компиляции. Значения статистик подэлементов можно посмотреть, запросив SYSIBM.SYSCOLUMNS. Например: select substr(NAME,1,16), SUB_COUNT, SUB_DELIM_LENGTH from sysibm.syscolumns where tbname = 'DOCUMENTS' Столбцов SUB_COUNT и SUB_DELIM_LENGTH нет в производной таблице статистики SYSSTAT.COLUMNS и поэтому изменить их нельзя. Прим.:При использовании этой опции RUNSTATS может работать дольше. Например, RUNSTATS может работать на 15 - 40% дольше для таблицы со столбцами из пяти символов, если не используются опции DETAILED и DISTRIBUTION. Если указана опция DETAILED или DISTRIBUTION, процентное увеличение будет меньше, несмотря на то, что абсолютное значение увеличения останется таким же. Если вы собираетесь использовать эту опцию, надо сопоставить эти дополнительные расходы и повышение производительности запроса. 8.4 Глава 6. Компилятор SQL Нужно изменить следующие разделы: 8.4.1 Реплицируемые сводные таблицы Этот раздел должен содержать следующую информацию: Реплицируемые сводные таблицы могут использоваться для обеспечения локального выполнения объединений. Например, если есть схема типа "звезда", в которой большая таблица фактов распределена по двенадцати узлам, объединения между таблицей фактов и таблицами ассоциаций будут более эффективны, если эти таблицы размещены совместно. Если все эти таблицы размещены в одной группе узлов, для локально выполняемого объединения корректно может быть распределена только одна таблица ассоциации. Все другие таблицы ассоциаций нельзя будет использовать в локально выполняемом объединении, так как столбцы объединения таблицы фактов не будут соответствовать ключу разделения таблицы фактов. Например, вы можете иметь таблицу фактов FACT (C1, C2, C3, ...), для разделения которой используется столбец C1, таблицу ассоциации DIM1 (C1, dim1a, dim1b, ...), для разделения которой используется столбец C1, таблицу ассоциации DIM2 (C2, dim2a, dim2b, ...), для разделения которой используется столбец C2, и т.д. В этом примере можно увидеть, что объединение между таблицами FACT и DIM1 будет выполняться лучше всего, так как для предиката DIM1.C1 = FACT.C1 будет выполняться условие совместного размещения. Обе эти таблицы используют для разделения столбец C1. Для объединения с DIM2 с предикатом WHERE DIM2.C2 = FACT.C2 не может использоваться локально выполняемое объединение, так как для разделения таблицы FACT используется столбец C1, а не C2. В этом случае хорошим решением может быть репликация таблицы DIM2 в группу узлов таблицы фактов. При этом объединение может быть выполнено локально на каждом разделе. Прим.:Реплицируемые сводные таблицы используются для репликации внутри одной базы данных. При репликации между базами данных используются регистрации и управляющие таблицы, а данные располагаются в различных базах данных и в различных операционных системах. Дополнительную информацию о репликации между базами данных смотрите в руководстве Replication Guide and Reference. При создании реплицируемой сводной таблицы исходная таблица может располагаться в одноузловой группе узлов или в многоузловой группе узлов. В большинстве случаев эта таблица имеет небольшой размер и ее можно поместить в одноузловую группу узлов. Объем реплицируемых данных можно ограничить, задав только часть столбцов этой таблицы, ограничив число строк при помощи предикатов или используя при создании реплицируемой сводной таблицы оба эти метода. Прим.:Для работы реплицируемой сводной таблицы не требуется опция захвата данных. Реплицируемую сводную таблицу можно также создать в многоузловой группе узлов. Это та же группа узлов, в которой размещены таблицы большого объема. В этом случае копии исходной таблицы создаются на всех разделах этой группы узлов. В такой среде объединения между большой таблицей фактов и таблицами ассоциаций будут с большей вероятностью выполняться локально, и не будет выполняться передача данных исходной таблицы на все разделы. Индексы для реплицируемых таблиц не создаются автоматически. Созданные индексы могут отличаться от индексов исходной таблицы. Прим.:Для реплицируемых таблиц нельзя создать индексы уникальности (или задать какие-либо ограничения). Этим предотвращаются нарушения ограничений, которые не определены для исходных таблиц. Эти ограничения не разрешены, даже если такие же ограничения определены для исходной таблицы. После использования оператора REFRESH следует выполнить утилиту RUNSTATS для реплицируемой таблицы, так же как для любой другой таблицы. Реплицируемые таблицы можно использовать прямо в запросе. Однако нельзя использовать с реплицируемой таблицей предикат NODENUMBER(), чтобы узнать данные таблицы на конкретном разделе. Чтобы узнать, используется ли созданная реплицируемая сводная таблица для запроса, в котором указана исходная таблица, можно использовать средство EXPLAIN. Сначала убедитесь, что существуют таблицы EXPLAIN. Затем создайте план объяснения для интересующего вас оператора SELECT. Наконец, используйте утилиту db2exfmt для форматирования выходных данных EXPLAIN. В зависимости от того, какие данные будут использоваться в объединении, выбранный оптимизатором план доступа может использовать или не использовать реплицируемую сводную таблицу. Если оптимизатор определит, что выгоднее передать исходную таблицу на другие разделы этой группы узлов, реплицируемая сводная таблица не будет использоваться. 8.4.2 Концепции доступа к данным и оптимизация Изменен раздел "Обращение к нескольким индексам" в разделе "Принципы просмотра индексов". Перед примечанием в конце этого раздела добавьте следующую информацию: Чтобы реализовать возможности улучшения производительности от использования динамических битовых образов при просмотре нескольких индексов, может понадобиться изменение значений параметра конфигурации базы данных sortheap (размер кучи сортировки) и параметра конфигурации менеджера баз данных sheapthres (порог кучи сортировки). Если в плане доступа используются динамические битовые образы, требуется дополнительный объем кучи сортировки. Если заданное значение sheapthres относительно близко к значению sortheap (то есть для одновременных запросов они различаются менее чем в два или три раза), для работы с динамическими битовыми образами будет использоваться гораздо меньше памяти, чем предполагал оптимизатор. Чтобы исправить эту ситуацию, увеличьте значение sheapthres по отношению к значению sortheap. Изменен раздел "Стратегии поиска для объединения типа "звезда"" в разделе "Терминология предикатов". В конце этого раздела добавьте следующую информацию: Для динамических битовых образов, создаваемых и используемых в технологии объединения типа "звезда", используется память кучи сортировки. Дополнительную информацию о параметре конфигурации базы данных sortheap (размер кучи сортировки) смотрите в главе 13, "Конфигурирование DB2" книги Руководство администратора: Производительность. 8.5 Глава 8. Производительность работы 8.5.1 Управление пулом буферов базы данных В разделе "Управление пулом буферов базы данных" после абзаца, начинающегося фразой "При создании пула буферов размер страницы по умолчанию составляет 4 Кбайта", добавьте следующую информацию: При работе с Windows 2000 поддерживаются размеры пула буферов до 64 Гбайт минус размер DB2 и размер операционной системы. (Предполагается, что DB2 - основная программ в системе.) Такая поддержка доступной при помощи Microsoft Address Windowing Extensions (AWE). AWE может использоваться с пулами буферов любого размера, но если вам нужно использовать AWE на пулах буферов большего размера, существуют другие рекомендуемые продукты Windows. Windows 2000 Advanced Server обеспечивает поддержку до 8 Гбайт памяти. Сервер Windows 2000 Data Center обеспечивает поддержку до 64 Гбайт памяти. Для поддержки пулов буферов AWE нужно правильно сконфигурировать DB2 и Windows 2000. Пул буферов, который будет использовать преимущества AWE, должен существовать в базе данных. Для выделения 3 Гбайт пользовательского пространства используйте опцию загрузки /3GB Windows 2000. Она допускает использование окна AWE больших размеров. Для доступа к объему памяти более 4 Гбайт через интерфейс памяти AWE используйте опцию загрузки /PAE Windows 2000. Чтобы убедиться, что опция загрузки выбрана правильно, выберите Управление -> Система а затем "Запуск и восстановление". В выпадающем списке можно увидеть доступные опции загрузки. Если нужная вам опция загрузки (/3GB или /PAE) выбрана, можно приступить к следующей задаче по установке поддержки AWE. Если желаемая вами опция загрузки недоступна для выбора, надо добавить эту опцию в файл boot.ini на системном диске. Файл boot.ini содержит список действий, которые нужно выполнить при запуске операционной системы. Добавьте /3GB или /PAE или обе опции (через пробел) в конце списка существующих параметров. Сохранив измененный файл, можно проверить и выбрать правильную опцию загрузки, как сказано выше. Кроме того, следует в Windows 2000 задать для пользователя, под именем которого установлена DB2, опцию "lock pages in memory"-right. Для этого надо зарегистрироваться в Windows 2000 как пользователь, установивший DB2, в меню Start (Пуск) в Windows 2000 выбрать папку "Administrative Tools" (Инструменты управления), а затем программу "Local Security Policy" (Локальная политика защиты). В этой программе можно выбрать назначение прав пользователей, установив "lock pages in memory"-right. Для DB2 требуется задать переменную реестра DB2_AWE. Чтобы правильно задать эту переменную реестра, нужно знать ID пула буферов, для которого вы хотите разрешить поддержку AWE. Кроме того, надо знать выделяемое число физических страниц и число страниц окна адресации. Число выделяемых физических страниц должно быть несколько меньше общего числа физических страниц. Фактическое выбранное число будет зависеть от рабочей среды. Например, для среды, где в системе используются только DB2 и программы баз данных, в качестве значения, используемого с переменной DB2_AWE, можно выбрать объем на 0,5 - 1 Гбайт меньше общего объема физических страниц. В случае среды, где системой используются программы, не относящиеся к базе данных, следует увеличить значение, вычитаемое из общего объема, предоставив большее количество физических страниц для этих других программ. Число, используемое в переменной реестра DB2_AWE - это число физических страниц, которые будут использоваться для поддержки AWE и DB2. Верхний предел для страниц окна адресации - 1,5 Гбайта (2,5 Гбайта, если используется опция загрузки Windows 2000 /3GB). Информацию о задании переменной реестра DB2 DB2_AWE смотрите ниже в этом разделе в "Приложении A. Переменные среды и реестра DB2", в таблице новых и измененных переменных реестра. 8.5.2 Управление несколькими пулами буферов базы данных В раздел "Управление несколькими пулами буферов базы данных" после абзаца, начинающегося с фразы "Разрабатывая базу данных, вы могли предпочесть таблицы с размером страниц 8 Кбайт", добавьте следующий абзац: При работе с Windows 2000 переменную реестра DB2_AWE можно использоваться для переопределения параметров пула буферов в файлах каталога и конфигурации. Использование этой переменной реестра позволяет увеличить размеры пула буферов примерно до 64 Гбайт. В этом же разделе замените абзац непосредственно перед этим примечанием на следующий: Запустить менеджер баз данных с минимальными значениями размеров можно для того, чтобы соединиться с базой данных. После этого можно изменить конфигурацию размеров пула буферов или выполнить другие срочные задачи, чтобы перезапустить базу данных с правильными размерами пула буферов. Не стоит длительное время использовать базу данных в таком состоянии. В разделе "Реорганизация каталогов и таблиц пользователя" последнее предложение (с коротким списком) абзаца, начинающегося с фразы "Утилита REORG позволяет задать временное табличное пространство...", можно заменить следующим: Использовать то же табличное пространство быстрее, однако это приводит к большему объему записи в журнал и требует достаточного места для реорганизованной таблицы. Если вы задаете временное табличное пространство, обычно рекомендуется задать временное табличное пространство SMS. Временное табличное пространство DMS не рекомендуется, поскольку при использовании этого типа табличного пространства может выполняться только программа REORG. В раздел "Расширение памяти" добавьте после третьего абзаца следующий абзац: При выделении пула буферов Windows 2000 Address Windowing Extensions (AWE) с использованием переменной реестра DB2_AWE кэш расширенной памяти использоваться не может. 8.6 Глава 9. Использование утилиты ограничения ресурсов В разделе "Создание файла конфигурации распорядителя" первое предложение в первом абзаце после обсуждения действия планирования следует заменить следующим: Если к программе применимы несколько правил, применяются все правила. В зависимости от правила и устанавливаемых пределов, первым применяется действие, связанное с первым встреченным пределом. 8.7 Глава 13. Конфигурирование DB2 Нужно изменить описания следующих параметров: 8.7.1 Размер кучи сортировки (sortheap) Изменен раздел "Рекомендации". Он должен содержать следующую информацию: При работе с кучей сортировки нужно учитывать следующее: Выбор подходящих индексов может минимизировать использование кучи сортировки. Буферы хеш-объединений и динамические битовые образы (используемые для операций AND для индексов и для объединений типа "звезда") используют память кучи сортировки. Если используются эти техники, увеличьте размер этого параметра. Увеличьте размер этого параметра, если часто требуются сортировки большого объема данных. ... (остальной текст остался без изменений) 8.7.2 Порог кучи сортировки (sheapthres) Изменен второй с конца абзац в описании этого параметра. Этот абзац должен выглядеть так: Примеры операций, использующих кучу сортировки: сортировки, динамические битовые образы (используемые для операций AND для индексов и для объединений типа "звезда") и операции, в которых таблицы находятся в памяти. К описанию этого параметра надо добавить следующую информацию: Не нужно увеличивать значение этого параметра при переходе из одноузловой среды в многоузловую. Если параметры конфигурации базы данных и менеджера баз данных настроены в одноузловой среде (в DB2 EE), в большинстве случаев эти же параметры дадут хорошие результаты в многоузловой среде (в DB2 EEE). Поскольку параметр порога кучи сортировки является параметром конфигурации менеджера баз данных, он применяется для всего экземпляра DB2. Единственный способ задать для этого параметра различные значения на разных узлах или разделах - создать несколько экземпляров DB2. При этом на разных группах узлов должны быть разные базы данных DB2. Такое решение делает бессмысленными многие преимущества среды многораздельных баз данных. 8.7.3 Максимальный процент списка блокировок перед расширением (maxlocks) Следующее изменение надо внести в раздел Рекомендация описания параметра конфигурации базы данных "Максимальный процент списка блокировок перед расширением (maxlocks)". Рекомендация: Следующая формула позволяет настроить параметр maxlocks, чтобы разрешить программе удерживать число блокировок в два раза больше среднего: maxlocks = 2 * 100 / maxappls Где 2 увеличивает среднее значение в два раза, а 100 - наибольший допустимый процент. Если параллельно работают всего несколько программ, вместо первой формулы можно использовать такую: maxlocks = 2 * 100 / (среднее число программ, работающих параллельно) Одна из особенностей настройки параметра maxlocks: его следует конфигурировать совместно с размером списка блокировок (locklist). Фактическое предельное число блокировок, удерживаемых программой перед расширением блокировок: maxlocks * locklist * 4096 / (100 * 36) Где 4096 - число байтов на странице, 100 - наибольший процент, допустимый для maxlocks и 36 - число байтов на блокировку. Если вы знаете, что одна из программ требует 1000 блокировок, и не хотите, чтобы произошло расширение блокировок, выберите в этой формуле значения для maxlocks и locklist так, чтобы результат был больше 1000. (Задав в этой формуле для maxlocks 10, а для locklist 100, в результате вы получите больше 1000 необходимых блокировок.) Если для maxlocks установить слишком низкое значение, расширение блокировок произойдет, когда для других параллельных программ все еще будет оставаться достаточно пространства блокировок. Если для maxlocks установить слишком высокое значение, большую часть пространства блокировок могут задействовать несколько программ, и расширение блокировок придется выполнять другим программам. Такая потребность в расширении блокировок приводит в этом случае к плохому параллелизму. Для отслеживания и настройки этого параметра конфигурации можно использовать системный монитор баз данных. 8.7.4 Конфигурирование для DB2/Менеджера связей данных DB2 интервала истечения срока маркера доступа к связям данных dl_expint Вопреки документации, если для dl_expint устанавливается значение "-1", срок маркера управления доступом истекает. Обходной прием - задать для dl_expint максимальное значение 31536000 (секунд). Это соответствует сроку истечения 1 год, чего должно хватить для всех программ. 8.7.5 Параметр конфигурации базы данных MIN_DEC_DIV_3 Добавление параметра конфигурации базы данных MIN_DEC_DIV_3 дает быстрый способ изменить вычисление масштаба десятичного деления в SQL. Для MIN_DEC_DIV_3 можно задать значения YES или NO. Значение по умолчанию для MIN_DEC_DIV_3 - NO. Параметр конфигурации базы данных MIN_DEC_DIV_3 изменяет масштаб результата десятичной арифметической операции, где используется деление. Если задано значение NO, масштаб вычисляется как 31-p+s-s'. Дополнительную информацию смотрите в справочнике SQL Reference, Глава 3, "Decimal Arithmetic in SQL". Если задано значение YES, масштаб вычисляется как MAX(3, 31-p+s-s'). Это приводит к тому, что результат десятичного деления всегда имеет масштаб как минимум 3. Точность всегда равна 31. Изменение этого параметра конфигурации базы данных может привести к изменениям в программах для существующих баз данных. Это может произойти, если изменение этого параметра конфигурации базы данных повлияет на полученный при десятичном делении масштаб. Ниже приведены некоторые возможные сценарии, которые могут влиять на программы. Эти сценарии следует учесть перед изменением параметра MIN_DEC_DIV_3 на сервере баз данных с действующими базами данных. При изменении масштаба результата одного из столбцов производной таблицы, которая определяется в среде с такой конфигурацией, при обращении к этой производной таблице после изменения данного параметра конфигурации базы данных может случиться ошибка с SQLCODE -344. Сообщение SQL0344N относится к рекурсивным общим табличным выражениям, однако если именем объекта (первый маркер) является производная таблица, чтобы избежать этой ошибки, вам необходимо отбросить эту производную таблицу и создать ее заново. Поведение статического пакета не изменится, пока не связать его повторно, неявно или явно. Например, после изменения значения с NO на YES дополнительные разряды масштаба не будут включены в результаты, пока не будет выполнено повторное связывание. Чтобы провести повторное связывание принудительно для любых измененных статических пакетов, можно воспользоваться явной командой повторного связывания. Проверочное ограничение, в котором используется десятичное деление, может отклонить некоторые значения, допустимые ранее. Такие строки будут теперь нарушать ограничение, но они не будут обнаружены, пока не изменится один из столбцов, участвующих в строке проверочного ограничения, или не будет выполнена команда SET INTEGRITY с опцией IMMEDIATE CHECKED. Для принудительной проверки такого ограничения выполните команду ALTER TABLE, чтобы отбросить проверочное ограничение, а затем снова добавьте это ограничение, выполнив команду ALTER TABLE еще раз. Прим.:В DB2 Версии 7 действуют также следующие ограничения: Параметр MIN_DEC_DIV_3 не выводится командой GET DB CFG FOR DBNAME. Лучший способ узнать текущее значение - посмотреть побочный эффект результата десятичного деления. Например, рассмотрим следующий оператор: VALUES (DEC(1,31,0)/DEC(1,31,5)) Если этот оператор возвращает sqlcode SQL0419N, база данных не поддерживает параметр MIN_DEC_DIV_3, или для него установлено значение OFF. Если данный оператор возвращает 1,000, для параметра MIN_DEC_DIV_3 установлено значение ON. Если ввести приведенную ниже команду, параметр MIN_DEC_DIV_3 в списке ключевых слов конфигурации не выводится: ? UPDATE DB CFG 8.7.6 Размер кучи управления программами (app_ctl_heap_sz) Текст для этого параметра теперь следует читать так: Для многораздельных и однораздельных баз данных с включенным внутренним параллелизмом (intra_parallel=ON) это размер совместно используемой области памяти, выделенной для кучи управления программами. Для однораздельных баз данных, где внутренний параллелизм отключен (intra_parallel=OFF), это максимальная собственная память, которая будет выделена для кучи. На каждое соединение раздела существует одна куча управления программами. Куча управления программами требуется, прежде всего, для совместного использования информации между агентами, работающими для одного запроса, а в среде многораздельных баз данных - для хранения выполняемых разделов, представляющих операторы SQL. Использование этой кучи минимально в однораздельных базах данных, где выполняются запросы со степенью параллелизма меньше либо равной 1. Эта куча служит также для хранения информации дескриптора для объявленных временных таблиц. Информация дескриптора для всех объявленных временных таблиц, которые не были явным образом отброшены, сохраняется в памяти этой кучи и не может быть отброшена, пока не отброшена объявленная временная таблица. Часть "Рекомендация" осталась без изменений. 8.7.7 Размер кучи системного монитора базы данных (mon_heap_sz) Значение по умолчанию для сервера баз данных OS/2 и Windows NT с локальными и удаленными клиентами и для сервера баз данных Satellite с локальными клиентами изменилось с 24 на 32. Диапазон значений остался прежним. 8.7.8 Максимальное число активных прикладных программ (maxappls) Верхний предел диапазона для всех платформ изменился с 64000 на 60000. Значение по умолчанию осталось прежним. 8.7.9 Диапазон восстановления и интервал мягких контрольных точек (softmax) Единицей измерения теперь служат проценты от размера одного первичного файла журнала. 8.7.10 Разрешить отслеживание измененных страниц (trackmod) Тип конфигурации: База данных Тип параметра: Конфигурируемый Значение по умолчанию [Диапазон]: Off [ On; Off ] Если для этого параметра установить значение ON, менеджер баз данных будет отслеживать страницы в базе данных, измененные со времени создания самой последней полной резервной копии. Это позволяет утилите резервного копирования определить, какие страницы следует включить в инкрементную резервную копию, не проверяя каждую страницу отдельно. Для табличных пространств SMS уровень такого отслеживания - табличное пространство. Для табличных пространств DMS уровень отслеживания - экстент для страниц данных и страниц индексов, и табличное пространство - для других типов страниц. После установки для этого параметра значения ON нужно создать резервную копию базы данных, чтобы иметь основу для инкрементных резервных копий. 8.7.11 Изменить путь журнала базы данных (newlogpath) Тип конфигурации: База данных Тип параметра: Конфигурируемый Значение по умолчанию [Диапазон]: Null [любой допустимый путь или устройство] Параметры, связанные с данным: Положение файлов журнала (logpath); Согласованность базы данных (database_consistent) В этом параметре можно задать строку длиной до 242 байтов, чтобы изменить место хранения файлов журнала. Строка может задавать как путь, так и непосредственное устройство. Если в строке задается путь, он должен быть полным, а не относительным. Прим.:В среде многораздельных баз данных к пути автоматически добавляется номер узла. Это делается для сохранения единого пути в нескольких конфигурациях логических узлов. Чтобы задать устройство, введите строку, которую операционная система распознает в качестве устройства. Например, в Windows NT - \\.\d: или \\.\PhysicalDisk5 Прим.:Чтобы была возможность записи журналов на устройство, надо использовать Windows NT Версии 4.0 с Service Pack 3. Для платформ на основе UNIX - /dev/rdblog8 Прим.:Устройство можно задать только на платформах AIX, Windows 2000, Windows NT, Solaris, HP-UX, NUMA-Q и Linux. Новая установка не станет значением для logpath, пока не выполнены два условия: База данных должна находиться в согласованном состоянии, что указывается параметром database_consistent. Все пользователи должны отсоединиться от базы данных. После установки с базой данных первого нового соединения менеджер баз данных переместит журналы в новое место, заданное параметром logpath. На прежнем месте могут остаться файлы журнала. Эти файлы могут быть еще не заархивированы. Их может понадобиться архивировать вручную. Кроме того, если для этой базы данных вы запускаете репликацию, для нее могут понадобиться файлы журнала, записанные до изменения пути. Если при конфигурировании базы данных для ее параметра конфигурации Включить обработчик пользователя (userexit) было установлено значение "Yes", а все файлы журнала архивировались либо автоматически DB2, либо вами вручную, у DB2 есть возможность получить файлы журнала для процесса репликации. В противном случае можно скопировать эти файлы из старого пути в новый. Рекомендация:Желательно поместить файлы журнала на физический диск, с которым не идут интенсивные операции ввода-вывода. Например, не помещайте журналы на диск, где расположена операционная система или базы данных большого объема. Это позволит эффективно вести запись при минимальных расходах, таких как ожидание ввода-вывода. Чтобы отследить число операций ввода-вывода, относящихся к журналам базы данных, можно воспользоваться системным монитором базы данных. Дополнительную информацию смотрите в справочном руководстве System Monitor Guide and Reference, в описаниях для следующих элементов монитора: log_reads (число прочитанных страниц журнала) log_writes (число записанных страниц журнала) Эти элементы данных возвращают показатели активности ввода-вывода, связанной с регистрацией в журналах базы данных. Можно воспользоваться средствами монитора операционной системы для сбора информации о других дисковых операциях ввода-вывода, а затем сравнить результаты, полученные для этих видов операций. 8.7.12 Положение файлов журналов (logpath) Тип конфигурации: База данных Тип параметра: Информационный Параметры, связанные с данным: Изменить путь журнала для базы данных (newlogpath) Этот параметр содержит текущий путь для журналов регистрации. Этот параметр нельзя изменить непосредственно, так как он задается менеджером баз данных после того, как вступает в действие изменение для параметра newlogpath. После создания базы данных для нее создается файл журнала восстановления в подкаталоге каталога, содержащего эту базу данных. По умолчанию используется подкаталог SQLOGDIR в каталоге, созданном для этой базы данных. 8.7.13 Максимальная память для списка блокировок (locklist) Максимальное значение увеличено с 60000 до 524288. 8.8 Приложение A. Переменные реестра DB2 и переменные среды Следующие переменные реестра являются новыми или требуют изменения: 8.8.1 Таблица новых и измененных переменных реестра Табл. 6. Переменные реестра Имя переменной Операционная система Значения Описание DB2MAXFSCRSEARCH Все По умолчанию=5 Значения: -1, от 1 до 33554 Задает число записей управления свободным пространством, которые ищутся при добавлении записи в таблицу. Значение по умолчанию - искать пять записей управления свободным пространством. Изменяя это значение, можно улучшить скорость операций вставки за счет повторного использования пространства или наоборот. Используйте большие значения, чтобы улучшить повторное использование пространства. Используйте небольшие значения, чтобы улучшить скорость операций вставки. Если задано значение -1, менеджер баз данных будет искать все записи управления свободным пространством. DLFM_TSM_MGMTCLASS AIX, Windows NT, Solaris По умолчанию: класс управления TSM по умолчанию Значения: любой допустимый класс управления TSM Задает класс управления TSM, который должен использоваться для архивирования и получения связанных файлов. Если значение этой переменной не задано, используется класс управления TSM по умолчанию. DB2_CORRELATED_PREDICATES Все По умолчанию: YES Значения: YES или NO Значение по умолчанию для этой переменной - YES. Если по соответствующим столбцам в объединении существуют индексы уникальности, и для этой переменной реестра задано значение YES, оптимизатор пытается выявить и компенсировать корреляцию предикатов объединения. Если для этой переменной реестра задано значение YES, оптимизатор использует информацию KEYCARD статистики индексов уникальности, чтобы выявить случаи корреляции, и динамически настраивает совместную избирательность коррелирующих предикатов, таким образом получая более точную оценку размера и стоимости объединения. DB2_VI_DEVICE Windows NT По умолчанию=null Значения: nic0 или VINIC Задает символическое имя устройства или Virtual Interface Provider Instance, связанного с платой сетевого интерфейса Network Interface Card (NIC). Все независимые производители оборудования (Independent hardware vendors, IHV) производят собственные NIC. На одном компьютере Windows NT можно установить только одну (1) NIC; несколько логических узлов на одном физическом компьютере будут совместно использовать одну и ту же NIC. Символическое имя устройства "VINIC" должно задаваться в верхнем регистре; его можно использовать только для соединений Synfinity. Для всех других поддерживаемых в настоящее время реализаций используйте в качестве символического имени устройства имя "nic0". DB2_SELECTIVITY Все По умолчанию=NO Значения: YES или NO Эта переменная реестра управляет тем, где может использоваться условие SELECTIVITY. Подробности об условии SELECTIVITY смотрите в разделе Language Elements, Search Conditions справочника SQL Reference. Если эта переменная реестра имеет значение YES, условие SELECTIVITY можно указывать для базового предиката, по крайней мере одно из выражений которого содержит переменные хоста. DB2_UPDATE_PART_KEY Все По умолчанию: YES Значения: YES или NO Для пакета исправлений FixPak 3 и новее значение по умолчанию - YES. Эта переменная реестра задает, разрешено или нет изменение ключа разделения. DB2_BLOCK_ON_LOG_DISK_FULL Все По умолчанию=NO Значения: YES или NO С помощью этой переменной реестра DB2 можно предотвратить генерирование сообщений об ошибках заполнения диска ("disk full"), когда DB2 не может создать новый файл журнала по действующему пути журналов. Вместо этого DB2 будет пытаться создавать файл журнала каждые 5 минут, пока операция не завершится успешно. После каждой попытки DB2 записывает сообщение в файл db2diag.log. Единственный способ убедиться, что программа зависает из-за переполнения диска - это следить за файлом db2diag.log. Пока файл журнала не будет создан успешно, ни одна пользовательская программа, пытающаяся изменить табличные данные, не сможет осуществить принятие транзакций. На запросы только для чтения нельзя воздействовать непосредственно, однако если запросу нужен доступ к данным, которые блокируются требованием изменения или к странице данных которая исправляется в пуле буферов изменяющей программой, запросы только для чтения, скорее всего, также зависнут. DB2_INDEX_2BYTEVARLEN Все По умолчанию=NO Значения: YES или NO Эта переменная реестра позволяет задавать в качестве части ключа индекса столбцы длиной более 255 байт. У индексов, созданных до задания для этой переменной реестра значения YES, для ключей по-прежнему останется предельное ограничение 255. Индексы, созданные после задания для данной переменной реестра значения YES, будут вести себя как двухбайтные индексы, если для этой переменной реестра вновь задать значение NO. Изменения для этой переменной реестра влияют на несколько операторов SQL, в том числе CREATE TABLE, CREATE INDEX и ALTER TABLE. Дополнительную информацию об этих операторах смотрите в изменениях для справочника SQL Reference. DB2_FORCE_FCM_BP AIX По умолчанию=NO Значения: YES или NO Задает, откуда выделяются ресурсы менеджера FCM. Его ресурсы могут выделяться либо из сегмента совместно используемой памяти менеджера баз данных, либо из отдельного сегмента. Эту переменную реестра следует использовать, если на одном компьютере есть несколько логических узлов. В системе многораздельной базы данных с разрешенной симметричной многопроцессорной обработкой (SMP) значение этой переменной среды реестра не влияет на установление связи. В этом случае связь всегда осуществляется через совместно используемую память. Однако от этой переменной зависит число сегментов совместно используемой памяти, которое будет использовать DB2. DB2_AWE Windows 2000 По умолчанию: Null Значения: <запись>[; <запись>;...], где <запись>=, <число физических страниц>, <число окон адресации> Позволяет DB2 UDB в Windows 2000 выделять пулы буферов, где используется до 64 Гбайт памяти. Для поддержки пулов буферов Address Windowing Extensions (AWE) нужно правильно сконфигурировать Windows 2000. Надо установить для данного пользователя в Windows 2000 "lock pages in memory"-right, и задать эту переменную реестра в DB2. При задании этой переменной нужно знать ID пула буферов, который будет использоваться для поддержки AWE. Кроме того, надо определить выделяемое число физических страниц и число окон адресации. Информацию об определении числа выделяемых физических страниц и числа окон адресации смотрите выше в данном документе: "Глава 8. Производительность работы", раздел "Управление пулом буферов базы данных". Прим.:Если поддержка AWE включена, расширенная память (ESTORE) не может использоваться ни для каких пулов буферов в базе данных. Пулы буферов, на которые действует эта переменная, должны уже существовать в SYSIBM.SYSBUFFERPOOLS. DB2_STPROC_LOCKUP_FIRST Все По умолчанию=NO Значения: YES или NO Эта переменная реестра раньше называлась DB2_DARI_LOOKUP_ALL. DB2MEMDISCLAIM AIX По умолчанию: YES Значения: YES или NO В AIX память, используемая процессами DB2, может иметь некоторое связанное пространство подкачки. Это пространство подкачки может оставаться зарезервированным, даже если была освобождена связанная с ним память. Резервирование пространства подкачки зависит от правил управления выделением настраиваемой виртуальной памяти системы AIX. Эта переменная реестра задает, будут ли агенты DB2 явно требовать, чтобы AIX отсоединяла зарезервированное пространство подкачки от освобожденной памяти. Значение "YES" предполагает меньшие требования к пространству подкачки и возможно меньшую активность диска, связанную с подкачкой. Значение "NO" предполагает большие требования к пространству подкачки и возможно большую активность диска, связанную с подкачкой. В некоторых ситуациях, например, при избыточном пространстве подкачки и избыточной реальной памяти, где подкачки никогда не происходит, значение NO обеспечит небольшое улучшение производительности. DB2MEMMAXFREE Все По умолчанию: 8388608 байт Значения: от 0 до 232-1 байт Эта переменная реестра управляет максимальным объемом неиспользуемой памяти в байтах, сохраняемой процессами DB2. DB2_ANTIJOIN Все По умолчанию: NO - в среде EEE По умолчанию: YES - в других средах (не EEE) Значения: YES или NO Для сред DB2 Universal Database EEE: Если задать YES, оптимизатор будет искать возможности преобразования подзапросов NOT EXISTS в антиобъединения, которые DB2 может обрабатывать более эффективно. Для других сред (не EEE): Если задать NO, оптимизатор ограничит возможности преобразования подзапросов NOT EXISTS в антиобъединения. NEWLOGPATH2 UNIX По умолчанию=NO Значения: YES или NO Этот параметр позволяет задать, будет ли использоваться второй путь для реализации двойной регистрации в журналах. Путь, который будет использоваться, генерируется добавлением символа '2' к текущему значению 'LOGPATH'. DB2DOMAINLIST Windows NT По умолчанию: Null Значения: один или несколько допустимых доменов Windows NT (через запятую) Определяет один или несколько доменов Windows NT. Требования на соединение или подключение будут приниматься только от пользователей, принадлежащих этим доменам. Эту переменную реестра следует использовать только в чистой среде доменов Windows NT с серверами DB2 и клиентами, где запускается DB2 Universal Database Версии 7.1 (или новее). DB2_LIKE_VARCHAR Все По умолчанию: Y,N Значения: Y, N, S, константа с плавающей запятой от 0 до 6,2 Управляет собранием и использованием статистики подэлементов. Это статистика о содержимом данных в столбцах, когда структура данных имеет вид последовательностей подполей и подэлементов, разделенных пробелами. От этой переменной реестра зависит, как оптимизатор поступает с предикатом данной формы: COLUMN LIKE '%xxxxxx%' где xxxxxx - любая строка символов. Следующий синтаксис показывает, как используется эта переменная реестра: db2set DB2_LIKE_VARCHAR=[Y|N|S|num1] [,Y|N|S|num2] где Элемент перед запятой или единственный элемент справа от предиката означает следующее (только для столбцов без позитивной статистики подэлементов): S - Оптимизатор оценивает длину каждого элемента в сериях элементов, сочлененных в форме столбца на основе длины строки, заключенной в символы %. Y - Значение по умолчанию. Использовать для параметра алгоритма значение по умолчанию 1,9. Использовать с параметром алгоритма алгоритм подэлементов с переменной длиной. N - Использовать алгоритм подэлементов с постоянной длиной. num1 - Использовать num1 в качестве параметра алгоритма с алгоритмом подэлементов с переменной длиной. Элемент после запятой означает следующее: N - Значение по умолчанию. Не собирать статистику использования подэлементов. Y - Собирать статистику подэлементов. Использовать алгоритм подэлементов с переменной длиной, использующий собранную статистику совместно со значением по умолчанию 1,9 для параметра алгоритма в случае столбцов с позитивной статистикой подэлементов. num2 - Собирать статистику подэлементов. Использовать алгоритм подэлементов с переменной длиной, использующий собранную статистику совместно со значением num2 в качестве параметра алгоритма для столбцов с позитивной статистикой подэлементов. DB2_PINNED_BP AIX, HP-UX По умолчанию=NO Значения: YES или NO Эта переменная используется для хранения глобальной памяти базы данных (включая пулы буферов), связанной с базой данных, в главной памяти на нескольких операционных системах AIX. Хранение этой глобальной памяти базы данных в главной памяти системы позволяет улучшить производительность базы данных. Если бы, например, пул буферов сбрасывался из главной памяти системы на диск, производительность базы данных снизилась бы. Сокращение дискового ввода-вывода, когда пулы буферов размещаются в памяти системы, улучшает производительность базы данных. Если есть другие программы, которым требуется больший объем главной памяти, можно разрешить программам использование глобальной памяти базы данных с подкачкой из главной памяти в зависимости от требований к главной памяти системы. При работе с HP-UX в 64-битной среде, кроме изменения этой переменной реестра, нужно также предоставить привилегию MLOCK группе экземпляра DB2. Для этого пользователь с правами доступа ROOT должен выполнить следующее: Добавить группу экземпляра DB2 в файл /etc/privgroup. Например, если группа экземпляра DB2 принадлежит группе db2iadm1, в файл /etc/privgroup надо добавить следующую строку: db2iadm1 MLOCK Выполнить следующую команду: setprivgrp -f /etc/privgroup DB2_RR_TO_RS Все По умолчанию=NO Значения: YES или NO Блокировка следующего ключа гарантирует уровень изоляции Многократное чтение (RR), автоматически блокируя следующий ключ для всех операторов INSERT и DELETE и следующее большее значение ключа для набора результатов для операторов SELECT. Для операторов UPDATE, которые изменяют части ключей в индексе, исходное значение ключа удаляется, а новое значение - вставляется. Блокировка следующего значения при этом производится и для вставки ключа, и для удаления ключа. Блокировка следующего ключа требуется для обеспечения стандартного многократного чтения ANSI и SQL92 и используется в DB2 по умолчанию. Если ваша программа останавливается или зависает, надо проверить информацию снимка для нее. Если есть подозрение, что проблема связана с блокировкой следующего ключа, можно включить переменную реестра DB2_RR_TO_RS, принимая во внимание следующие условия. Переменную DB2_RR_TO_RS можно включить, если никакие программы не полагаются на эффекты многократного чтения(RR) и если при просмотре приемлем пропуск непринятых удалений. Такой пропуск повлияет на уровни изоляции Многократное чтение (RR), Стабильность чтения (RS) и Стабильность на уровне указателя (CS). (Для уровня изоляции Чтение непринятого (UR) блокировка строк не используется.) Если переменная DB2_RR_TO_RS включена, поведение RR при просмотре не может быть гарантировано, поскольку при вставке и удалении ключей индекса блокировка следующего ключа не выполняется. На таблицы каталогов эта опция не влияет. Другой эффект включения переменной DB2_RR_TO_RS - пропуск при просмотре удаленных, но непринятых строк, даже если эти строки могут быть отобраны для просмотра. 8.9 Приложение C. Средства объяснения SQL Последний абзац в разделе "Выполнение db2expln и dynexpln" нужно заменить на: Чтобы запустить db2expln, требуется привилегия SELECT для производных таблиц системного каталога и полномочия EXECUTE для пакета db2expln. Для выполнения dynexpln необходимо иметь полномочия BINDADD для базы данных, используемая для соединения с базой данных схема должна существовать или вы должны иметь полномочия EXPLICIT_SCHEMA для этой базы данных, а все привилегии, необходимые для объяснения этих операторов SQL. (Заметим, что все нужные уровни авторизации можно получить вместе с полномочиями SYSADM или DBADM автоматически.) Administering Satellites Guide and Reference 9.1 Настройка Версии 7.2 DB2 Personal Edition и DB2 Workgroup Edition в качестве сателлитов В следующих разделах описывается настройка систем DB2 Personal Edition и DB2 Workgroup Edition Версии 7.2 на платформе Windows для их использования в качестве полнофункциональных сателлитов в среде сателлитов. Информацию о терминах и понятиях, используемых в следующем описании, смотрите в книге Administering Satellites Guide and Reference. Эту книгу можно найти по адресу: http://www-4.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/ v6pubs.d2w/en_main Технические замечания, дополняющие информацию из книги Administering Satellites Guide and Reference, можно найти по адресу: http://www-4.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/browse.d2w/ report?type=tech5udb&tech5udb=Y 9.1.1 Предварительные требования Для установки DB2 Personal Edition или DB2 Workgroup Edition в качестве сателлитов необходимы: Сервер управления DB2 Сервер управления DB2 - это система DB2 Enterprise Edition, работающая в Windows NT или AIX, в которой установлен компонент Сервер управления. Используемая система DB2 Enterprise Edition должна быть Версии 6 с FixPak 2 или новее, или же Версией 7 с любым уровнем FixPak. Если вы хотите использовать в качестве сервера управления DB2 система Enterprise Edition Версии 6, смотрите раздел 9.1.3, Установка FixPak 2 или новее в систему Версии 6 Enterprise Edition. Если вы используете Версию 7, но у вас не установлен компонент Сервер управления, установите этот компонент, повторно установите все ранее установленные FixPak и создайте экземпляр сервера управления DB2 и базу данных управления сателлитами. Инструкции по их созданию смотрите в книге Administering Satellites Guide and Reference. Прим.:Если вы устанавливаете систему Версии 7.2 Enterprise Edition на платформе Windows NT для применения в качестве сервера управления DB2 и при этом хотите использовать файл ответов, смотрите информацию о ключевых словах файла ответов в технических замечаниях под заголовком DB2 Control Server Response File Keywords. Экземпляр сервера управления DB2 и базу данных управления сателлитами Экземпляр сервера управления DB2 обычно называется DB2CTLSV, а база данных управления сателлитами - SATCTLDB. Экземпляр сервера управления DB2 и база данных управления сателлитами находятся в системе Enterprise Edition; в Windows NT они автоматически создаются при установке DB2 с компонентом Сервер управления. Для DB2 в AIX информацию о создании экземпляра сервера управления DB2 и базы данных управления сателлитами смотрите в книге Administering Satellites Guide and Reference. Центр управления сателлитами Центр управления сателлитами - это набор графических средств, используемых при настройке среды сателлитов и управлении ей. Для доступа к этому набору средств используется Центр управления. Дополнительную информацию о Центре управления сателлитами смотрите в книге Administering Satellites Guide and Reference и в электронной справке по Центру управления сателлитами. Если вы используете Центр управления Версии 6, смотрите раздел 9.1.4, Обновление Центра управления и Центра управления сателлитами Версии 6. Если вы еще не пользовались Центром управления сателлитами для настройки среды сателлитов и для создания объекта, обозначающего в Центре управления сателлитами новый сателлит, это необходимо сделать до установки сателлита. Дополнительную информацию смотрите в описании настройки и проверки среды сателлитов в книге Administering Satellites Guide and Reference. Система Версии 7.2 Personal Edition или Workgroup Edition, которую нужно использовать в качестве сателлита. 9.1.1.1 Особенности установки При установке и DB2 Personal Edition, и DB2 Workgroup Edition для того, чтобы система могла участвовать в синхронизации, не нужно выбирать никаких специальных компонентов. Если вы хотите провести установку при помощи файла ответов, смотрите ключевые слова, задаваемые при установке системы Версии 7.2, в разделе Установка при помощи файла ответов. Если вы проводите интерактивную установку системы Версии 7.2, после установки DB2 смотрите в разделе 9.1.2, Конфигурирование системы Версии 7.2 для синхронизации значения, которые нужно задать в системе Версии 7.2, чтобы система могла участвовать в синхронизации. Установка при помощи файла ответов Если вы проводите установку Версии 7.2 DB2 Personal Edition или DB2 Workgroup Edition, в файле ответов можно задать следующие ключевые слова. Если вы решите не задавать при установке при помощи файла ответов одно или несколько из этих ключевых слов, смотрите в разделе 9.1.2, Конфигурирование системы Версии 7.2 для синхронизации дополнительные шаги, которые нужно выполнить после установки DB2, чтобы система Версии 7.2 могла участвовать в синхронизации. При помощи инструкций в этом разделе можно также изменить какие-либо значения, указанные во время установки при помощи файла ответов. db2.db2satelliteid Задает ID сателлита для системы. Прим.:Если это ключевое слово не задано, по умолчанию ID сателлита - это ID пользователя, под которым проходила установка DB2. Если в качестве ID сателлита вы хотите использовать этот ID пользователя, значение этого ключевого слова задавать необязательно. db2.db2satelliteappver Задает версию прикладной программы для системы. Прим.:Если это ключевое слово не задано, по умолчанию версия прикладной программы на сателлите равна V1R0M00. Если в качестве версии прикладной программы нужно использовать это значение, значение этого ключевого слова задавать необязательно. db2.satctldb_username Задает имя пользователя, которое система будет использовать для соединения с базой данных управления сателлитами. db2.satctldb_password Задает пароль, который данное имя пользователя передает серверу управления DB2 при соединении имени пользователя с базой данных управления сателлитами. После завершения установки при помощи файла ответов система Версии 7.2 готова участвовать в синхронизации. На сателлите нужно выполнить команду db2sync -t, чтобы убедиться, что для сателлита заданы правильные значения и что он может соединиться с базой данных управления сателлитами. Дополнительную информацию о проведении установки при помощи файла ответов смотрите в разделе Administering Satellites Guide and Reference. Примечания: В Версии 7 на платформах Windows NT и Windows 2000 для создания всех служб необходимы ID пользователей и пароли. Эти ID пользователей и пароли задаются в файле ответов как пары ключевых слов. Первая пара ключевых слов, найденная в файле ответов, становится ID пользователя и паролем по умолчанию для всех служб, если для отдельных служб не указаны отдельные пары ключевых слов, заменяющие значения по умолчанию. В Версии 6, чтобы задать ID пользователя и пароль, используемые Службой удаленных команд, во время установки DB2 Satellite Edition при помощи файла ответов можно задать ключевые слова admin.userid и admin.password. В Версии 7.2 Personal Edition и Workgroup Edition, если задать эти ключевые слова, они используются для экземпляра DB2DAS00 в системе Версии 7.2. Для системы DB2 Версии 7.2 Служба удаленных команд будет использовать ID пользователя и пароль, используемые экземпляром DB2 в данной системе. Если значения ключевых слов db2.userid и db2.password не заданы, по умолчанию используется правило, описанное выше. В Версии 6 при установке DB2 Satellite Edition при помощи файла ответов можно было создать базу данных. При установке при помощи файла ответов системы Версии 7.2 Personal Edition или Workgroup Edition, которую нужно использовать в качестве сателлита, создать базу данных нельзя. Не поддерживаются следующие ключевые слова (описанные в книге Administering Satellites Guide and Reference): db2.userdb_name db2.userdb_recoverable db2.userdb_rep_src 9.1.2 Конфигурирование системы Версии 7.2 для синхронизации При интерактивной установке системы Версии 7.2 после установки в системе DB2 Personal Edition или DB2 Workgroup Edition нужно задать некоторые значения, чтобы система могла участвовать в синхронизации. Прим.:Для установки всех значений на сателлите, кроме ID пользователя и пароля, используемых сателлитом при соединении с базой данных управления сателлитами (смотрите шаг 4), можно использовать сценарий операционной системы. Задайте ID сателлита при помощи команды db2set. При интерактивной установке DB2 Personal Edition или DB2 Workgroup Edition по умолчанию в качестве ID сателлита выбирается ID пользователя, под которым проходила установка DB2. Если в качестве ID сателлита вы хотите использовать этот ID пользователя, значение этого ключевого слова задавать необязательно. Информацию о задании ID сателлита смотрите в книге Administering Satellites Guide and Reference. Задайте версию прикладной программы на сателлите при помощи команды db2sync -s. При интерактивной установке DB2 Personal Edition или DB2 Workgroup Edition по умолчанию задается версия прикладной программы сателлита V1R0M00. Если в качестве версии прикладной программы нужно использовать это значение, этот шаг выполнять необязательно. Текущее значение версии прикладной программы можно узнать на сателлите при помощи команды db2sync -g. Если это значение нужно изменить, введите команду db2sync -s. Вам будет предложено ввести новое значение для версии прикладной программы. Дополнительную информацию о задании версии прикладной программы смотрите в книге Administering Satellites Guide and Reference. Введите на сателлите команды catalog node и catalog database, чтобы внести в каталог на сателлите экземпляр сервера управления DB2 и базу данных управления сателлитами SATCTLDB. На сателлите можно также использовать команду db2sync -t, чтобы открыть прикладную программу Synchronizer DB2 в тестовом режиме. Если в момент ввода команды база данных SATCTLDB не внесена в каталог на сателлите, откроется окно Внести в каталог управляющую базу данных. Чтобы внести в каталог сервер управления DB2 и базу данных SATCTLDB, можно либо использовать функцию поиска DB2, доступную из окна Внести в каталог управляющую базу данных, либо ввести имя хоста и имя в этом окне. Вам предложат также указать ID пользователя и пароль, которые сателлит должен использовать при соединении с базой данных управления сателлитами, как описано в шаге 4. Прим.:После интерактивной установки Версии 7.2 DB2 Personal Edition или DB2 Workgroup Edition, в отличие от Версии 6 DB2 Satellite Edition, Synchronizer DB2 не запускается в тестовом режиме автоматически. Введите на сателлите команду db2sync -t, чтобы: Задать ID пользователя и пароль, которые сателлит должен использовать при соединении с базой данных управления сателлитами. Если параметры синхронизации еще не хранятся на сателлите, откроется окно Соединиться с управляющей базой данных. В этом окне нужно задать ID пользователя и пароль, которые сателлит должен использовать для соединения с базой данных управления сателлитами. Убедитесь, что на сателлите заданы правильные значения Убедитесь, что сателлит может соединиться с базой данных управления сателлитами После завершения этих задач по конфигурированию система Версии 7.2 готова участвовать в синхронизации. 9.1.3 Установка FixPak 2 или новее в систему Версии 6 Enterprise Edition В следующих разделах описываются действия, которые нужно выполнить, чтобы обновить систему Версии 6 Enterprise Edition на платформах Windows NT или AIX для использования в качестве сервера управления DB2. Если вы используете Центр управления Версии 6, выполните также шаги раздела 9.1.4, Обновление Центра управления и Центра управления сателлитами Версии 6, чтобы проверить, подходящий ли у вас уровень Центра управления и Центра управления сателлитами для управления средой сателлитов. 9.1.3.1 Обновление Версии 6 DB2 Enterprise Edition для использования в качестве сервера управления DB2 Чтобы систему DB2 Enterprise Edition Версии 6 можно было использовать в качестве сервера управления DB2, в ней должен быть установлен компонент Сервер управления, и служебный уровень DB2 Enterprise Edition должна быть FixPak 2 или новее. В зависимости от уровня службы DB2 Enterprise Edition и от того, установлен ли компонент сервера управления DB2, нужно выполнить одну из следующих задач: Установите компонент сервера управления DB2 в имеющуюся систему DB2 Enterprise Edition V6.1; установите также FixPak 2 или новее. Затем обновите в системе базу данных управления сателлитами (SATCTLDB). Обновите уже установленный сервер управления DB2 до уровня FixPak 2 или новее. Используйте следующую информацию, чтобы определить, какую из этих задач нужно выполнить, и какие шаги применимы к вашей ситуации. Вот сводка действий, которые нужно выполнить. Во-первых, выясните текущее состояние установки DB2 Enterprise Edition. Нужно выяснить, установлен ли компонент Сервер управления, а также уровень службы DB2. Во-вторых, на основе полученной вами информации определите, что нужно сделать. В-третьих, выполните действия, необходимые для обновления DB2 Enterprise Edition. Сервер управления DB2 работает только на DB2 Enterprise Edition для Windows NT и AIX. Перейдите к инструкциям, относящимся к вашей платформе: Обновление DB2 Enterprise Edition на платформе Windows NT Обновление DB2 Enterprise Edition в AIX Обновление DB2 Enterprise Edition на платформе Windows NT Используйте информацию в следующих разделах для определения текущего уровня службы вашей системы Версии 6 DB2 Enterprise Edition и того, какие шаги нужно предпринять для обновления системы до служебного уровня FixPak 2 или новее. Вам нужно выполнить шаги из одного или нескольких следующих разделов: Изучение системы DB2 Enterprise Edition на платформе Windows NT Определение необходимых действий Установка компонента Сервер управления в Windows NT Установка FixPak 2 или новее в Windows NT Обновление SATCTLDB в Windows NT Изучение системы DB2 Enterprise Edition на платформе Windows NT Если у вас на платформе Windows NT установлена DB2 Enterprise Edition, выполните следующие шаги: Проверьте, установлен ли компонент Сервер управления. При помощи редактора реестра regedit выведите список установленных компонентов: Введите в командной строке команду regedit. Проверьте, указан ли в ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\Components Сервер управления (Control Server). Если его нет, сервер управления не установлен. Определите служебный уровень DB2 Enterprise Edition. Введите в командной строке команду db2level. Вывод можно интерпретировать при помощи следующей таблицы: Значения ключевых полей в выводе db2level Система DB2 находится на уровне: Выпуск Уровень Элементы информации SQL06010 01010104 db2_v6, n990616 Базовая Версия 6.1 SQL06010 01020104 DB2 V6.1.0.1, n990824, WR21136 Версия 6.1 с FixPak 1 SQL06010 01030104 DB2 V6.1.0.6, s991030, WR21163 или DB2 V6.1.0.9, s000101, WR21173 Версия 6.1 с FixPak 2 Прим.:Если уровень больше, чем 01030104, служебный уровень системы новее FixPak 2. Запишите найденную информацию и переходите к разделу Определение необходимых действий. Определение необходимых действий Используя собранную информацию, найдите в следующей таблице строку, применимую к вашей ситуации, и выполните шаги, требуемые для подготовки системы DB2 Enterprise Edition к поддержке сервера управления DB2 на уровне FixPak 2 или новее. В разделах, следующих за таблицей, приводятся инструкции по выполнению требуемых действия. Советуем помечать выполненные действия в списке. Выполняйте только шаги, применимые к вашей ситуации. Установлен ли компонент Сервер управления Служебный уровень системы DB2 Enterprise Edition Шаги, требуемые для подготовки системы DB2 Enterprise Edition Нет Базовая Версия 6.1, Версия 6.1 с FixPak 1 или Версия 6.1 с FixPak 2 или новее Выполните следующие действия: Установка компонента Сервер управления в Windows NT Установка FixPak 2 или новее в Windows NT Обновление SATCTLDB в Windows NT Да Базовая Версия 6.1 или Версия 6.1 с FixPak 1 Выполните следующие действия: Установка FixPak 2 или новее в Windows NT Обновление SATCTLDB в Windows NT Да Версия 6.1 с FixPak 2 или новее Выполните следующее действие: Обновление SATCTLDB в Windows NT Установка компонента Сервер управления в Windows NT Чтобы установить компонент Сервер управления в Windows NT: Перед тем, как начать установку, убедитесь, что вся работа с базами данных в системе завершена. Вставьте в дисковод компакт-диск DB2 Universal Database Enterprise Edition Версия 6.1. Если программа установки не запускается автоматически, выполните команду setup в корневом каталоге компакт-диска, чтобы начать процесс установки. Когда вам будет это предложено, завершите все процессы, использующие DB2. В окне Добро пожаловать выберите Далее. В окне Выбор продуктов выберите DB2 Enterprise Edition. На панели Выбор типа установки выберите Пользовательская. На панели Выбор компонентов выберите компонент Сервер управления и нажмите кнопку Далее. Прим.:Если выбрать другие компоненты, еще не установленные в системе, эти компоненты тоже будут установлены. Диск и каталог установки DB2 изменить нельзя. На панелях Конфигурировать службы DB2 можно изменить значения протокола и опции запуска для экземпляра сервера управления или оставить значения по умолчанию. Либо измените значения по умолчанию и нажмите кнопку Далее, либо сразу нажмите кнопку Далее, чтобы оставить значения по умолчанию. Чтобы начать процесс установки, нажмите кнопку Далее в окне Начать копирование файлов. По завершении копирования файлов вам предлагается перезагрузить систему. Перезагрузитесь. Изменения, сделанные в системе для Сервера управления, не вступят в силу до перезагрузки системы. Если нужно локально использовать в данной системе Центр управления и Центр управления сателлитами, после завершения установки и перезагрузки системы нужно внести в каталог экземпляра DB2 базу данных управления сателлитами (SATCTLDB), созданную как часть установки Сервера управления. Чтобы внести базу данных SATCTLDB в каталог: Откройте командное окно DB2, выбрав Пуск>Программы>DB2 for Windows NT>Командное окно Убедитесь, что вы находитесь в экземпляре db2. Введите команду set и проверьте значение db2instance. Если оно не равно db2, выполните команду: set db2instance=db2 Внесите в каталог экземпляр db2ctlsv, введя команду: db2 catalog local node db2ctlsv instance db2ctlsv Внесите в каталог базу данных SATCTLDB, введя команду db2 catalog database satctldb at node db2ctlsv Выполните принятие операции внесения в каталог, введя команду: db2 terminate Закройте командное окно DB2. Установка FixPak 2 или новее в Windows NT Чтобы обновить имеющуюся систему Версии 6 DB2 Enterprise Edition на платформе Windows NT до уровня FixPak 2 или новее, выполните одно из следующих действий: Загрузите из Web последний FixPak для DB2 Enterprise Edition для Windows NT V6.1 вместе с прилагаемым файлом readme. Инструкция по загрузке FixPak находится по адресу: http://www-4.ibm.com/software/data/db2/db2tech/version61.html Чтобы установить FixPak, следуйте инструкциям в файле readme.txt. Используйте компакт-диск DB2 Universal Database, Версия 6.1 FixPak для Windows NT с уровнем FixPak 2 или новее, и следуйте инструкциям в файле readme.txt в каталоге WINNT95 на компакт-диске, чтобы завершить установку. Обновление SATCTLDB в Windows NT Чтобы обновить базу данных SATCTLDB в Windows NT Определите уровень базы данных SATCTLDB: Зарегистрируйтесь под ID пользователя с полномочиями локального администратора на данной системе Windows NT. Откройте командное окно DB2, выбрав Пуск>Программы>DB2 for Windows NT>Командное окно. Введите следующую команду, чтобы соединиться с SATCTLDB db2 connect to satctldb Чтобы определить, есть ли в базе данных триггер I_BATCHSTEP_TRGSCR, введите следующий запрос: db2 select name from sysibm.systriggers where name='I_BATCHSTEP_TRGSCR' Запишите число возвращенных строк. Чтобы закрыть соединение с базой данных, введите команду: db2 connect reset Если на шаге 1d была возвращена одна строка, база данных находится на правильном уровне. В этом случае пропустите шаг 2 и перейдите к шагу 3. Если возвращено ноль (0) строк, база данных не находится на правильном уровне, и перед выполнением шага 3 ее нужно обновить, как описано в шаге 2. Чтобы обновить базу данных SATCTLDB, выполните следующие действия. Все команды вводите в командном окне DB2: Перейдите в каталог <путь_db2>\misc, где <путь_db2> - диск и путь установки, например, c:\sqllib. Убедитесь, что вы находитесь в экземпляре db2ctlsv. Введите команду set и проверьте значение db2instance. Если оно не равно db2ctlsv, выполните команду: set db2instance=db2ctlsv Отбросьте базу данных SATCTLDB, введя команду: db2 drop database satctldb Создайте новую базу данных SATCTLDB, введя команду: db2 -tf satctldb.ddl -z satctldb.log Введите команду: db2 terminate Свяжите хранимую процедуру db2satcs.dll с базой данных SATCTLDB. Выполните следующие действия: Чтобы соединиться с базой данных SATCTLDB, введите команду: db2 connect to satctldb Перейдите в каталог <путь_db2>\bnd, где <путь_db2> - диск и путь установки, например, c:\sqllib. Введите команду bind: db2 bind db2satcs.bnd Чтобы закрыть соединение с базой данных, введите команду: db2 connect reset Закройте командное окно DB2. Обновление DB2 Enterprise Edition в AIX Используйте информацию в следующих разделах для определения текущего уровня службы вашей системы Версии 6 DB2 Enterprise Edition и того, какие шаги нужно предпринять для обновления системы до служебного уровня FixPak 2 или новее. Вам нужно выполнить шаги из одного или нескольких следующих разделов: Изучение системы DB2 Enterprise Edition на платформе AIX Определение необходимых действий Установка компонента Сервер управления в AIX Установка FixPak 2 или новее в AIX Обновление базы данных SATCTLDB в AIX Изучение системы DB2 Enterprise Edition на платформе AIX Если у вас на платформе AIX установлена Версия 6 DB2 Enterprise Edition, выполните следующие действия: Проверьте, установлен ли компонент Сервер управления. Введите команду: lslpp -l | grep db2_06_01.ctsr Если не возвращено никаких данных, компонент Сервер управления не установлен. Определите служебный уровень DB2 Enterprise Edition. Зарегистрируйтесь как владелец экземпляра DB2 и введите команду db2level. Ее вывод можно интерпретировать при помощи следующей таблицы: Значения ключевых полей в выводе db2level Система DB2 находится на уровне: Выпуск Уровень Элементы информации SQL06010 01010104 db2_v6, n990616 Базовая Версия 6.1 SQL06010 01020104 DB2 V6.1.0.1, n990824, U465423 Версия 6.1 с FixPak 1 SQL06010 01030104 DB2 V6.1.0.6, s991030, U468276 или DB2 V6.1.0.9, s000101, U469453 Версия 6.1 с FixPak 2 Прим.:Если уровень больше, чем 01030104, служебный уровень системы новее FixPak 2. Запишите найденную информацию и переходите к разделу Определение необходимых действий. Определение необходимых действий Используя собранную информацию, найдите в следующей таблице строку, применимую к вашей ситуации, и выполните шаги, требуемые для подготовки системы DB2 Enterprise Edition Версии 6 к поддержке сервера управления DB2 на уровне FixPak 2. В разделах, следующих за таблицей, приводятся инструкции по выполнению требуемых шагов. Советуем помечать выполненные действия в списке. Выполняйте только шаги, применимые к вашей ситуации. Установлен ли компонент Сервер управления Служебный уровень системы DB2 Enterprise Edition Шаги, требуемые для подготовки системы DB2 Enterprise Edition Нет Базовая Версия 6.1, Версия 6.1 с FixPak 1 или Версия 6.1 с FixPak 2 или новее Выполните следующие действия: Установка компонента Сервер управления в AIX Установка FixPak 2 или новее в AIX Обновление базы данных SATCTLDB в AIX Да Базовая Версия 6.1 или Версия 6.1 с FixPak 1 Выполните следующие действия: Установка FixPak 2 или новее в AIX Обновление базы данных SATCTLDB в AIX Да Версия 6.1 с FixPak 2 или новее Выполните следующее действие: Обновление базы данных SATCTLDB в AIX Установка компонента Сервер управления в AIX Чтобы установить компонент Сервер управления в AIX Зарегистрируйтесь как пользователь с полномочиями root. Вставьте в дисковод компакт-диск DB2 Universal Database Enterprise Edition Версия 6.1. Перейдите в каталог, в котором смонтирован компакт-диск, например, cd /cdrom. Чтобы запустить программу установки DB2, введите команду: ./db2setup Когда откроется окно Программа установки DB2, при помощи клавиши табуляции выберите опцию Установить и нажмите клавишу Enter. Найдите строку Enterprise Edition и при помощи клавиши табуляции выберите опцию Настроить рядом с ней. Нажмите клавишу Enter. Выберите компонент Сервер управления DB2, при помощи клавиши табуляции перейдите на OK и нажмите клавишу Enter. Для завершения установки компонента Сервер управления DB2 следуйте инструкциям в последующих окнах. По завершении процесса установки создайте экземпляр DB2CTLSV и базу данных SATCTLDB. Для выполнения этих задач воспользуйтесь подробными инструкциями, приведенными в разделе "Setting up the DB2 Control Server on AIX" Главы 13 книги Administering Satellites Guide and Reference. Установка FixPak 2 или новее в AIX Чтобы обновить имеющуюся систему DB2 Enterprise Edition на платформе AIX до уровня FixPak 2 или новее, выполните одно из следующих действий: Загрузите из Web последний FixPak для DB2 Enterprise Edition для AIX V6.1 вместе с прилагаемым файлом readme для FixPak. Инструкция по загрузке FixPak находится по адресу: http://www-4.ibm.com/software/data/db2/db2tech/version61.html Чтобы установить FixPak, следуйте инструкциям в файле readme для FixPak. Используйте компакт-диск DB2 Universal Database, Версия 6.1 FixPak для AIX, находящийся на уровне FixPak 2 или выше, и следуйте инструкциям в каталоге readme на компакт-диске, чтобы завершить установку. Убедитесь, что вы обновили экземпляр DB2CTLSV, выполнив команду db2iupdt, как указано в файле readme для FixPak. Обновление базы данных SATCTLDB в AIX Чтобы обновить базу данных SATCTLDB в AIX: Определите уровень базы данных SATCTLDB: Зарегистрируйтесь как пользователь db2ctlsv. Убедитесь, что сервер баз данных запущен. Если сервер не запущен, введите команду db2start. Чтобы соединиться с базой данных SATCTLDB, введите команду: db2 connect to satctldb Чтобы определить, есть ли в базе данных триггер I_BATCHSTEP_TRGSCR, введите следующий запрос: db2 "select name from sysibm.systriggers where name='I_BATCHSTEP_TRGSCR'" Запишите число возвращенных строк. Чтобы закрыть соединение с базой данных, введите команду: db2 connect reset Если на шаге 1d была возвращена одна строка, база данных находится на правильном уровне. В этом случае пропустите шаг 2 и перейдите к шагу 3. Если возвращено ноль (0) строк, база данных не находится на правильном уровне, и до того, как можно будет выполнять шаг 3, ее нужно обновить, как описано в шаге 2. Чтобы обновить базу данных SATCTLDB до уровня FixPak 2, выполните следующие действия. Все команды вводите в командном окне DB2: Перейдите в каталог $HOME/sqllib/misc. Отбросьте базу данных SATCTLDB, введя команду: db2 drop database satctldb Создайте новую базу данных SATCTLDB, введя команду: db2 -tf satctldb.ddl -z $HOME/satctldb.log Введите команду: db2 terminate Свяжите хранимую процедуру db2satcs.dll с базой данных SATCTLDB. Выполните следующие действия: Чтобы соединиться с базой данных SATCTLDB, введите команду: db2 connect to satctldb Перейдите в каталог $HOME/sqllib/bnd. Введите команду bind: db2 bind db2satcs.bnd Чтобы закрыть соединение с базой данных, введите команду: db2 connect reset 9.1.4 Обновление Центра управления и Центра управления сателлитами Версии 6 Чтобы использовать Центр управления и Центр управления сателлитами Версии 6 с обновленной до FixPak 2 или новее Версией 6 сервера управления DB2 и базы данных управления сателлитами (SATCTLDB), эти инструменты также необходимо обновить до FixPak 2 или новее. Если Центр управления и Центр управления сателлитами работают в той же системе, что и сервер управления DB2, они были обновлены до FixPak 2 тогда же, когда и система DB2 Enterprise Edition. Если же эти инструменты работают в другой системе, следует обновить эту систему до уровня FixPak 2 или новее. Чтобы обновить эту систему до FixPak 2 или новее: Загрузите из Web последний FixPak для вашего продукта уровня V6.1 вместе с прилагаемым файлом readme. Инструкция по загрузке FixPak находится по адресу: http://www-4.ibm.com/software/data/db2/db2tech/version61.html Чтобы установить FixPak, следуйте инструкциям в файле readme. Используйте компакт-диск DB2 Universal Database, Версия 6.1 FixPak для операционной системы с уровнем FixPak 2 или новее и следуйте инструкциям в файле readme на компакт-диске, чтобы завершить установку. Command Reference 10.1 db2batch - Замер производительности Последнее предложение в описании параметра PERF_DETAIL должно быть таким: Значение больше 1 допустимо только на серверах DB2 Версии 2 и DB2 UDB и не поддерживается в настоящее время на компьютерах хостов. 10.2 db2cap (новая команда) db2cap - Утилита связывания статического пакета CLI/ODBC Связывает файл захвата, чтобы сгенерировать один или несколько статических пакетов. Файл захвата генерируется во время сеанса статического профилирования программы CLI/ODBC/JDBC и содержит операторы SQL, захваченные во время работы этой программы. Эта утилита обрабатывает файл захвата, чтобы он мог использоваться драйвером CLI/ODBC/JDBC для выполнения для этой программы статического SQL. Дополнительную информацию об использовании статического SQL в прикладных программах CLI/ODBC/JDBC смотрите в описании статического профилирования в справочном руководстве CLI Guide and Reference. Авторизация Привилегии доступа для всех объектов базы данных, используемых в операторах SQL, записанных в файл захвата. Достаточные полномочия для задания опций связывания, таких как OWNER и QUALIFIER, если они отличаются от ID соединения, использованного для вызова команды db2cap. Полномочия BINDADD, если этот пакет связывается первый раз; иначе требуются полномочия BIND. Синтаксис команды >>-db2cap----+----+--bind--файл-захвата-------------------------> +--h-+ '--?-' >-----d--алиас_базы_данных--------------------------------------> >-----+---------------------------------------+---------------->< '--u--ID_пользователя--+-------------+--' '--p--пароль--' Параметры команды -h/-? Выводит текст справки по синтаксису этой команды. bind файл-захвата Связывает операторы из этого файла захвата и создает один или несколько пакетов. -d алиас_базы_данных Задает алиас базы данных, в которой будут находиться эти один или несколько пакетов. -u ID_пользователя Задает ID пользователя, который будет использоваться для соединения с источником данных. Прим.:Если ID пользователя, проверенный ID авторизации получается от системы. -p пароль Задает пароль, который будет использоваться для соединения с источником данных. Замечания по использованию На платформах UNIX эта команда должна вводиться в нижнем регистре, но в операционных системах Windows и OS/2 ее можно вводить как в нижнем, так и в верхнем регистре. Эта утилита поддерживает ряд пользовательских опций связывания, которые могут быть заданы в файле захвата. Для улучшения производительности и обеспечения защиты можно проверить и отредактировать содержимое этого файла, используя текстовый редактор для изменения этих опций. Для создания пакета можно использовать опции связывания SQLERROR(CONTINUE) и VALIDATE(RUN). При использовании этой утилиты для создания пакета статическое профилирование должно быть запрещено. Число создаваемых пакетов зависит от уровней изоляции, использованных для операторов SQL из файла захвата. Имя пакета состоит из максимум семи первых символов ключевого слова пакета их файла захвата, и одного из следующих односимвольных суффиксов: 0 - Чтение непринятого (UR) 1 - Стабильность на уровне указателя (CS) 2 - Стабильность чтения (RS) 3 - Многократное чтение (RR) 4 - Без принятия (NC) Чтобы получить конкретную информацию о пакетах, можно: Запросить соответствующие таблицы каталога SYSIBM, указав ключевые слова COLLECTION и PACKAGE из файла захвата. Посмотреть файл захвата. 10.3 db2ckrst (новая команда) db2ckrst - Проверка последовательности резервных копий для инкрементного восстановления Просматривает хронологию базы данных и создает список отметок времени для резервных копий, необходимых для инкрементного восстановления. Создает также упрощенный синтаксис восстановления для инкрементного восстановления вручную. Авторизация Нет Необходимое соединение Нет Синтаксис команды >>-db2ckrst----d--имя базы данных----t--отметка времени---------> >-----+---------------------+-----------------------------------> | .-database---. | '--r--+-tablespace-+--' >-----+-----------------------------------------+---+----+----->< | .--------------------------------. | +--h-+ | V | | +--u-+ '--n-----имя табличного пространства---+--' '--?-' Параметры команды -d имя-базы-данных имя-файла Задает алиас для восстанавливаемой базы данных. -t отметка-времени Задает отметку времени для резервной копии, подлежащей инкрементному восстановлению. -r Задает тип восстановления, которое нужно выполнить. По умолчанию восстанавливается база данных. Прим.:Если выбрано восстановление табличного пространства, но не указано имен табличных пространств, утилита использует для восстановления имена табличных пространств, перечисленные в записи хронологии заданной резервной копии. -n имя-табличного-пространства Задает имя одного или нескольких табличных пространств для восстановления. Прим.:Если выбрано восстановление базы данных, но задан список имен табличных пространств, утилита будет выполнять восстановление указанных табличных пространств. -h/-u/-? Выводит справку. Если указана эта опция, прочие опции игнорируются и выводится только информация справки. Примеры db2ckrst -d mr -t 20001015193455 -r database db2ckrst -d mr -t 20001015193455 -r tablespace db2ckrst -d mr -t 20001015193455 -r tablespace -n tbsp1 tbsp2 > db2 backup db mr Backup successful. The timestamp for this backup image is : 20001016001426 > db2 backup db mr incremental Backup successful. The timestamp for this backup image is : 20001016001445 > db2ckrst -d mr -t 20001016001445 Suggested restore order of images using timestamp 20001016001445 for database mr. =================================================================== db2 restore db mr incremental taken at 20001016001445 db2 restore db mr incremental taken at 20001016001426 db2 restore db mr incremental taken at 20001016001445 =================================================================== > db2ckrst -d mr -t 20001016001445 -r tablespace -n userspace1 Suggested restore order of images using timestamp 20001016001445 for database mr. =================================================================== db2 restore db mr tablespace ( USERSPACE1 ) incremental taken at 20001016001445 db2 restore db mr tablespace ( USERSPACE1 ) incremental taken at 20001016001426 db2 restore db mr tablespace ( USERSPACE1 ) incremental taken at 20001016001445 =================================================================== Замечания по использованию Для использования этой утилиты необходимо наличие хронологии базы данных. Если хронологии базы данных нет, следует перед использованием утилиты задать опцию HISTORY FILE в команде RESTORE. Если используется опция FORCE команды PRUNE HISTORY, есть вероятность удаления записей, требуемых для восстановления из самой поздней полной резервной копии базы данных. По умолчанию команда PRUNE HISTORY не удаляет нужные записи. Не рекомендуется использовать опцию FORCE команды PRUNE HISTORY. Рекомендуется хранить подробные записи резервных копий, используя для ориентации в них эту утилиту. 10.4 db2gncol (новая команда) db2gncol - Изменить значения генерируемых столбцов Изменяет значения генерируемых столбцов в таблицах, находящихся в состоянии отложенной проверки и имеющих ограниченное пространство журналов. Эта утилита используется для подготовки оператора SET INTEGRITY для таблицы, содержащей столбцы, для генерации которых используются выражения. Авторизация Одна из следующих привилегий: sysadm dbadm Синтаксис команды >>-db2gncol----d--база_данных----s--имя_схемы-------------------> >-----t--имя_таблицы----c--счетчик_принятий---------------------> >-----+------------------------------------+---+-----+--------->< '--u--ID_пользователя---p--password--' '--h--' Параметры команды -d база_данных Задает алиас базы данных, в которой находится эта таблица. -s имя_схемы Задает имя схемы для этой таблицы. Имя схемы регистрозависимо. -t имя_таблицы Задает таблицу, для столбцов которой нужно вычислить по формулам новые значения генерируемых столбцов. Имя таблицы регистрозависимо. -c счетчик_принятий Задает число строк, обновляемых между операциями принятия. Этот параметр влияет на размер пространства журналов, необходимого для генерации значений столбцов. -u ID_пользователя Задает ID пользователя, обладающего привилегиями администратора системы или администратора базы данных. Если эта опция не задана, используется текущий ID пользователя. -p пароль Задает пароль для указанного ID пользователя. -h Выводит справку. Если указана эта опция, прочие опции игнорируются, и выводится только информация справки. Замечания по использованию Использование этой утилиты вместо опции FORCE GENERATED оператора SET INTEGRITY может быть необходимым, если таблица имеет большой размер и при этом: Необходимо заново сгенерировать все значения столбца, так как было изменено выражение генерации этого столбца. Используемая в генерируемом столбце внешняя пользовательская функция была изменена и поэтому нужно изменить многие значения столбца. В таблицу был добавлен генерируемый столбец. Была выполнена операция загрузки (или загрузки с добавлением) большого объема данных, во время которой не были заданы значения для генерируемых столбцов. Слишком мало пространство журналов (из-за выполнения длительных одновременных транзакций или из-за большого размера таблицы). Эта утилита сгенерирует значения всех столбцов, созданных на основе выражений генерации. В процессе обновления таблицы регулярно выполняются операции принятия, чтобы избежать переполнения пространства журналов. После выполнения утилиты db2gncol таблицу можно вывести из состояния отложенной проверки, используя оператор SET INTEGRITY. 10.5 db2inidb - инициализировать зеркальную копию базы данных В среде с отделенной зеркальной копией эта команда используется для инициализации зеркальной копии базы данных с различными целями. Авторизация Надо иметь одни из следующих полномочий: sysadm sysctrl sysmaint Необходимое соединение Нет Синтаксис команды >>-db2inidb----алиас_базы_данных----AS----+-SNAPSHOT-+--------->< +-STANDBY--+ '-MIRROR---' Параметры команды алиас_базы_данных Указывает алиас инициализируемой базы данных. SNAPSHOT Задает, что база данных зеркальной копии будет инициализирована как клон первичной базы данных. Эта база данных предназначена только для чтения. STANDBY Задает, что база данных будет переведена в состояние отложенного восстановления повтором. Новые файлы журнала первичной базы данных считываются и применяются к этой резервной базе данных. Резервную базу данных можно будет использовать вместо первичной в случае аварии. MIRROR Задает, что зеркальная копия базы данных предназначена для использования в качестве образа резервной копии, который можно использовать для восстановления первичной базы данных. 10.6 db2look - Утилита извлечения статистики DB2 Синтаксическая диаграмма должна выглядеть так: >>-db2look---d--имя_базы_данных----+----------------+---+-----+-> '--u--Создатель--' '--s--' >-----+-----+---+-----+---+-----+---+-----+---+-----+---+-----+-> '--g--' '--a--' '--h--' '--r--' '--c--' '--p--' >-----+------------+---+-------------------+--------------------> '--o--Fname--' '--e--+----------+--' '--t Tname-' >-----+-------------------+---+-----+---+-----+-----------------> '--m--+----------+--' '--l--' '--x--' '--t Tname-' >-----+------------------------------------+---+-----+--------->< '--i--ID_пользователя---w--password--' '--f--' После параметра -c добавлен параметр -td x. Его определение: Задает разделитель для операторов SQL, генерируемых db2look. Если опция не задана, по умолчанию используется точка с запятой ';'. Рекомендуется использовать эту опцию, если задана опция -e. В этом случае в извлекаемых объектах могут содержаться триггеры или процедуры SQL. Кроме того, добавлен следующий пример: Генерация операторов DDL для объектов, созданных всеми пользователями в базе данных DEPARTMENT. Вывод db2look направляется в файл db2look.sql: db2look -d department -a -e -td % -o db2look.sql db2 -td% -f db2look.sql 10.7 db2updv7 - обновление базы данных до уровня текущего пакета FixPak Версии 7 Эта команда обновляет системные каталоги в базе данных для поддержки текущего пакета FixPak: Позволяет использовать новые встроенные функции (ABS, DECRYPT_BIN, DECRYPT_CHAR, ENCRYPT, GETHINT, MULTIPLY_ALT и ROUND). Позволяет использовать новые встроенные процедуры (GET_ROUTINE_SAR и PUT_ROUTINE_SAR). Добавляет функции WEEK_ISO и DAYOFWEEK_ISO или применяет изменения для них в базах данных Windows и OS/2. Применяет изменения к упакованным описателям таблиц для таблиц, перенастроенных из Версии 2 в Версию 6. Создает производную таблицу SYSCAT.SEQUENCES. Авторизация sysadm Необходимое соединение База данных. Эта команда автоматически устанавливает соединение с указанной базой данных. Синтаксис команды >>-db2updv7----d---имя_базы_данных------------------------------> >-----+----------------------------------+---+-----+----------->< '--u--ID_пользователя---p--пароль--' '--h--' Параметры команды -d имя_базы_данных Задает имя обновляемой базы данных. -u ID_пользователя Задает ID пользователя. -p пароль Задает пароль для ID пользователя. -h Выводит справку. Если указана эта опция, прочие опции игнорируются и выводится только информация справки. Пример После установки FixPak обновите системный каталог в базе данных примера при помощи команды: db2updv7 -d sample Замечания по использованию Этот инструмент можно использовать для базы данных DB2 Версии 7.1 или 7.2, только если установлен по крайней мере FixPak 2. Если эта команда запускается несколько раз, сообщений об ошибках не выводится, но все изменения применяются к каталогам только один раз. Чтобы ввести в действие новые встроенные функции, надо отключить от этой базы данных все прикладные программы, а если база данных была активирована, ее следует деактивировать. 10.8 Новая опция процессора командной строки (-x, подавление вывода заголовков столбцов) Новая опция, -x, указывает процессору командной строки, что он должен возвращать данные без заголовков, в том числе без имен столбцов. Значение по умолчанию этой опции команды - OFF. 10.9 Для процессора командной строки DB2 необходим шрифт True Type Чтобы национальные символы языков с однобайтным набором символов (SBCS) правильно выводились в окне процессора командной строки DB2, измените шрифт на True Type. 10.10 ADD DATALINKS MANAGER Для этой команды требуется следующий уровень авторизации: sysadm sysctrl sysmaint Следует добавить следующее замечание по использованию: Эта команда начинает действовать только после того, как от базы данных отключатся все прикладные программы. Для успешного выполнения команды добавляемый менеджер связей данных DB2 должен быть полностью сконфигурирован и запущен. Кроме того, база данных должна быть зарегистрирована в менеджере связей баз данных DB2 при помощи команды dlfm add_db. Максимальное число менеджеров связей баз данных DB2, которое можно добавить в одну базу данных - 16. 10.11 ARCHIVE LOG (новая команда) Archive Log Закрывает и усекает активный файл журнала для восстановимой базы данных. Если включен обработчик пользователя, посылает требование на архивирование. Авторизация Одна из следующих привилегий: sysadm sysctrl sysmaint dbadm Необходимое соединение Эта команда автоматически устанавливает соединение с указанной базой данных. Если это соединение уже существует, возвращается ошибка. Синтаксис команды >>-ARCHIVE LOG FOR----+-DATABASE-+--алиас-базы-данных-----------> '-DB-------' >-----+---------------------------------------------+-----------> '-USER--имя_пользователя--+----------------+--' '-USING--пароль--' >-------| Условие узла |--------------------------------------->< Условие узла |---ON----+-| Условие списка узлов |-------------------------+--| '-ALL NODES--+-----------------------------------+-' '-EXCEPT--| Условие списка узлов |--' Условие списка узлов .-,---------------------------------. V | |---+-NODE--+--(-----номер узла--+-----------------+--+---)-----| '-NODES-' '-TO--номер узла--' Параметры команды DATABASE алиас-базы-данных Задает алиас базы данных, активный журнал которого нужно заархивировать. USER имя-пользователя Задает имя пользователя для попытки соединения. USING пароль Задает пароль для имени пользователя. ON ALL NODES Указывает, что команду следует выполнить для всех узлов в файле db2nodes.cfg. Это значение используется по умолчанию, если не задано условие узла. EXCEPT Указывает, что команду следует выполнить для всех узлов в файле db2nodes.cfg, кроме приведенных в списке узлов. ON NODE/ON NODES Указывает, что следует архивировать журналы для заданной базы данных на наборе узлов. номер узла Задает номер узла в списке узлов. TO номер узла Используется при задании диапазона узлов, для которого следует архивировать журналы. В список включаются все узлы от первого указанного номера узла до второго указанного номера узла включительно. Замечания по использованию Эту команду можно использовать для сбора полного комплекта файлов журнала до известного момента. Затем файлы журнала можно использовать для обновления резервной базы данных. Эта функция работает, только когда с заданной базой данных нет соединений. Таким образом, пользователь не может выполнить команду с непринятыми транзакциями. Команда ARCHIVE LOG не вызывает принудительного приема незаконченных пользовательских транзакций. Если при выполнении команды уже есть соединение с заданной базой данных, она прекращает работу и возвращает ошибку. Если при выполнении команды другая программа производит транзакции с заданной базой данных, возможно небольшое ухудшение производительности, так как команда сбрасывает буфер журнала на диск. Всем остальным транзакциям, пытающимся сохранять в буфер журнальные записи, придется ожидать окончания записи на диск. При использовании в среде MPP можно задать подмножество узлов при помощи условия узлов. Если условие узлов не задано, по умолчанию эта команда закрывает и архивирует активный журнал на всех узлах. Использование этой команды вызывает потерю базой данных части пространства LSN (последовательных номеров записей журнала) и, как следствие, исчерпание диапазона возможных LSN. 10.12 BACKUP DATABASE 10.12.1 Синтаксическая диаграмма Синтаксическая диаграмма для BACKUP DATABASE обновлена, чтобы отразить новый параметр INCREMENTAL и необязательный аргумент DELTA. Задание одной опции INCREMENTAL вызовет создание инкрементной (кумулятивной) резервной копии. Необязательный аргумент DELTA задает создание разностной резервной копии. >>-BACKUP----+-DATABASE-+---алиас-базы-данных-------------------> '-DB-------' >-----+---------------------------------------------+-----------> '-USER--имя_пользователя--+----------------+--' '-USING--пароль--' >-----+--------------------------------------------------------+> | .-,------------------------------. | | V | | '-TABLESPACE--(-----имя-табличного-пространства---+---)--' >-----+---------+---+--------------------------+----------------> '-ONLINE--' '-INCREMENTAL--+--------+--' '-DELTA--' >-----+----------------------------------------------------------+> +-USE TSM--+--------------------------------+--------------+ | '-OPEN--число-сеансов--SESSIONS--' | | .-,---------------. | | V | | +-TO----+-каталог----+--+----------------------------------+ | '-устройство-' | '-LOAD--имя-библиотеки--+--------------------------------+-' '-OPEN--число-сеансов--SESSIONS--' >-----+-------------------------------+-------------------------> '-WITH--число-буферов--BUFFERS--' >-----+------------------------+---+-----------------+----------> '-BUFFER--размер-буфера--' '-PARALLELISM--n--' >----+-------------------+------------------------------------->< '-WITHOUT PROMPTING-' 10.12.2 Особенности менеджера связей данных DB2 Если для базы данных сконфигурирован один или несколько серверов связей данных, операция завершится успешно, даже если ни один сервер связей данных не доступен. После перезапуска сервера связей данных до того, как он станет доступным базе данных, на нем будет завершено резервное копирование. Прим.:Если операций резервного копирования, ожидающих недоступный сервер связей данных, вдвое больше, чем сохраняется в файле хронологии базы данных (параметр конфигурации базы данных num_db_backups), операция резервного копирования завершится неудачно. 10.13 BIND В синтаксис этой команды DB2 надо включить параметр federated: FEDERATED--+--NO--+-- '-YES--' FEDERATED Указывает, ссылается ли статический оператор SQL в пакете на псевдоним или на производную таблицу объединения. Если эта опция не указана и статический оператор SQL в пакете ссылается на псевдоним или производную таблицу объединения, пакет создается, но возвращается предупреждение. NO В статических операторах SQL пакета нет ссылок на псевдонимы или производные таблицы объединения. Если во время подготовки или связывания этого пакета в статическом операторе SQL встретится псевдоним или производная таблица объединения, возвращается ошибка, и пакет не создается. YES В статических операторах SQL пакета могут быть ссылки на псевдонимы или производные таблицы объединения. Если во время подготовки или связывания этого пакета в статическом операторе SQL не встретятся псевдонимы или производные таблицы объединения, не возвращается ни ошибок, ни предупреждений, а пакет создается. Прим.:В Версии 7 FixPak 2 при прекомпиляции исходного файла или связывании файла связывания без указания значения для опции FEDERATED сервер генерирует предупреждение SQL1179W. Такое же сообщение генерируется, когда исходный файл или файл связывания содержит ссылку статического SQL на псевдоним. Есть два исключения: Для клиентов более ранних уровней, чем Версия 7 FixPak 2 или для клиентов предыдущих версий API sqlaprep() не записывает это предупреждение SQL1179W в файл сообщений. В этом случае команда PRECOMPILE процессора командной строки также не выдает это предупреждение. Для клиентов более ранних уровней, чем Версия 7 FixPak 2 или для клиентов предыдущих версий API sqlabndx не записывает это предупреждение SQL1179W в файл сообщений. Однако в файл сообщений ошибочно включается сообщение SQL0092N, указывающее на то, что пакет не был создан. Это неправильно, так как на самом деле пакет создается. Команда BIND процессора командной строки возвращает то же самое ошибочное предупреждение. 10.14 CALL Синтаксис команды CALL должен выглядеть так: .-,---------------. V | >>-CALL--имя_процедуры---(-----+-----------+--+---)------------>< '-аргумент--' Описание параметра аргумент должно быть изменено на следующее: Задает один или несколько аргументов для хранимой процедуры. Все входные и выходные аргументы должны быть заданы в порядке, определенном для этой процедуры. Вместо выходных аргументов задается символ "?". Например, хранимую процедуру foo с одним входным параметром типа целое число и одним выходным параметром надо вызывать как "call foo (4; ?)". Примечания: При вызове этой утилиты из командной строки операционной системы команду нужно задавать в кавычках: "call DEPT_MEDIAN (51)" Можно также использовать одиночные кавычки ('). Вызываемая хранимая процедура должна иметь уникальное имя в базе данных. Эта хранимая процедура должна быть внесена в каталог. При вызове процедуры, не внесенной в каталог, выдается сообщение об ошибке DB21036. Сообщение DB21101E выдается, если в командной строке задано недостаточное число параметров или порядок, в котором заданы эти параметры (входные, выходные), не совпадает с их порядком в определении этой хранимой процедуры. Столбец результатов может содержать не более 1023 символов. Большие объекты или двоичные данные (FOR BIT DATA, VARBINARY, LONGVARBINARY, GRAPHIC, VARGAPHIC или LONGVARGRAPHIC) не поддерживаются. Утилита CALL поддерживает наборы результатов. Если в вызове используется SP с выходной переменной (OUTPUT) неподдерживаемого типа, возникает ошибка CALL и выдается сообщение DB21036. Максимальная длина входного параметра (INPUT) для CALL равна 1024. 10.15 DROP DATALINKS MANAGER (новая команда) DROP DATALINKS MANAGER Отбрасывает менеджер связей данных DB2 из списка зарегистрированных менеджеров связей данных DB2 для заданной базы данных. Авторизация Одни из следующих: sysadm sysctrl sysmaint Синтаксис команды >>-DROP DATALINKS MANAGER FOR----+-DATABASE-+--имя_базы_данных--> '-DB-------' >----USING---имя----------------------------------------------->< Параметры команды DATABASE имя_базы_данных Задает имя базы данных. USING имя Задает имя сервера связей данных DB2, как его выводит команда LIST DATALINKS MANAGER. Примеры Пример 1 Отбрасывание менеджера связей данных DB2 micky.almaden.ibm.com из базы данных TEST в экземпляре validate, находящейся на хосте bramha.almaden.ibm.com, в то время как в некоторых таблицах базы есть связи с micky.almaden.ibm.com. При отбрасывании менеджера связей данных DB2 крайне важно выполнить следующие действия. Сделайте резервную копию базы данных TEST. Если есть какие-либо связей с micky.almaden.ibm.com, отмените их: Войдите в систему с ID пользователя из SYSADM_GROUP и соединитесь с базой данных TEST в монопольном режиме. connect to test in exclusive mode Это должно быть единственное соединение с test под этим ID пользователя. Это гарантирует, что не будут созданы новые связи. Получите список всех столбцов FILE LINK CONTROL DATALINK и таблиц, содержащих эти столбцы, в базе данных. select tabname, colname from syscat.columns where substr(dl_features, 2, 1) = 'F' Для каждого столбца FILE LINK CONTROL DATALINK в списке выполните SQL SELECT, чтобы выяснить, есть ли связи с micky.almaden.ibm.com. Например, для столбца DATALINK c в таблице t оператор SELECT будет выглядеть как: select count(*) from t where dlurlserver(t.c) = 'MICKY.ALMADEN.IBM.COM' Для каждого столбца FILE LINK CONTROL DATALINK, содержащего такие связи, выполните SQL UPDATE, чтобы удалить связи с micky.almaden.ibm.com. Например, для столбца DATALINK c в таблице t оператор UPDATE будет выглядеть как: update t set t.c = null where dlurlserver(t.c) = 'MICKY.ALMADEN.IBM.COM' Если t.c не допускает пустых значений, можно использовать: update t set t.c=dlvalue('') where dlurlserver(t.c)='MICKY.ALMADEN.IBM.COM' Выполните принятие для этого оператора SQL UPDATE: commit Выполните команду DROP DATALINKS MANAGER: drop datalinks manager for db test using node micky.almaden.ibm.com Прервите соединение в монопольном режиме, чтобы изменения вступили в силу и другие могли соединяться с этой базой данных: terminate Запустите удаление связей и чистку мусора информации резервного копирования для базы TEST на сервере micky.almaden.ibm.com. В качестве администратора менеджера связей данных DB2 выполните на сервере micky.almaden.ibm.com следующую команду: dlfm drop_dlm test validate bramha.almaden.ibm.com Это удалит связи всех файлов, которые все еще связаны с базой данных TEST, на случай, если пользователь забыл удалить их до перехода к шагу 3. Если на micky.almaden.ibm.com есть информация резервного копирования (например, файлы архивов, метаданные) для файлов, ранее связанных с базой TEST, эта команда запустит чистку мусора для этой информации. Фактическое удаление связей и чистка мусора будут выполняться асинхронно. Пример 2 Удаление значений DATALINK, являющихся связями с файлами менеджера связей данных DB2 micky.almaden.ibm.com, в то время как менеджер уже отброшен из базы данных TEST. Это может потребоваться, если при отбрасывании micky.almaden.ibm.com не выполнялись шаги из Примера 1. Операторы SQL DELETE, SELECT и UPDATE не сработают для таких значений DATALINK (SQL0368). Пользователь должен выполнить операцию согласования для всех таблиц, содержащих такие значения DATALINK. Все значения DATALINK, которые были связями с micky.almaden.ibm.com, будут заменены на NULL или значение DATALINK нулевой длины. Все строки, содержащие такие значения, будут вставлены в таблицу исключений (если она была задана). Однако значение DATALINK не будет содержать имени-префикса. Имя-префикс в оригинальном значении DATALINK больше не может быть получено системой, поскольку micky.almaden.ibm.com отброшен. Например, если оригинальное значение DATALINK было 'http://host.com/dlfs/x/y/a.b', а '/dlfs' - имя-префикс, значение DATALINK в таблице исключений будет 'http://host.com/x/y/a.b'. Файлы, на которые ссылаются эти значения DATALINK, остаются в менеджере связей данных DB2 в связанном состоянии. Чтобы запустить удаление связей для этих файлов, следует ввести на сервере micky.almaden.ibm.com команду dlfm drop_dlm. Если на micky.almaden.ibm.com есть информация резервного копирования (например, файлы архивов, метаданные) для файлов, ранее связанных с базой TEST, эта команда запустит чистку мусора для этой информации. Фактическое удаление связей и чистка мусора будут выполняться асинхронно. Пример 3 Несколько экземпляров менеджера связей данных DB2 micky.almaden.ibm.com для базы данных TEST. В этом сценарии показано, как можно перерегистрировать менеджер связей данных DB2 после его отбрасывания, и как он воспринимается в качестве абсолютно нового менеджера связей данных DB2. Нижеприведенные шаги - лишь пример возможного сценария. Если, как рекомендовалось выше, при отбрасывании micky.almaden.ibm.com выполнялись шаги из Примера 1, связей со старым воплощением micky.almaden.ibm.com не осталось, и ниже вы не увидите на шаге 7 ошибку SQL0368. Зарегистрируйте micky.almaden.ibm.com для базы данных TEST: add datalinks manager for db test using node micky.almaden.ibm.com port 14578 Создайте связи с файлами на micky.almaden.ibm.com: connect to test create table t(c1 int, c2 datalink linktype url file link control mode db2options) insert into t values(1, dlvalue('file://micky.almaden.ibm.com/ pictures/yosemite.jpg')) commit terminate Отбросьте micky.almaden.ibm.com из базы данных TEST: drop datalinks manager for db test using micky.almaden.ibm.com Выберите значения DATALINK: connect to test select * from t terminate Пользователь увидит следующее: SQL0368 Менеджер связей данных DB2 "MICKY.ALMADEN.IBM.COM" не зарегистрирован в базе данных. SQLSTATE=55022. Снова зарегистрируйте micky.almaden.ibm.com для базы данных TEST: add datalinks manager for db test using node micky.almaden.ibm.com port 14578 Вставьте новые значения DATALINK: connect to test insert into t values(2, dlvalue('file://micky.almaden.ibm.com/ pictures/tahoe.jpg')) commit Оператор SELECT для значений DATALINK: select c2 from t where c1 = 2 завершится успешно, так как выбираемое значение - связь с зарегистрированным в данный момент экземпляром micky.almaden.ibm.com. select c2 from t where c1 = 1 возвратит: SQL0368 Менеджер связей данных DB2 "MICKY.ALMADEN.IBM.COM" не зарегистрирован в базе данных. SQLSTATE=55022. так как выбираемое значение - связь с экземпляром micky.almaden.ibm.com, отброшенным ранее на шаге 3. Замечания по использованию Последствия выполнения команды DROP DATALINKS MANAGER нельзя отменить. При использовании команды DROP DATALINKS MANAGER чрезвычайно важно следовать шагам из Примера 1. Эта команда действует только после того, как от базы данных отключатся все прикладные программы. После успешного завершения команды пользователю сообщается (DB210201I), что Менеджер связей данных DB2 не выполняет операций для этих связей. До того, как отбросить менеджер связей данных DB2, пользователь должен убедиться, что в базе данных нет связей с файлами на этом менеджере связей данных DB2. Если после отбрасывания менеджера связей данных DB2 в базе данных остаются связи, пользователь должен удалить их при помощи утилиты согласования. Утилита согласования заменит эти связи на NULL (если столбец DATALINK допускает пустые значения) или на значение DATALINK нулевой длины. Файлы, соответствующие связям между базой данных и отброшенным менеджером связей данных DB2, остаются в связанном состоянии. Это значит, что для них недоступны такие операции, как чтение, запись, переименование, удаление, изменение разрешений или владельцев. При чистке мусора эта команда не удаляет архивированные копии файлов удаленных связей на менеджере связей данных DB2. Однако пользователи могут в явном виде запускать операцию удаления связей и чистку мусора при помощи команды dlfm drop_dlm на менеджере связей данных DB2. Перед отбрасыванием менеджера связей данных DB2 рекомендуется сделать резервную копию базы данных. Кроме того, убедитесь, что для всех зарегистрированных репликаций реплицированы все изменения, затрагивающие этот менеджер связей данных DB2. Если до отбрасывания менеджера связей данных DB2 из базы данных была сделана резервная копия, и эта копия используется для восстановления после отбрасывания этого менеджера связей данных DB2, операция восстановления или повтора транзакций может перевести некоторые таблицы в состояние отложенного согласования связей данных (DRP). 10.16 EXPORT В разделе "DB2 Data Links Manager Considerations" описание шага 3 процедуры обеспечения согласованного копирования для экспорта таблицы и соответствующих файлов, указанных в столбцах DATALINK, должно выглядеть так: 3. Выполните утилиту dlfm_export на каждом сервере связей данных. В качестве входного параметра утилиты dlfm_export задается имя управляющего файла, сгенерированного утилитой экспорта. Будет создан файл архива tar (или эквивалентный), содержащий файлы, перечисленные в заданном управляющем файле. В распределенных файловых системах (DFS) утилита dlfm_export получит корневые полномочия сети DCE перед архивированием файлов, перечисленные в управляющем файле. Утилита dlfm_export не сохраняет для архивируемых файлов информацию ACL. В том же разделе текст после фразы "Successful execution of EXPORT results in the generation of the following files" (При успешном выполнении утилиты EXPORT генерируются следующие файлы) должен быть изменен: Второе предложение в первом абзаце должно выглядеть так: Значение столбца DATALINK в этом файле имеет тот же формат, который используется утилитами импорта и загрузки. Первое предложение в втором абзаце должно выглядеть так: Управляющие файлы имя_сервера, генерируемые для каждого сервера связей данных. (В операционной системе Windows NT для всех серверов связей данных используется один управляющий файл ctrlfile.lst. В DFS используется один управляющий файл для каждой ячейки.) В абзац перед таблицей 5 нужно добавить следующее предложение: Дополнительную информацию об утилите dlfm_export смотрите в разделе "Using Export to move DB2 Data Links Manager Data" справочного руководства "Data Movement Utilities Guide and Reference". 10.17 GET DATABASE CONFIGURATION Описание параметра конфигурации DL_TIME_DROP должно быть изменено на следующее: Применяется только для менеджера связей данных DB2. Этот параметр задает число дней хранения файлов на сервере архивов (например, сервере TSM) после выполнения команды DROP DATABASE. Для команды GET DATABASE CONFIGURATION добавлен новый параметр TRACKMOD. Синтаксис команды теперь выглядит так: >>-GET----+-DATABASE-+---+-CONFIGURATION-+--FOR-----------------> '-DB-------' +-CONFIG--------+ '-CFG-----------' .-NO--. >----алиас-базы-данных---TRACKMOD--+-YES-+--------------------->< Надо добавить описание этого параметра: TRACKMOD Задает, должна ли DB2 отслеживать измененные страницы в базе данных для возможности снятия инкрементных копий. OFF Задает, что не нужно отслеживать измененные страницы. Это значение по умолчанию для баз данных, созданных до Версии 7.1, FixPak 3. ON Указывает, что нужно отслеживать измененные страницы. Когда включен этот параметр, можно выполнять инкрементное резервное копирование базы данных. Это значение по умолчанию для баз данных, созданных Версией 7.1, FixPak 3 и новее. 10.18 GET ROUTINE (новая команда) GET ROUTINE Получает файл архива SQL (SAR) для заданной подпрограммы SQL. Авторизация dbadm Необходимое соединение База данных. Если разрешено неявное соединение, устанавливается соединение с базой данных по умолчанию. Синтаксис команды >>-GET ROUTINE--INTO---имя_файла----FROM----+-----------+-------> '-SPECIFIC--' >-------PROCEDURE----имя_процедуры----------------------------->< Параметры команды INTO имя-файла Задает имя файла, куда записывается архив подпрограмм SQL (SAR). FROM Указывает, что надо получить начало спецификации подпрограммы. SPECIFIC Заданное имя-подпрограммы представляет собой конкретное имя. PROCEDURE Подпрограмма является процедурой SQL. имя-подпрограммы Имя процедуры. Если задана опция SPECIFIC, это конкретное имя процедуры. Если в имени не указано имя схемы, используется CURRENT SCHEMA. Подпрограмма имя-подпрограммы должна быть существующей процедурой, определенной, как процедура SQL. Примеры GET ROUTINE INTO procs/proc1.sar FROM PROCEDURE myappl.proc1; 10.19 GET SNAPSHOT Описание параметра FCM FOR ALL NODES должно выглядеть так: Предоставляет статистику менеджера FCM по связи между узлом, для которого выполнялась команда GET SNAPSHOT, и другими узлами в экземпляре EEE. 10.20 IMPORT В разделе "DB2 Data Links Manager Considerations" в шаг 3 надо добавить следующее предложение: Для распределенных файловых систем (DFS) при необходимости обновите информацию об имени ячейки в URL (столбцов DATALINK) из экспортируемых данных для таблицы SQL. В шаг 4 нужно добавить следующее предложение: Для DFS в файле конфигурации менеджера связей данных DB2 определите ячейки конфигурации назначения. Абзац после шага 4 должен выглядеть так: При выполнении утилиты импорта для базы данных назначения файлы, указанные в данных столбцов DATALINK, связываются с соответствующими серверами связей данных. 10.21 LIST HISTORY В команде LIST HISTORY добавлен параметр CREATE TABLESPACE. Синтаксическая диаграмма будет выглядеть так: >>-LIST HISTORY----+-------------------+------------------------> +-BACKUP------------+ +-ROLLFORWARD-------+ +-ALTER TABLESPACE--+ +-DROPPED TABLE-----+ +-LOAD--------------+ +-RENAME TABLESPACE-+ '-CREATE TABLESPACE-' >-----+-ALL--------------------------------+--------------------> +-SINCE--отметка-времени-------------+ '-CONTAINING--+-_схема.имя-объекта-+-' '-_имя-объекта-------' >----FOR--+----------+---алиас-базы-данных--------------------->< +-DATABASE-+ '-DB-------' Надо добавить описание этого параметра: CREATE TABLESPACE Выводит список всех операций CREATE TABLESPACE и DROP TABLESPACE. Замечания по использованию изменены так: В раздел отчета Операция будут добавлены следующие обозначения: A - Создание табличного пространства O - Отбрасывание табличного пространства U - Выгрузка Обозначения в разделе отчета Тип теперь будут выглядеть так: Типы резервного копирования F - Автономное N - Оперативное I - Инкрементное автономное O - Инкрементное оперативное D - Разностное автономное E - Разностное оперативное Типы повтора транзакций E - До конца журнала P - До момента времени Типы загрузки I - Вставка R - Замена Типы изменения табличного пространства C - Добавление контейнеров R - Перераспределение Типы стабилизации S - Стабилизация с общим доступом U - Стабилизация с изменением X - Монопольная стабилизация Z - Сброс стабилизации 10.22 LOAD В разделе "DB2 Data Links Manager Considerations" добавьте следующее предложение в Шаг 1 процедуры, которая должна выполняться перед запуском утилиты загрузки, если данные загружаются в таблицу со столбцом DATALINK, определенным как FILE LINK CONTROL: Для распределенных файловых систем (DFS) убедитесь, что зарегистрированы менеджеры связей данных DB2 в ячейке назначения. В Шаг 5 нужно добавить следующее предложение: Для DFS в файле конфигурации менеджера связей данных DB2 зарегистрируйте ячейки конфигурации назначения, на которые указывают загружаемые данные DATALINK. В разделе "Representation of DATALINK Information in an Input File" первое примечание после описания параметра urlname должно выглядеть так: В настоящее время в качестве имен схем разрешено использовать "http", "file", "unc" и "dfs". Первое предложение второго примечания должно выглядеть так: Префикс (схема, хост и порт) имени URL необязателен. Для DFS этот префикс указывает часть имени объединенного файлового пространства, определяющую ячейку схемы. В примерах данных DATALINK для форматов файлов ASCII с ограничителями (DEL) и ASCII без ограничителей (ASC) нужно удалить третий пример. Примеры данных DATALINK, в которых для спецификация загрузки или импорта для столбца предполагается, что он DL_URL_DEFAULT_PREFIX, должны быть удалены и заменены на следующие: Примеры данных DATALINK, в которых для спецификация загрузки или импорта для столбца предполагается, что он DL_URL_REPLACE_PREFIX ("http://qso"): http://www.almaden.ibm.com/mrep/intro.mpeg Этот URL хранится по частям: schema = http server = qso path = /mrep/intro.mpeg comment = пустая строка /u/me/myfile.ps Он хранится по частям: schema = http server = qso path = /u/me/myfile.ps comment = пустая строка 10.23 PING (новая команда) PING Проверяет время ответа сети для связи между клиентом и сервером базы данных, если для установления соединения используется DB2 Connect. Авторизация Нет Необходимое соединение База данных Синтаксис команды >>-PING---алиас_базы_данных-------------------------------------> .-time-. .-1--+------+----------------------. >-----+-+------------------------------+-+--------------------->< '-число_повторений--+-------+--' +-times-+ '-time--' Параметры команды алиас_базы_данных Указывает алиас для базы данных на сервере DRDA, которому посылается сигнал ping. Прим.:Этот параметр, хотя он и обязательный, в настоящее время не используется. Он зарезервирован для будущего использования. Может быть указано любое действительное имя алиаса базы данных. число_повторений Указывает число повторений этой проверки. Значение должно находиться в диапазоне от 1 до 32767 включительно. Значение по умолчанию - 1. При каждом повторении будет возвращено одно значение времени. Примеры Для однократной проверки времени ответа сети для соединения с сервером базы данных хоста hostdb: db2 ping hostdb 1 или: db2 ping hostdb Результат выполнения этой команды будет выглядеть примерно так: Истекшее время: 7221 микросекунд Чтобы проверить время ответа сети для соединения с сервером базы данных хоста hostdb пять раз: db2 ping hostdb 5 или: db2 ping hostdb 5 times Результат выполнения этой команды будет выглядеть примерно так: Истекшее время: 8412 микросекунд Истекшее время: 11876 микросекунд Истекшее время: 7789 микросекунд Истекшее время: 10124 микросекунд Истекшее время: 10988 микросекунд Замечания по использованию Соединение базы данных должно существовать до вызова этой команды; в противном случае будет возвращена ошибка. Истекшее время возвращается для соединения между клиентом и сервером базы данных DRDA через DB2 Connect. 10.24 PUT ROUTINE (новая команда) PUT ROUTINE При помощи заданного файла архива процедур SQL (SAR) определить подпрограмму в базе данных. Авторизация dbadm Необходимое соединение База данных. Если разрешено неявное соединение, устанавливается соединение с базой данных по умолчанию. Синтаксис команды >>-PUT ROUTINE----FROM----имя-файла-----------------------------> >-----+--------------------------------------------+----------->< '-OWNER--новый-владелец--+----------------+--' '-USE REGISTERS--' Параметры команды FROM имя-файла Задает имя файла, куда записывается архив подпрограмм SQL (SAR). OWNER новый-владелец Задает для подпрограммы новое имя авторизации, которое будет использоваться при проверке авторизации подпрограммы. У пользователя новый-владелец должны быть необходимые привилегии для определения подпрограммы. Если не задано условие OWNER, используется имя авторизации, под которым изначально была определена подпрограмма. USE REGISTERS Указывает, что для определения подпрограммы используются специальные регистры CURRENT SCHEMA и CURRENT PATH. Если это условие не задано, для схемы и пути SQL по умолчанию используются параметры, использовавшиеся при изначальном определении подпрограммы. CURRENT SCHEMA используется в качестве имени схемы для неспецифицированных имен объектов (включая имя подпрограммы), а CURRENT PATH - для разрешения неспецифицированных подпрограмм и типов данных в определении подпрограммы. Примеры PUT ROUTINE FROM procs/proc1.sar; Замечания по использованию В заданной схеме можно одновременно установить не более одной процедуры. 10.25 RECONCILE В описание этой команды надо добавить следующее замечание по использованию: При согласовании, если нет никаких других несоответствий, делаются попытки связать файлы, существующие в соответствии с данными таблиц, но несуществующие в соответствии с данными менеджера связей данных. Требуемый менеджер связей данных DB2 - тот, на который ссылается значение DATALINK в таблице. Согласование допускает недоступность требуемого менеджера связей данных DB2, равно как и тех, которые сконфигурированы в базе данных, но не упоминаются в данных таблицы. Если не задана таблица исключений, в файле отчета исключений (имя-файла.exp) будет имя хоста, имя файла, ID столбца и код причины для всех значений из столбца DATALINK, для которых не удается восстановить ссылки на файлы. Если ссылку на файл не удается восстановить из-за того, что менеджер связей данных DB2 сам был отброшен из этой базы данных при помощи команды DROP DATALINKS MANAGER, в файл отчета исключений записывается не полное имя файла; в нем отсутствует префикс. В таблице исключений для значений DATALINK, с отброшенным или недоступным менеджером связей данных DB2 имя файла в значении DATALINK не будет полным именем файла. В нем отсутствует префикс. Например, если исходное значение DATALINK было 'http://host.com/dlfs/x/y/a.b', в таблицу исключений будет записано значение 'http://host.com/x/y/a.b', то есть префикс '/dlfs' будет исключен. В файл отчета исключений в этом случае будет записано 'x/y/a.b', то есть префикс 'dlfs' будет исключен. В конце процесса согласования таблица выводится из состояния отложенного согласования связей данных (DRP), только если согласование завершилось на всех требуемых менеджерах связей данных DB2. Если для какого-нибудь из требуемых менеджеров связей данных DB2 согласование отложено (поскольку менеджеры были недоступны), таблица останется в состоянии DRP или будет переведена в это состояние. В список возможных нарушений надо добавить следующее: 00010-Менеджер связей данных DB2, на который ссылается значение DATALINK, отброшен из базы данных при помощи команды DROP DATALINKS MANAGER. В этом случае в соответствующем значении DATALINK в таблице исключений не будет содержаться префикс. Например, если исходное значение DATALINK было 'http://host.com/dlfs/prfx/x/y/a.b', а '/dlfs/prfx' - префикс, в таблицу исключений будет записано 'http://host.com/x/y/a.b'. 10.26 REORGANIZE TABLE В Замечания по использованию надо добавить следующее предложение: REORGANIZE TABLE не может использовать индекс на основе расширения индекса. 10.27 RESTORE DATABASE 10.27.1 Синтаксис В синтаксис команды RESTORE DATABASE после опций TABLESPACE/TABLESPACE ONLINE/HISTORY FILE добавлена следующая опция: >>-+-------------------------+--------------------------------->< '-INCREMENTAL--+-------+--' '-ABORT-' Надо добавить описания этих параметров: INCREMENTAL Вызывает инкрементное (кумулятивное) восстановление базы данных вручную. Все команды восстановления будет вводить пользователь. ABORT Этот параметр надо использовать для остановки инкрементного восстановления прежде его успешного завершения. Кроме того, добавлены следующие примеры: Ниже приведен пример стратегии инкрементного резервного копирования восстановимой базы данных в течение недели. Один раз в неделю выполняется полное резервное копирование, каждый день - разностное, в середине недели выполняется инкрементное резервное копирование: (Sun) backup db kdr use adsm (Mon) backup db kdr online incremental delta use adsm (Tue) backup db kdr online incremental delta use adsm (Wed) backup db kdr online incremental use adsm (Thu) backup db kdr online incremental delta use adsm (Fri) backup db kdr online incremental delta use adsm (Sat) backup db kdr online incremental use adsm Для восстановления базы данных вручную из созданных выше резервных копий в пятницу утром введите следующие команды: restore db kdr incremental taken at (Thu) restore db kdr incremental taken at (Sun) restore db kdr incremental taken at (Wed) restore db kdr incremental taken at (Thu) Прим.:Любая команда RESTORE вида db2 restore db <имя> выполняет полное восстановление базы данных, независимо от того, восстанавливается ли образ базы данных или же образ табличного пространства. Любая команда RESTORE вида db2 restore db <имя> tablespace выполняет восстановление табличного пространства или табличных пространств, найденных в этом образе. Любая команда RESTORE, в которой задан список табличных пространств, выполняет восстановление тех табличных пространств, которые явно перечислены. 10.27.2 Особенности менеджера связей данных DB2 Второй абзац раздела "DB2 Data Links Manager Considerations" (Особенности менеджера связей данных DB2) нужно заменить на: Если для базы данных сконфигурирован один или несколько серверов связей данных, операция восстановления завершится успешно, даже если ни один сервер связей данных не доступен. После перезапуска сервера связей данных до того, как он станет доступным базе данных, на нем будет завершено восстановление. ПРИМЕЧАНИЕ: Если операция восстановления базы данных ожидает недоступный сервер связей данных, ни одна из последующих операций восстановления базы данных или табличного пространства не будет успешной. 10.28 ROLLFORWARD DATABASE Второй абзац раздела "DB2 Data Links Manager Considerations" (Особенности менеджера связей данных DB2) нужно заменить на: Если для базы данных сконфигурирован один или несколько серверов связей данных, операция повтора транзакций завершится успешно, даже если ни один сервер связей данных не доступен. После перезапуска сервера связей данных до того, как он станет доступным базе данных, на нем будет завершен повтор транзакций. 10.29 Ошибка документации в разделе CLP Return Codes (Коды возврата процессора командной строки) Второй абзац раздела Command Line Processor Return Codes Главы 2 должен выглядеть следующим образом: Например, следующий сценарий оболочки Bourne выполняет команду GET DATABASE MANAGER CONFIGURATION, а затем проверяет код возврата процессора командной строки: db2 get database manager configuration if [ "$?" = "0" ] then echo "OK!" fi Data Movement Utilities Guide and Reference 11.1 Глава 2. Import 11.1.1 Использованием импорта с буферизованными вставками Примечание в конце этого раздела должно выглядеть так: Прим.:Во всех средах, кроме EEE, возможность буферизованных вставок отключается при операциях импорта, для которых задан параметр INSERT_UPDATE. 11.2 Глава 3. Load 11.2.1 Состояния отложенных действий после операции загрузки Первые два предложения в последнем абзаце в этом разделе изменены на следующие: Четвертое возможное состояние, связанное с процессом загрузки (состояние отложенной проверки), относится к реляционным и проверочным ограничениям, ограничениям DATALINKS, ограничениям AST или ограничениям генерируемых столбцов. Например, если существующая таблица - это родительская таблица, содержащая первичный ключ, на который ссылается внешний ключ зависимой таблицы, изменение данных в родительской таблице переводит обе таблицы (но не табличное пространство) в состояние отложенной проверки. 11.2.2 Ограничения загрузки Для генерируемых столбцов и утилиты загрузки применяются следующие ограничения: В таблицу, содержащую в уникальном индексе генерируемый столбец, можно загрузить данные, только если этот генерируемый столбец является включенным столбцом индекса или если используется модификатор типа файла generatedoverride. Если используется этот модификатор, ожидается, что все значения для этого столбца будут получены из входного файла данных. В таблицу, содержащую генерируемый столбец в ключе разделения, можно загрузить данные, только если используется модификатор типа файла generatedoverride. Если используется этот модификатор, ожидается, что все значения для этого столбца будут получены из входного файла данных. 11.2.3 Модификатор типа файла totalfreespace Модификатор типа файла totalfreespace (LOAD) изменен; теперь он допускает значения от 0 до 2 147 483 647. 11.3 Глава 4. AutoLoader 11.3.1 Для запуска автозагрузки при значении Authentication YES необходим rexecd В разделе Опции автозагрузки к описанию параметров AUTHENTICATION и PASSWORD надо добавить следующее замечание: В среде Linux, если вы запускаете автозагрузку при значении опции аутентификации YES, на всех компьютерах необходимо разрешить rexecd. Если этого не сделать, будет сгенерировано следующее сообщение об ошибке: openbreeze.torolab.ibm.com: Соединение отклонено SQL6554N Ошибка при попытке удаленного выполнения процесса. В файл db2diag.log будут записаны следующие сообщения об ошибках: 2000-10-11-13.04.16.832852 Instance:svtdbm Node:000 PID:19612(db2atld) Appid: oper_system_services sqloRemoteExec Probe:31 Replication Guide and Reference 12.1 Репликация и серверы других типов (не IBM) Для репликации данных на и с серверов других типов (не IBM), таких как Informix, Microsoft SQL Server, Oracle, Sybase и Sybase SQL Anywhere, необходимо использовать DataJoiner Версии 2 или более поздней. Для этого типа репликации нельзя использовать функцию Relational Connect, поскольку DB2 Relational Connect Версии 7 не имеет средств обновления. Кроме того, для управления такой разнородной репликацией на всех платформах (AS/400, OS/2, OS/390, UNIX и Windows) для всех существующих версий DB2 и DataJoiner необходимо использовать DJRA (администратор репликации DataJoiner). 12.2 Репликация в Windows 2000 DB2 DataPropagator Версии 7 совместим с операционной системой Windows 2000. 12.3 Известная ошибка при сохранении файлов SQL При использовании Центра управления в DB2 Connect Personal Edition нельзя сохранять файлы SQL. При попытке сохранения файлов SQL появится сообщение об ошибке, информирующее, что Database Administration Server (DAS) не активен; на самом деле DAS недоступен, так как он не поставляется с DB2 Connect PE. 12.4 Обслуживание DB2 Рекомендуется установить последний доступный уровень DB2 для тех продуктов DB2, которые вы используете в среде репликации. 12.5 Утилита DDU в Web Утилиту DDU (Data Difference utility - утилита различия данных) можно получить в Web по адресу ftp://ftp.software.ibm.com/ps/products/datapropagator/fixes/. DDU - это утилита, которую можно использовать для сравнения двух версий одного файла и создания выходного файла, в котором показаны отличия. Более подробную информацию смотрите в файле README, прилагаемом к этой утилите. 12.6 Глава 3. Data replication scenario 12.6.1 Сценарии репликации Посмотрите на странице Library Web-сайта DataPropagator (http://www.ibm.com/software/data/dpropr/) новый сценарий репликации разнородных данных. Выполните шаги этого сценария по копированию изменений из таблицы источника репликации базы данных Oracle для AIX в таблицу назначения базы данных DB2 для Windows NT. В этом сценарии используется инструмент DB2 DataJoiner Replication Administration (DJRA), триггеры Capture, программа Apply и DB2 DataJoiner. В этой книге на странице 44 инструкции в Шаге 6 по созданию файла паролей следует читать так: Шаг 6: Создание файла паролей Так как для соединения с сервером источника необходима программа Apply, для аутентификации пользователей нужно создать файл паролей. Убедитесь, что этот файл паролей будет доступен для чтения ID пользователя, который будет запускать программу Apply. Чтобы создать файл паролей: Из окна командной строки Windows NT перейдите в каталог C:\scripts. Создайте в этом каталоге новый файл с именем DEPTQUAL.PWD. Этот файл можно создать, используя любой текстовый редактор, например Notepad. Для имени файла паролей действует соглашение об именах: спцфapply.pwd, где спцфapply - регистрозависимая строка символов, которая по регистру и значению должна совпадать со спецификатором Apply, использовавшимся при создании набора регистрации. В данном сценарии спецификатор Apply - DEPTQUAL. Прим.:Кроме того, поддерживается соглашение об именах из DB2 DataPropagator, Версии 5. Содержание файла паролей записывается в следующем формате: SERVER=сервер USER=id_пользователя PWD=пароль Где: сервер Имя сервера источника, назначения или управления, в точности совпадающее с именем в таблице набора регистрации. В этом сценарии используются имена SAMPLE и COPYDB. id_пользователя ID пользователя, который планируется использовать при управлении конкретной базой данных. В операционных системах Windows NT и UNIX это значение регистрозависимо. пароль Пароль, соответствующий данному ID пользователя. В операционных системах Windows NT и UNIX это значение регистрозависимо. Не помещайте в этот файл пустых строк или строк комментариев. Добавьте только информацию об имени сервера, ID пользователя и пароле. Содержание файла паролей должно выглядеть примерно так: SERVER=SAMPLE USER=subina PWD=subpw SERVER=COPYDB USER=subina PWD=subpw Дополнительную информацию об аутентификации и защите в DB2 смотрите в публикации Руководство администратора. 12.7 Глава 5. Planning for replication 12.7.1 Имена столбцов и таблиц При репликации пробелы в именах столбцов и таблиц не поддерживаются. 12.7.2 Репликация столбцов DATALINK Репликация столбцов DATALINK в Solaris возможно, начиная с Версии 7.1 FixPak 1. Для нее требуется, чтобы демон FTP работал на файловых системах источника и назначения DATALINK и поддерживал команду MDTM (modtime), которая выводит время последней модификации данного файла. Если вы используете Версию 2.6 операционной системы Solaris, или любую другую версию, где FTP не поддерживает MDTM, вам понадобится дополнительное программное обеспечение, например, WU-FTPD. Нельзя выполнить репликацию столбцов DATALINK между базами данных DB2 в AS/400 и базами данных DB2 на других платформах. На платформе AS/400 не поддерживается репликация атрибута "comment" значений DATALINK. При работе в AIX 4.2 необходимо перед выполнением программы обработчика пользователя по умолчанию (ASNDLCOPY) установить PTF для APAR IY03101 (AIX 4210-06 RECOMMENDED MAINTENANCE FOR AIX 4.2.1). Этот PTF содержит исправление "проблемы 2000 года" для команды "modtime/MDTM" демона FTP. Чтобы проверить это исправление, посмотрите какое время последнего изменения возвращает команда "modtime <файл>" для файла, измененного после 1 января 2000 года. Если таблица назначения - это внешняя таблица CCD, DataPropagator DB2 вызывает для репликации файлов DATALINK процедуру ASNDLCOPY. Самую свежую информацию о том, как использовать программы ASNDLCOPY и ASNDLCOPYD, смотрите во вводной части исходного текста этих программ. Применяются следующие ограничения: Внешние таблицы CCD могут содержать индикаторы DATALINK, но не значения DATALINK. Сжатые внешние таблицы CCD могут содержать значения DATALINK. Несжатые таблицы назначения CCD не могут содержать столбцов DATALINK. Если сервер источника совпадает с сервером назначения, в наборе регистрации не должно быть членов со столбцами DATALINK. 12.7.3 Ограничения на большие объекты Сжатые внутренние таблицы CCD не могут содержать ссылок на столбцы больших объектов или индикаторы больших объектов. 12.7.4 Планирование репликации В раздел "Connectivity" на страницу 65 нужно добавить следующую информацию: Если программа Apply не может соединиться с сервером управления, она прекращает работу. При использовании блокировки данных для AS/400 общий объем данных для репликации за интервал не должен превышать 4 миллионов строк (а не "4 Мбайт", как сказано на странице 69 этой книги). 12.8 Глава 6. Setting up your replication environment 12.8.1 Предварительное требование для повсеместного изменения Если нужно настроить репликацию типа повсеместного изменения с определением конфликтов и с набором регистрации, содержащим более 150 членов, нужно выполнить следующий оператор DDL для создания таблицы ASN.IBMSNAP_COMPENSATE на сервере управления: CREATE TABLE ASN.IBMSNAP_COMPENSATE ( APPLY_QUAL char(18) NOT NULL, MEMBER SMALLINT, INTENTSEQ CHAR(10) FOR BIT DATA, OPERATION CHAR(1)); 12.8.2 Настройка среды репликации В разделе "Customizing CD table, index, and tablespace names" на странице 95 сказано, что файл DPREPL.DFT находится или в каталоге \sqllib\bin, или в каталоге \sqllib\java. Это неверно, на самом деле файл DPREPL.DFT находится в каталоге \sqllib\cc. На странице 128 в описании предельного срока хранения должно быть указано, что предельный срок хранения используется для сокращения строк только при горячем запуске программы Capture или при использовании команды prune программы Capture. Если вы запустили программу Capture с опцией auto-pruning, она не будет использовать предельный срок хранения для сокращения строк. 12.9 Глава 8. Problem Determination Анализатор репликации работает в 32-битных системах Windows и в AIX. Для работы анализатора в AIX каталог sqllib/bin должен быть задан в переменной среды PATH до каталога /usr/local/bin, чтобы избежать конфликта с /usr/local/bin/analyze. Для анализатора репликации можно использовать два дополнительных необязательных ключевых слова: CT и AT. CT=n Показывать только те записи из таблицы трассировки захвата, которые не старше n дней. Это необязательное ключевое слово. Если это ключевое слово не задано, по умолчанию используется значение 7 дней. AT=n Показывать только те записи из таблицы журнала Apply, которые не старше n дней. Это необязательное ключевое слово. Если это ключевое слово не задано, по умолчанию используется значение 7 дней. Пример: analyze mydb1 mydb2 f=mydirectory ct=4 at=2 deepcheck q=applyqual1 Изменена следующая информация о ключевых словах анализатора репликации: deepcheck Задает, что анализатор должен выполнить более сложный анализ, включая следующую информацию: информацию о сокращении таблиц CD и UOW, подробности разделения табличных пространств и сжатия DB2 for OS/390, анализ индексов назначения для ключей регистрации, временную последовательность регистрации и ошибки операторов SQL для набора регистрации. Этот анализ проводится на всех серверах. Это необязательное ключевое слово. lightcheck Задает, что из отчета должна быть исключена следующая информация: вся подробная информация о столбцах, полученная из таблицы ASN.IBMSNAP_SUBS_COLS, информация об ошибках, неправильностях и пропусках регистрации, а также информация о неправильных или неэффективных индексах. При этом экономятся ресурсы и получается выходной файл HTML меньшего размера. Это необязательное ключевое слово; его нельзя использовать вместе с ключевым словом deepcheck. Средства анализатора для репликации на платформах AS/400 доступны в PTF. Эти средства собирают информацию о среде репликации и создают файл HTML, который можно послать в сервисный центр фирмы IBM для помощи в диагностике ошибок. Чтобы получить эти средства для AS/400, загрузите соответствующий PTF (например, для продукта 5769DP2 нужно загрузить PTF SF61798 или его более позднюю замену). В раздел "Troubleshooting" добавьте следующее описание ошибки и ее решения: Ошибка: Программа Apply зацикливается, не выполняя изменений репликации; таблица журнала Apply содержит значение STATUS=2. Набор регистрации включает несколько исходных таблиц. Для улучшения обработки активных областей для одной исходной таблицы из этого набора определена внутренняя таблица CCD, но она определена в другом наборе регистрации. Изменения были внесены в исходную таблицу, но процесс Apply, заполняющий внутреннюю таблицу CCD, выполняется асинхронно (например, программа Apply могла быть не запущена или событие не произошло и т.п.). Программа Apply, выполняющая репликацию изменений из исходной таблицы в таблицу назначения, зацикливается, так как она ожидает обновления внутренней таблицы CCD. Чтобы остановить зацикливание, запустите программу Apply (или инициируйте событие, запускающее репликацию) для внутренней таблицы CCD. Эта программа Apply заполнит внутреннюю таблицу CCD и позволит зациклившейся программе Apply обработать изменения из всех исходных таблиц. Подобная ситуация может возникнуть для набора регистрации, содержащего исходные таблицы с внутренними таблицами CCD, заполняемыми несколькими программами Apply. 12.10 Глава 9. Capture and Apply for AS/400 Замечание "A note on work management" на странице 178 должно выглядеть так: Можно изменить определения по умолчанию или задать собственные определения. При создании собственного описания подсистемы нужно задать для нее имя QZSNDPR и создать ее в библиотеке, отличной от QDPR. Дополнительную информацию об изменении этих определений смотрите в руководстве "OS/400 Work Management V4R3", SC41-5306. В раздел "Verifying and customizing your installation of DB2 DataPropagator for AS/400" на странице добавьте следующее: Если большой объем транзакций вызывает проблемы с конфликтами блокировок, можно увеличить значение срока ожидания по умолчанию с 30 до 120. Можно изменять задание каждый раз при запуске задания Capture или же использовать следующую процедуру для изменения значения срока ожидания по умолчанию для всех заданий, выполняющихся в подсистеме: 1. Выполните следующую команду, чтобы создать новый объект класса, скопировав QGPL/QBATCH: CRTDUPOBJ OBJ(QBATCH) FROMLIB(QGPL) OBJTYPE(*CLS) TOLIB(QDPR) NEWOBJ(QZSNDPR) 2. Измените значения срока ожидания для вновь созданного класса (например, на 300): CHGCLS CLS(QDPR/QZSNDPR) DFTWAIT(300) 3. Измените запись маршрутизации в описании подсистемы QDPR/QZSNDPR, чтобы использовался этот вновь созданный класс: CHGRTGE SBSD(QDPR/QZSNDPR) SEQNBR(9999) CLS(QDPR/QZSNDPR) В раздел "Using the delete journal receiver exit routine" на странице 194 надо добавить следующее предложение: Если вы удалите регистрацию для подпрограммы обработчика удаления приемника журнала, убедитесь, что для всех журналов, используемых для исходных таблиц, задано DLTRCV(*NO). На странице 195 параметры команды ADDEXITPGM должны выглядеть так: ADDEXITPGM EXITPNT(QIBM_QJO_DLT_JRNRCV) FORMAT(DRCV0100) PGM(QDPR/QZSNDREP) PGMNBR(*LOW) CRTEXITPNT(*NO) PGMDTA(65535 10 QSYS) 12.11 Глава 10. Capture and Apply for OS/390 В Главе 10 изменены следующие абзацы: 12.11.1 Prerequisites for DB2 DataPropagator for OS/390 (Предварительные условия для DB2 DataPropagator for OS/390) Для запуска DB2 DataPropagator for OS/390 Версии 7 (V7) необходима DB2 for OS/390 Версии 5, 6 или 7. 12.11.2 UNICODE and ASCII Encoding Schemes on OS/390 (Схемы кодировки UNICODE и ASCII в OS/390) DB2 DataPropagator for OS/390 V7 поддерживает схемы кодировки UNICODE и ASCII. Чтобы использовать новые схемы кодировки, надо иметь DB2 for OS/390 V7 и создать вручную или конвертировать исходную таблицу, таблицу назначения и управляющую таблицу DB2 DataPropagator, как это описано в последующих разделах. Однако существующая у вас среда репликации будет работать с DB2 DataPropagator for OS/390 V7, даже если вы не измените никаких схем кодировки. 12.11.2.1 Choosing an Encoding Scheme (Выбор схемы кодировки) Если исходная таблица, таблица CD и таблица назначения используют одну и ту же схему кодировки, можно минимизировать потребности преобразования данных в среде репликации. Выбирая схему кодировки для таблиц, придерживайтесь правила единого CCSID: для символьных данные в табличном пространстве можно использовать кодировку ASCII, UNICODE или EBCDIC. Все таблицы в табличном пространстве должны использовать одну и ту же схему кодировки. Схемы кодировки всех таблиц в операторе SQL должны совпадать. Кроме того, все таблицы, используемые в производных таблицах и объединениях, должна иметь одну и ту же схему кодировки. Если вы не следуете правилу единого CCSID, DB2 определит нарушение и возвратит при связывании или выполнении SQLCODE -873. Выбор кодировки ASCII или UNICODE для таблиц зависит вашей конфигурации клиент/сервер. Конкретно при выборе схем кодировки для таблиц пользуйтесь следующими правилами: Исходная таблица или таблица назначения в DB2 for OS/390 могут использовать кодировку EBCDIC, ASCII или UNICODE. Копирование можно выполнять из таблиц или в таблицы с той же или другой схемой кодировки в любой поддерживаемой СУБД (семейства DB2 или же другой через DataJoiner) На сервере источника DB2 for OS/390 во всех CD, единицах работы, регистрах и таблицах управления сокращением на одном сервере надо использовать одну и ту же схему кодировки. Чтобы обеспечить такую согласованность, всегда задавайте схему кодировки явно. Все управляющие таблицы (ASN.IBMSNAP_SUBS_xxxx) на одном сервере управления должны использовать одну и ту же схему кодировки. В других управляющих таблицах можно использовать любые схемы кодировки, однако для таблицы ASN.IBMSNAP_CRITSEC рекомендуется оставить схему EBCDIC. 12.11.2.2 Setting Encoding Schemes (Задание схем кодировки) Чтобы задать правильную схему кодировки для таблиц, измените оператор SQL, который используется для генерации этих таблиц: Создайте новую исходную таблицу и таблицу назначения с нужной схемой кодировки или измените схемы кодировки существующих таблиц (исходной таблицы и таблицы назначения). Рекомендуется остановить программы Capture and Apply перед изменением схемы кодировки существующих таблиц и запустить программу Capture и перезапустить программу Apply после него. Чтобы изменить схему кодировки существующих таблиц: При помощи утилиты Reorg сделайте копию существующей таблицы. Отбросьте существующую таблицу. Повторно создайте таблицу, задав новую схему кодировки. При помощи утилиты Load загрузите старые данные в новую таблицу. Подробную информацию об утилитах Load и Reorg смотрите в руководстве DB2 Universal Database for OS/390 Utility Guide and Reference. Создайте новые управляющие таблицы с нужной схемой кодировки или измените схему кодировки для существующих управляющих таблиц. Файл DPCNTL.MVS, поставляемый вместе с DB2 for OS/390 в sqllib\samples\repl, содержит несколько операторов CREATE TABLE, которые создают управляющие таблицы. Если для таблиц надо использовать ASCII или UNICODE (например, ASN.IBMSNAP_REGISTER и ASN.IBMSNAP_PRUNCNTL), добавьте ключевое слово CCSID ASCII или CCSID UNICODE, как показано в следующем примере. CREATE TABLE ASN.IBMSNAP_PRUNCNTL ( TARGET_SERVER CHAR( 18) NOT NULL, TARGET_OWNER CHAR( 18) NOT NULL, TARGET_TABLE CHAR( 18) NOT NULL, SYNCHTIME TIMESTAMP, SYNCHPOINT CHAR( 10) FOR BIT DATA, SOURCE_OWNER CHAR( 18) NOT NULL, SOURCE_TABLE CHAR( 18) NOT NULL, SOURCE_VIEW_QUAL SMALLINT NOT NULL, APPLY_QUAL CHAR( 18) NOT NULL, SET_NAME CHAR( 18) NOT NULL, CNTL_SERVER CHAR( 18) NOT NULL, TARGET_STRUCTURE SMALLINT NOT NULL, CNTL_ALIAS CHAR( 8) ) CCSID UNICODE DATA CAPTURE CHANGES IN TSSNAP02; Для изменения существующих управляющих таблиц и таблиц CD используйте утилиты Reorg и Load. При создании новых источников копирования или наборов регистрации измените файл SQL, порожденный инструментом управления, чтобы задать нужную схему кодировки. В файле SQL есть несколько операторов CREATE TABLE, которые используются для создания таблиц CD и таблиц назначения для источника копирования или набора регистрации соответственно. Добавьте, где требуется, ключевое слово CCSID ASCII или CCSID UNICODE. Например: CREATE TABLE user1.cdtable1 ( employee_name varchar, employee_age decimal ) CCSID UNICODE; Дополнительная информация о CCSID содержится в справочнике DB2 UDB for OS/390 SQL Reference. 12.12 Глава 11. Capture and Apply for UNIX platforms 12.12.1 Задание переменных среды для программ Capture и Apply в системах UNIX и Windows Если вы создали исходную базу данных с кодовой страницей, отличной от кодовой страницы по умолчанию значения, задайте эту кодовую страницу в переменной среды DB2CODEPAGE. Прежде чем задать DB2CODEPAGE, посмотрите информацию о значениях кодовых страниц в публикации Руководство администратора DB2. Программа Capture должна быть запущена в той же кодовой странице, что и база данных, для которой она захватывает данные. DB2 берет кодовую страницу Capture из активной среды, в которой работает Capture. Если DB2CODEPAGE не задана, DB2 берет значение кодовой страницы из операционной системы. Значение, взятое из операционной системы, будет правильным для Capture, если при создании базы данных вы использовали кодовую страницу по умолчанию. 12.13 Глава 14. Table Structures На странице 339 добавьте следующее предложение в конец описания столбца STATUS для значения "2": Если используются внутренние таблицы CCD и столбец STATUS таблицы журнала Apply часто содержит значение "2", посмотрите в главе 8 "Problem Determination" раздел "Problem: The Apply program loops without replicating changes, the Apply trail table shows STATUS=2". 12.14 Глава 15. Capture and Apply Messages Сообщение ASN0017E следует читать так: ASN0017E Программа Capture обнаружила серьезную внутреннюю ошибку и не может выдать правильное сообщение об ошибке. Имя подпрограммы - "подпрограмма". Код возврата - "код_возврата". Надо добавить сообщение ASN1027S: ASN1027S Задано слишком много столбцов больших объектов. Код ошибки - "<код_ошибки>". Объяснение: Для члена набора регистрации задано слишком много больших объектов (BLOB, CLOB или DBCLOB). Допускается не более 10 столбцов. Действия пользователя: Удалите лишние столбцы больших объектов из этого члена набора регистрации. Сообщение ASN1048E надо читать так: ASN1048E Ошибка выполнения цикла Apply. Подробную информацию смотрите в таблице трассировки Apply: "<текст>". Объяснение: Ошибка выполнения цикла Apply. В этом сообщение "<текст>" содержит "<сервер_назначения>", "<владелец_назначения, таблица_назначения, номер_оператора>" и "<сервер_управления>". Действия пользователя: Проверьте поля APPERRM в таблице трассировки аудита, чтобы определить причину ошибки цикла Apply. 12.15 Приложение A. Запуск программ Capture и Apply из прикладной программы На странице 399 этой книги в комментариях к примеру процедуры, запускающей программы Capture и Apply, есть несколько ошибок; однако код этой процедуры правилен. Последняя часть этого примера процедуры относится к параметрам Apply, несмотря на то, что в комментарии сказано, что она относится к параметрам Capture. Примеры API для вызова программ Apply и Capture и соответствующие им make-файлы можно найти в следующих каталогах: Для NT - sqllib\samples\repl Для UNIX - sqllib/samples/repl System Monitor Guide and Reference 13.1 db2ConvMonStream В разделе Usage Notes структура для типа потока данных переменной снимка SQLM_ELM_SUBSECTION должна быть sqlm_subsection. Troubleshooting Guide 14.1 Запуск DB2 в Windows 95, Windows 98 и Windows ME, когда пользователь не зарегистрирован в системе Для успешного выполнения команды db2start в среде Windows 95, Windows 98 или Windows Millennium Edition (ME) необходимо: Зарегистрироваться в системе с помощью окна регистрации Windows или окна регистрации Microsoft Networking Или же выполнить команду db2logon (информацию о команде db2logon смотрите в примечании (NOTE_1)). Кроме этого, ID пользователя, заданный при регистрации или для команды db2logon должен удовлетворять требованиям DB2 (смотрите примечание (NOTE2)). При запуске команды db2start она сначала проверяет, нет ли в системе зарегистрированного пользователя. Если такой пользователь есть, команда db2start использует его ID пользователя. Если зарегистрированных пользователей нет, команда db2start проверяет, не запущена ли команда db2logon, и если она запущена, команда db2start использует ID пользователя, заданный для команды db2logon. Если команда db2start не может найти правильный ID пользователя, она прекращает свою работу. При установке DB2 Universal Database Версии 7 в Windows 95, Windows 98 и Windows ME программа установки по умолчанию добавляет в папку Автозагрузка ярлык, запускающий команду db2start при загрузке системы (дополнительную информацию смотрите в примечании (NOTE_1)). Если ни один пользователь не был зарегистрирован в системе и не была запущена команда db2logon, команда db2start прекратит свою работу. Для случая, когда в системе не были зарегистрированы пользователи, можно удовлетворить требование запуска команды db2logon перед командой db2start, выполняя команды из пакетного файла: Создайте пакетный файл, содержащий команду db2logon и после нее команду db2start.exe. Например: @echo off db2logon db2local /p:password db2start cls exit Назовите этот пакетный файл db2start.bat и сохраните его в каталоге /bin на диске и в каталоге, где установлена система DB2. Пакетный файл сохраняется в этом каталоге, чтобы операционная система могла найти его. Диск и каталог установки DB2 записан в переменной реестра DB2 DB2PATH. Чтобы узнать диск и каталог установки DB2, используйте следующую команду: db2set -g db2path Предположим, команда эта db2set вернула значение c:\sqllib. В этом случае сохраните пакетный файл как файл: c:\sqllib\bin\db2start.bat Для запуска DB2 при загрузке системы нужно запускать этот пакетный файл с помощью ярлыка в папке Автозагрузка. Есть две возможности: Изменить ярлык, созданный программой установки DB2, чтобы вместо файла db2start.exe он запускал этот пакетный файл. Для предыдущего примера этот ярлык должен запускать пакетный файл db2start.bat. Ярлык, созданный программой установки DB2, имеет имя DB2 - DB2.lnk и в большинстве систем находится по адресу с:\WINDOWS\Главное меню\Программы\Автозагрузка\DB2 - DB2.lnk (c:\WINDOWS\Start Menu\Programs\Start\DB2 - DB2.lnk). Добавить свой собственный ярлык для запуска этого пакетного файла и удалить ярлык, добавленный программой установки DB2. Для удаления ярлыка DB2 используйте следующую команду: del "C:\WINDOWS\Главное меню\Программы\Автозагрузка\DB2 - DB2.lnk" Если вы решили использовать свой собственный ярлык, для него нужно включить атрибут Закрывать окно по завершении сеанса работы. Если этот атрибут не выключен, даже после успешного завершения команды db2start в полосе задач останется сеанс командной строки DOS. Чтобы окно DOS не открывалось при выполнении db2start, можно при создании этого ярлыка задать для него (и окна DOS, в котором выполняется пакетный файл) режим выполнения в свернутом окне. Прим.:Вместо запуска DB2 во время загрузки системы можно запускать DB2 перед выполнением прикладных программ, использующих DB2. Подробную информацию смотрите в примечании (NOTE5). Если для выполнения команды db2logon перед командой db2start используется пакетный файл и иногда в этот момент в системе зарегистрированы пользователи, команда db2start будет продолжать работать; единственное отличие в том, что DB2 будет использовать ID зарегистрированного пользователя. Более подробную информацию смотрите в примечании (NOTE_1). Примечания: Команда db2logon имитирует регистрацию пользователя. Формат команды db2logon: db2logon ID_пользователя /p:пароль Заданный в этой команде ID пользователя должен удовлетворять требованиям к именам DB2 (дополнительную информацию смотрите в примечании (NOTE2)). Если в этой команде не заданы ID пользователя и пароль, откроется окно, запрашивающее пользователя ввести ID пользователя и пароль. Если задан только ID пользователя, пароль у пользователя не запрашивается; в некоторых случаях, описанных ниже, пароль обязателен. Заданные командой db2logon ID пользователя и пароль используются, только если в системе не зарегистрировался ни один пользователь (с помощью окна регистрации Windows или окна регистрации Microsoft Networking). Если зарегистрирован пользователь и была запущена команда db2logon, для всех действий DB2 используется ID пользователя, заданный в команде db2logon, но заданный в команде db2logon пароль игнорируется. Если нет пользователей, зарегистрированных с помощью окна регистрации Windows или окна регистрации Microsoft Networking, заданные в команде db2logon ID пользователя и пароль используются следующим образом: Команда db2start использует этот ID пользователя при своем запуске (пароль ей не требуется). При отсутствии спецификатора высокого уровня для таких операций, как создание таблицы, в качестве спецификатора высокого уровня используется этот ID пользователя. Например: Если введена команда: db2logon db2local И затем введена команда: create table tab1 Эта таблица будет создана со спецификатором высокого уровня как db2local.tab1. Используйте ID пользователя, совпадающий с именем схемы для таблиц и других объектов. Если в системе клиента с типом аутентификации сервер пользователь вводит оператор CONNECT без ID пользователя и пароля (например, CONNECT TO TEST), для проверки пользователя на удаленном сервере используются ID пользователя и пароль, заданные в команде db2logon. Если пользователь явно задает ID пользователя и пароль для соединения (например, CONNECT TO TEST USER ID_пользователя USING пароль), используются значения, заданные в операторе CONNECT. В Версии 7 ID пользователя, использованный для регистрации или заданный в команде db2logon должен удовлетворять следующим требованиям DB2: Он не должен совпадать с один из следующих имен: USERS, ADMINS, GUESTS, PUBLIC, LOCAL или с каким-либо из зарезервированных слов SQL (которые перечислены в руководстве SQL Reference). Он не может начинаться с SQL, SYS или IBM Могут использоваться следующие символы: От A до Z (в Windows 95, Windows 98 и Windows ME поддерживаются регистрозависимые ID пользователей) От 0 до 9 @, # и $ Создание ярлыка db2start в папке Автозагрузка можно предотвратить, используя режим интерактивной выборочной установки или используя для установки файл ответов, в котором задана опция DB2.AUTOSTART=NO. В этих случаях в папке Автозагрузка не будет создан ярлык db2start и будет нужно создать свой собственный ярлык для запуска файла db2start.bat. В Windows 98 и Windows ME можно задать ID пользователя, который будет автоматически регистрироваться при запуске Windows 98 или Windows ME. В этом случае окно регистрации Windows не будет появляться. Если используется эта возможность, пользователь будет зарегистрирован и команда db2start будет успешно выполнена, если этот ID пользователя удовлетворяет требованиям DB2 (подробную информацию смотрите в примечании (NOTE2)). Если эта возможность не используется, пользователю всегда будет предлагаться окно регистрации. Если пользователь закроет это окно без регистрации, команда db2start не будет выполнена успешно, если перед ней не будет выполнена команда db2logon или если она не будет запущена из пакетного файла, как описано выше. Если система DB2 не запущена во время загрузки системы, система DB2 может быть запущена прикладной программой. Файл db2start.bat можно выполнить в процессе инициализации прикладных программ, использующих DB2. При использовании этого метода система DB2 будет запускаться только при запуске прикладной программы, которая будет использовать DB2. После завершения работы этой прикладной программы можно использовать команду db2stop для остановки DB2. Прикладные программы могут запускать DB2 таким способом, если DB2 не запущена при загрузке системы. Для использования прикладной программы Synchronizer DB2 или вызовов функций API синхронизации из прикладной программы должна быть запущена DB2, если загруженные для выполнения сценарии содержат команды, обращающиеся к локальному экземпляру или локальной базе данных. Эти команды могут находиться в сценариях базы данных, сценариях экземпляра или сценариях операционной системы (OS). Если сценарий OS не содержит команд процессора командной строки или вызовов функций API DB2, использующих экземпляр или базу данных, этот сценарий можно выполнять без запуска DB2. Поскольку может быть сложно заранее определить, будут ли такие команды выполняться в сценариях во время процесса синхронизации, лучше запустить DB2 перед началом процесса синхронизации. Если из прикладной программы вызывается команда db2sync или функции API синхронизации, при инициализации этой прикладной программы следует запустить DB2. Если для запуска синхронизации пользователи будут использовать ярлык Synchronizer DB2 из папки DB2 для Windows, этот ярлык синхронизации DB2 нужно изменить, чтобы он вызывал файл db2sync.bat. Этот файл должен содержать следующие команды, обеспечивающие запуск DB2 перед началом синхронизации: @echo off db2start.bat db2sync.exe db2stop.exe cls exit В этом примере подразумевается, что файл db2start.bat запускает команды db2logon и db2start, как описано выше. Если вы решили запускать DB2 при запуске прикладной программы, убедитесь, что программа установки DB2 не добавила в папку Автозагрузка ярлык для запуска DB2. Подробную информацию смотрите в примечании (NOTE3). 14.2 Глава 2. Troubleshooting the DB2 Universal Database Server В разделе "Locking and Deadlocks" (Блокировка и тупиковые ситуации) в подразделе "Applications Slow or Appear to Hang" (Программа работает медленно или зависает) описание под заголовком "Lock waits or deadlocks are not caused by next key locking" надо заменить на : Блокировка следующего ключа гарантирует уровень изоляции Многократное чтение (RR), автоматически блокируя следующий ключ для всех операторов INSERT и DELETE и следующее большее значение ключа для набора результатов для операторов SELECT. Для операторов UPDATE, которые изменяют части ключей в индексе, исходное значение ключа удаляется, а новое значение - вставляется. Блокировка следующего значения при этом производится и для вставки ключа, и для удаления ключа. Это требуется для обеспечения стандартного многократного чтения ANSI и SQL92 и используется в DB2 по умолчанию. Проверьте информацию снимка для программы. Если есть подозрение, что проблема связана с блокировкой следующего ключа, можно включить переменную реестра DB2_RR_TO_RS, если никакие программы не полагаются на эффекты многократного чтения(RR) и если при просмотре приемлем пропуск непринятых удалений. Если переменная DB2_RR_TO_RS включена, поведение RR при просмотре не может быть гарантировано, поскольку при вставке и удалении ключей индекса блокировка следующего ключа не выполняется. На таблицы каталогов эта опция не влияет. Другой эффект включения переменной DB2_RR_TO_RS - пропуск при просмотре удаленных, но непринятых строк, даже если эти строки могут быть отобраны для просмотра. Рассмотрим, например, ситуацию, когда транзакция A удаляет строку с column1=10, а транзакция B выполняет просмотр строк, для которых column1>8 и column1<12. Если DB2_RR_TO_RS выключена, транзакция B будет ждать принятия или отката транзакции A. В случае отката строка с column1=10 будет включена в набор результатов запроса транзакции B. Если DB2_RR_TO_RS включена, транзакция B не будет ждать принятия или отката транзакции A. Она немедленно получит результаты запроса без удаляемой строки. Не используйте эту опцию, если вам требуется уровень изоляции Многократное чтение (RR) стандарта ANSI и SQL92 или если вы не хотите при просмотре пропускать удаляемые строки до принятия удаления. Использование DB2 Universal Database на 64-битных платформах 15.1 Глава 5. Configuration 15.1.1 LOCKLIST К Таблице 2 надо добавить следующую информацию. Параметр Прежний верхний предел Текущий верхний предел LOCKLIST 60000 524288 15.1.2 shmsys:shminfo_shmmax Пользователям DB2 в 64-битной операционной системе Solaris следует при необходимости увеличить значение "shmsys:shminfo_shmmax" в /etc/system, чтобы иметь возможность выделять большую совместную память базы данных. В книге DB2 for UNIX Быстрый старт рекомендуется задать значение этого параметра "90% физической оперативной памяти компьютера в байтах". Эта рекомендация подходит и для 64-битных реализаций. Однако есть сложности со следующей рекомендацией в книге DB2 for UNIX Быстрый старт: Для 32-битных систем с более чем 4 Гбайтами оперативной памяти (в операционной системе Solaris возможно в общей сложности до 64 Гбайт), если пользователь задает значение shmmax, превышающее 4 Гбайта, и использует 32-битное ядро, ядро воспринимает только первые 32 бита от всего числа, что может привести к очень низкому значению shmmax. 15.2 Глава 6. Restrictions В 64-битных операционных системах в настоящее время отсутствует поддержка LDAP. 32-битные и 64-битные базы данных нельзя создать по одному и тому же пути. Например, если 32-битная база данных существует по адресу <некоторый_путь>, команда: db2 create db <некоторая_бд> on <некоторый_путь> от 64-битного экземпляра приведет к ошибке с сообщением "SQL10004C Ошибка ввода-вывода при обращении к каталогу базы данных." XML Extender Administration and Programming Замечания по выпуску (Release Notes) для IBM DB2 XML Extender можно найти на Web-сайте DB2 XML по адресу: http://www-4.ibm.com/software/ data/db2/extenders/xmlext/library.html MQSeries В этом разделе рассказывается, как можно использовать DB2 и MQSeries для создания программ, сочетающих в себе передачу сообщений и работу с базой. Основное внимание в разделе уделяется набору функций, подобных пользовательским функциям (UDF), которые можно при желании подключить в DB2 Universal Database Версии 7.2. Эти базовые функции можно использовать для поддержки широкого диапазона программ: от простых уведомлений о событиях до программ хранилищ данных. 17.1 Установка и конфигурирование функций DB2 MQSeries В этом разделе рассказывается, как сконфигурировать среду DB2 для использования функций DB2 MQSeries. Успешно выполнив описанные ниже действия можно будет использовать в SQL функции DB2 MQSeries. Описание этих функций можно найти в Замечаниях по выпуску в разделе о справочнике SQL Reference. Дополнительную информацию, включая новейшую документацию, советы и рекомендации, можно найти по адресу http://www.ibm.com/software/data/integration/MQSeries. Чтобы сконфигурировать и подключить функции DB2 MQSeries, выполните следующие основные действия: Установите MQSeries. Установите интерфейс MQSeries AMI. Включите и сконфигурируйте функции DB2 MQSeries. Кроме того, чтобы пользоваться возможностями публикации/подписки, предоставляемых функциями DB2 MQSeries, нужно установить либо MQSeries Integrator, либо MQSeries Publish/Subscribe Function. Информацию о MQSeries Integrator можно найти по адресу http://www.ibm.com/software/ts/mqseries/integrator. Информацию о возможности MQSeries Publish/Subscribe можно найти по адресу http://www.ibm.com/software/ts/mqseries/txppacs в категории 3. 17.1.1 Установка MQSeries Прежде всего следует проверить, установлена ли на вашем сервере DB2 MQSeries Версии 5.2. Если эта версия MQSeries уже установлена, пропустите следующий шаг "Установка MQSeries AMI". DB2 Версия 7.2 содержит копию сервера MQSeries, используемого с DB2. Инструкции по установке MQSeries или перенастройке существующих MQSeries для конкретной платформы можно найти в книге Quick Beginnings для этой платформы по адресу http://www.ibm.com/software/ts/mqseries/library/manuals. Во время установки не забудьте установить менеджер очередей по умолчанию. 17.1.2 Установка MQSeries AMI Следующим шагом установите MQSeries Application Messaging Interface (AMI - интерфейс MQSeries отправки сообщений прикладных программ). Он расширяет возможности интерфейсов программирования MQSeries, позволяя четко разделить задачи управления и программирования. Установка этого интерфейса требуется для функций DB2 MQSeries. Если интерфейс MQSeries AMI уже установлен на сервере DB2, пропустите следующий шаг "Подключение функций DB2 MQSeries". Если интерфейс MQSeries AMI не установлен, его можно установить либо из пакета установки, поставляемого с DB2 Версии 7.2, либо загрузив копию этого AMI с сайта Web MQSeries Support Pacs по адресу http://www.ibm.com/software/ts/mqseries/txppacs. Интерфейс AMI можно найти в разделе "Category 3 - Product Extensions". Для удобства мы поставляем копию интерфейса MQSeries AMI с DB2. Его файл находится в каталоге sqllib/cfg. Имя этого файла зависит от конкретной операционной системы: AIX Версии 4.3 и новее ma0f_ax.tar.Z HP-UX ma0f_hp.tar.Z Операционная среда Solaris ma0f_sol7.tar.Z 32-битная система Windows ma0f_nt.zip Следуйте указаниям обычного процесса установки AMI, описанного в файле readme интерфейса AMI, содержащемся в сжатом образе установки. 17.1.3 Включение функций DB2 MQSeries В этом шаге вы сконфигурируете базу данных для включения функций DB2 MQSeries. Утилита enable_MQFunctions - многофункциональная команда, которая сначала проверяет правильность установленной среды MQSeries, а затем устанавливает и создает конфигурацию по умолчанию для функций DB2 MQSeries, включает эти функции для заданной базы данных и подтверждает, что данная конфигурация работает. В случае Windows NT или Windows 2000 перейдите к шагу 5. Задайте группы (в UNIX): При подключении этих функций в UNIX сначала нужно добавить владельца экземпляра DB2 (обычно это db2inst1) и ID пользователя для изолированных пользовательским функциям UDF (обычно db2fenc1) в группу MQSeries mqm. Это необходимо для доступа функций DB2 к MQSeries. Задайте переменные среды DB2 (в UNIX): Добавьте переменную среды AMT_DATA_PATH в список, воспринимаемый DB2. Можно отредактировать файл $INSTHOME/sqllib/profile.env, добавив переменную AMT_DATA_PATH в DB2ENVLIST. Можно также воспользоваться командой db2set. Перезапустите экземпляр базы данных (в UNIX): Чтобы изменения, сделанные для переменных среды, вступили в силу, экземпляр базы данных следует перезапустить. Перейдите в каталог $INSTHOME/sqllib/cfg (для UNIX) или %DB2PATH%/cfg (в Windows). Чтобы сконфигурировать базу данных для включения функций DB2 MQSeries, запустите команду enable_MQFunctions. Полное описание этой команды смотрите в разделе 17.6, enable_MQFunctions. Ниже предлагается несколько общих примеров. После успешного завершения будет подключена заданная база данных и проверена конфигурация. Чтобы проверить эти функции с использованием процессора командной строки, после соединения с подключенной базой данных введите следующие команды: values DB2MQ.MQSEND('проверка') values DB2MQ.MQRECEIVE() Первый оператор отправляет сообщение "проверка" в очередь DB2MQ_DEFAULT_Q, а второй - получает его. Прим.:В результате выполнения команды enable_MQFunctions будет установлена среда MQSeries по умолчанию. Будет создан менеджер очередей и DB2MQ_DEFAULT_MQM и очередь по умолчанию DB2MQ_DEFAULT_Q MQSeries. Будут созданы файлы amt.xml, amthost.xml и amt.dtd, если они еще не существуют в каталоге, на который указывает AMT_DATA_PATH. Если файл amthost.xml существует, но не содержит определения для connectionDB2MQ, эта строка будет добавлена в данный файл с соответствующей информацией. Копия исходного файла будет сохранена как DB2MQSAVE.amthost.xml. 17.2 Модели передачи сообщений MQSeries Функции DB2 MQSeries поддерживают три модели передачи сообщений: дейтаграммы, публикация/подписка (p/s) и требование/ответ (r/r). Сообщения, отправленные как дейтаграммы, посылаются в одно место назначения без ожидания на них ответов. В модели p/s один или несколько программ-издателей посылают сообщение в издательскую службу, которая распределяет его для одного или нескольких подписчиков. Модель требование/ответ аналогична модели дейтаграмм, но отправитель ожидает получения ответа. 17.3 Структура сообщения Сама MQSeries не требует и не поддерживает никакой конкретной структуризации сообщений, которые транспортирует. Поддержка сообщений, построенных как строки на языках C или Cobol или как строки XML, предлагается другими продуктами, например интегратором MQSeries Integrator (MQSI). Структурированные сообщения MQSI определяются репозиторием сообщений. Структура сообщений XML обычно предполагает встроенное описание, и этими сообщениями может управлять также и репозиторий. Кроме того, сообщения могут быть бесструктурными, что требует использования пользовательских программ для анализа и конструирования содержимого сообщения. Как правило, такие сообщения все же несут некоторую структуру, то есть для разделения полей внутри сообщения используются позиции байтов или фиксированные ограничители. Поддержка таких полуструктурированных сообщений осуществляется мастером MQSeries Assist. Поддержка сообщений XML обеспечивается несколькими новыми средствами модуля расширения XML для DB2. 17.4 Обзор функций MQSeries В DB2 Версии 7.2 предоставляется набор функций MQSeries, которые позволяют включать в операторы SQL операции по передаче сообщений. Это значит, что такая поддержка доступна для программ, написанных на любом поддерживаемом языке (например, на C, Java и SQL) с использованием любых интерфейсов баз данных. Все примеры ниже написаны на SQL. Этот SQL можно использовать из любого языка программирования любыми стандартными способами. Поддерживаются все описанные выше модели передачи сообщений MQSeries. Дополнительную информацию о функциях MQSeries можно найти в Замечаниях по выпуску в разделе о справочнике SQL Reference. В базовой конфигурации сервер MQSeries находится на компьютере сервера баз данных, там же, где и DB2. Функции MQSeries устанавливаются в DB2 и обеспечивают доступ к серверу MQSeries. Клиенты DB2 могут находиться на любом компьютере, доступном серверу DB2. Через базу данных к функциям MQSeries могут одновременно обращаться несколько клиентов. С помощью предоставленных функций клиенты DB2 могут выполнять операции по передаче сообщений в операторах SQL. Эти операции по передаче сообщений позволяют программам DB2 взаимодействовать между собой или с другими программами MQSeries. Для включения функций MQSeries в базе данных DB2 используется команда enable_MQFunctions. Она автоматически устанавливает простую конфигурацию по умолчанию, которую программы клиентов могут использовать без какого-либо дополнительного управления. Описание этих команд смотрите в разделах enable_MQFunctions и disable_MQFunctions. Конфигурация по умолчанию позволяет разработчикам прикладных программ быстро получить начальный и более простой интерфейс для разработки. Дополнительные функции можно конфигурировать, наращивая их по необходимости. Пример 1: Оператор SQL для отправки простого сообщения с использованием конфигурации по умолчанию должен выглядеть так: VALUES DB2MQ.MQSEND('простое сообщение') Этот оператор отправляет сообщение простое сообщение менеджеру очередей MQSeries в очередь, заданную конфигурацией по умолчанию. Интерфейс MQSeries по отправке сообщений прикладных программ (AMI) обеспечивает правильное разделение действий по передаче сообщений и определения, где указывается, как эти действия должны быть выполнены. Эти определения хранятся во внешнем файле репозитория, и ими можно управлять с помощью средств управления интерфейсом AMI. Это упрощает разработку и поддержку программ AMI. Функции MQSeries, поддерживаемые DB2, основаны на интерфейсе MQSeries AMI. AMI поддерживает использование внешнего файла конфигурации, называемого Репозиторием AMI, в котором хранится информация о конфигурации. В конфигурацию по умолчанию входит репозиторий AMI MQSeries, сконфигурированный под использование с DB2. В функциях Db2 MQSeries в интерфейсе AMI выдвигаются два ключевых понятия: точки служб и правила. Точка службы - логическая конечная точка, из которой может быть отправлено или получено сообщение. В репозитории AMI каждая точка службы определяется с помощью имени очереди и менеджера очередей MQSeries. Правила определяют опции качества обслуживания (QoS), которые следует использовать для данной операции по передаче сообщений. К ключевым опциям качества обслуживания относятся приоритет и срок действия сообщений. Предоставляются точки служб и определения правил по умолчанию, которые разработчики могут использовать для дальнейшего упрощения своих программ. Чтобы явно задать точку службы и имя правила по умолчанию, пример 1 можно переписать так: Пример 2: VALUES DB2MQ.MQSEND('DB2.DEFAULT.SERVICE', 'DB2.DEFAULT.POLICY','простое сообщение') На сервере, где располагаются очереди и программы, очереди могут обслуживаться одной или несколькими программами. Во многих конфигурациях для поддержки различных программ и возможностей будет задаваться ряд очередей. По этой причине при создании требований MQSeries, как правило, важно задать разные точки служб. Это показано в следующем примере: Пример 3: VALUES DB2MQ.MQSEND('ODS_Input', 'простое сообщение') Прим.:В этом примере правила не заданы, поэтому будут использоваться правила по умолчанию. 17.4.1 Ограничения MQSeries предоставляет возможность сочетать операции по передаче сообщений и операции баз данных в одной единице работы как в элементарной транзакции. Эта возможность изначально не поддерживается функциями MQSeries в Unix и Windows. При использовании функций отправки или получения сообщений максимальная длина сообщений составляет 4000 символов. Это значение является также максимальным размером сообщения при публикации сообщений с использованием MQPublish. 17.4.2 Коды ошибок Коды возврата, возвращаемые функциями MQSeries, можно найти в Приложении B руководства Application Messaging Interface Manual. 17.5 Использование сценариев Функции MQSeries можно использовать в ряде разнообразных сценариев. В этом разделе будет дан обзор некоторых наиболее общих сценариев, включая базовую передачу сообщений, подключение прикладных программ и публикацию данных. 17.5.1 Базовая передача сообщений Базовый вариант передачи сообщений с использованием функций DB2 MQSeries имеет место, когда все программы базы данных соединяются с одним сервером DB2. Клиенты могут быть локальными по отношению к серверу баз данных или распределенными в сетевой среде. В простом сценарии Клиент A вызывает функцию MQSEND, чтобы отправить пользовательскую строку в местонахождение службы по умолчанию. Затем функции MQSeries выполняются в DB2 на сервере баз данных. Через некоторое время Клиент B вызывает функцию MQRECEIVE, чтобы принять сообщение, стоящее первым в очереди, заданной службой по умолчанию, и возвратить его клиенту. Для выполнения этой задачи DB2 снова вызывает функции MQSeries. Клиенты баз данных могут пользоваться простой передачей сообщений рядом способов. Наиболее обычные варианты применения передачи сообщений: Собрание данных -- Информация принимается в форме сообщений из одного или нескольких различных источников информации. Источниками информации могут быть коммерческие программы, например SAP, или программы, разработанные на месте. Такие данные можно получить из очередей и хранить в базе данных для дальнейшей обработки или анализа. Распределение рабочей нагрузки -- Требования на выполнение ставятся в очередь, совместно используемую несколькими экземплярами одной программы. Когда какой-нибудь экземпляр готов выполнить часть работы, он получает сообщение из начала очереди, в которой содержится данное требование на выполнение. С помощью такой техники несколько экземпляров могут, совместно использовать рабочую нагрузку из одной очереди помещенных в пул требований. Передача сигналов программ -- В ситуации, где взаимодействуют несколько процессов, сообщения часто используются для координации их работы. Эти сообщения могут содержать команды или требования на выполнение действий. Обычно такой вид передачи - односторонний, то есть сторона, инициализирующая сообщение, не ожидает ответа. Дополнительную информацию смотрите в разделе 17.5.4.1, Взаимодействие требование/ответ. Программное уведомление -- Уведомление похоже на передачу сигналов в том, что данные передаются от инициатора без ожидания ответа. Однако обычно уведомление содержит данные об имевших место бизнес-событиях. 17.5.4.2, Публикация/подписка - более развитая форма уведомлений. Следующий сценарий по сравнению с простым сценарием, описанным выше, дополнен удаленной передачей сообщений. Сообщение передается между компьютером A и компьютером B. Последовательность шагов следующая: Клиент DB2 вызывает MQSEND с указанием службы назначения, определенной для представления удаленной очереди на компьютере B. Функции DB2 MQSeries выполняют фактическую работу MQSeries, чтобы отправить сообщение. Сервер MQSeries на компьютере A принимает сообщение и гарантирует, что он доставит его в место назначения, заданное в определении точки службы и в текущей конфигурации компьютера A. Сервер определяет, что это - очередь на компьютере B. Затем он пытается отправить это сообщение серверу MQSeries на компьютере B, повторяя эти попытки при необходимости. Сервер MQSeries на компьютере B принимает сообщение от сервера на компьютере A и помещает в очередь назначения на компьютере B. Клиент MQSeries на компьютере B берет сообщение, стоящее первым в этой очереди. 17.5.2 Отправка сообщений С помощью MQSEND пользователь или разработчик прикладных программ DB2 выбирает, какие данные отправить, куда их отправить и когда они будут отправлены. Такая ситуация обычно называется "отправить и забыть", то есть отправитель просто посылает сообщение, полагаясь на гарантированные протоколы доставки MQSeries, обеспечивающие, что сообщение достигнет своего назначения. Это показано в следующих примерах. Пример 4: Чтобы отправить пользовательскую строку в точку службы myplace с правилами highPriority, введите: VALUES DB2MQ.MQSEND('myplace','highPriority','проверка') Здесь highPriority - это правила, определенные в Репозитории AMI, которые задают для приоритета самый высокий уровень, а также могут настроить и другие опции качества обслуживания, например, срок действия. В состав сообщения может входить любая разрешенная комбинация SQL и пользовательских данных. Сюда входят вложенные функции, операторы и преобразования типов. Например, если у нас есть таблица EMPLOYEE со столбцами LASTNAME, FIRSTNAME и DEPARTMENT типа VARCHAR, чтобы отправить сообщение, содержащее эту информацию для каждого сотрудника отдела 5LGA, нужно ввести: Пример 5: SELECT DB2MQ.MQSEND(LASTNAME || ' ' || FIRSTNAME || ' ' || DEPARTMENT) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' Если в таблице присутствует также целочисленный столбец AGE, его можно включить так: Пример 6: SELECT DB2MQ.MQSEND(LASTNAME||' '||FIRSTNAME||' '||DEPARTMENT||' '||char(AGE)) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' И наконец, в следующем примере показано, как можно создать содержимое сообщения с использованием допустимого выражения SQL. Взяв вторую таблицу DEPT со столбцами varchar DEPT_NO и DEPT_NAME, можно отправить сообщение, содержащее столбцы LASTNAME и DEPT_NAME: Пример 7: SELECT DB2MQ.MQSEND(e.LASTNAME || ' ' || d.DEPTNAME) FROM EMPLOYEE e, DEPT d WHERE e.DEPARTMENT = d.DEPTNAME 17.5.3 Прием сообщений Функции DB2 MQSeries позволяют либо получать, либо читать сообщения. Чтение отличается от приема сообщения тем, что чтение возвращает головное сообщение без удалении его из данной очереди, а при приеме сообщение удаляется из очереди. С использованием операции приема сообщение можно получить только один раз, а операция чтения позволяет получать одно и то же сообщение многократно. Это показано в дальнейших примерах: Пример 8: VALUES DB2MQ.MQREAD() Этот пример возвращает строку VARCHAR, содержащую первое сообщение из очереди, определенной службой по умолчанию с использованием правил качества обслуживания по умолчанию. Важно отметить, что если сообщения, доступные для чтения, отсутствуют, будет возвращено пустое значение. При этой операции очередь не изменяется. Пример 9: VALUES DB2MQ.MQRECEIVE('Employee_Changes') В этом примере показано, как сообщение можно удалить из начала очереди, заданной службой Employee_Changes, с использованием правил по умолчанию. Полезная особенность DB2 - возможность сгенерировать таблицу при помощи пользовательской функции (или функции, предоставляемой DB2). Эту особенность табличных функций можно использовать, чтобы разрешить использовать содержимое очереди как таблицу DB2. Простейший случай показан на следующем примере: Пример 10: SELECT t.* FROM table ( DB2MQ.MQREADALL()) t Это требование возвращает таблицу, включающую в себя все сообщения в очереди, определенной службой по умолчанию, и метаданные об этих сообщениях. Полное описание возвращенной структуры таблицы приведено в Приложении, отметим лишь, что первый столбец отражает содержимое сообщения, а остальные столбцы содержат метаданные. Чтобы требование возвращало только сообщения, этот пример можно изменить так: Пример 11: SELECT t.MSG FROM table (DB2MQ.MQREADALL()) t Таблица, возвращенная табличной функцией, не отличается от таблицы, полученной из базы данных непосредственно. Это значит, что эту таблицу можно использовать в самых разных целях. Например, можно объединить содержимое этой таблицы с другой таблицей или подсчитать число сообщений в очереди: Пример 12: SELECT t.MSG, e.LASTNAME FROM table (DB2MQ.MQREADALL() ) t, EMPLOYEE e WHERE t.MSG = e.LASTNAME Пример 13: SELECT COUNT(*) FROM table (DB2MQ.MQREADALL()) t Кроме того, можно скрыть факт, что источником таблицы является очередь, если создать производную таблицу от табличной функции. Например, в следующем примере на основании очереди, к которой служба обращается по имени NEW_EMPLOYEES, создается производная таблица NEW_EMP: Пример 14: CREATE VIEW NEW_EMP (msg) AS SELECT t.msg FROM table (DB2MQ.MQREADALL()) t Здесь производная таблица определяется только с одним столбцом, в котором содержится все сообщение. Если структура сообщения простая, для примера, содержащего два поля фиксированной длины, можно напрямую воспользоваться встроенными функциями DB2, чтобы разбить данное сообщение на два столбца. Например, если известно, что сообщения, отправляемые в конкретную очередь, всегда содержат фамилию длиной не более 18 символов, за которой следует максимум 18-символьное имя, вы можете определить производную таблицу, содержащую каждое поле как отдельный столбец, так: Пример 15: CREATE VIEW NEW_EMP2 AS SELECT left(t.msg,18) AS LNAME, right(t.msg,18) AS FNAME FROM table(DB2MQ.MQREADALL()) t Для создания новых табличных функций и производных таблиц DB2, которые будут отображать в столбцы структуру сообщений с ограничителями можно использовать новую возможность Построителя хранимых процедур DB2 - мастер поддержки MQSeries. И наконец, как правило, полезно хранить содержимое одного или нескольких сообщений в базе данных. Для этого можно использовать все возможности SQL по управлению и хранению содержимого сообщений. Приведем простейший пример: Пример 16: INSERT INTO MESSAGES SELECT t.msg FROM table (DB2MQ.MQRECEIVEALL()) t Этот оператор будет вставлять в таблицу MESSAGES, содержащую единственный столбец VARCHAR(2000), сообщения из очереди службы по умолчанию. Развивая эту технику, можно охватить широкий спектр самых разнообразных обстоятельств. 17.5.4 Возможности соединения программ друг с другом Интеграция программ - обычный элемент во многих решениях. Будь то интеграция приобретенной программы в существующую инфраструктуру или всего лишь интеграция только что разработанной программы в существующую среду, мы часто сталкиваемся с задачей склеить вместе разнородное собрание подсистем, чтобы сформировать работающее целое. MQSeries обычно рассматривается как необходимый инструмент для интеграции программ. Доступная на большей части аппаратных средств, программного обеспечения и языковых сред, MQSeries обеспечивает средства для связи воедино самого разнородного собрания программ. В этом разделе мы обсудим некоторые сценарии интеграции программ и возможности их использования с DB2. Поскольку тема весьма широка, всестороннее обсуждение интеграции программ выходит за рамки этой работы. Поэтому остановимся на двух простых вопросах: взаимодействие требование/ответ, а также интегратор MQSeries и публикация/подписка. 17.5.4.1 Взаимодействие требование/ответ Метод взаимодействия требование/ответ (R/R) - наиболее общая техника, когда одна программа запрашивает службы другой программы. В одном из таких способов реквестер отправляет сообщение провайдеру службы, требуя, чтобы была выполнена некоторая работа. Как только работа выполнена, провайдер может решить отправить результаты (или просто подтверждение о выполнении) назад реквестеру. Но при использовании техники базовой отправки сообщений, описанной выше, нет такого средства, которое соединило бы требование отправителя с ответом провайдера службы. Если реквестер не ожидает ответа перед тем, как продолжить работу, должен использоваться какой-нибудь механизм, чтобы связать каждый ответ с соответствующим требованием. От разработчика не требуется создания такого механизма, так как MQSeries обеспечивает ID корреляции, который позволяет коррелировать сообщения при обмене. Существует несколько способов, в которых можно использовать этот механизм, но самый простой заключается в том, что реквестер помечает сообщения, используя известный идентификатор корреляции, например, так: Пример 17: DB2MQ.MQSEND ('myRequester','myPolicy','SendStatus:cust1','Req1') Этот оператор добавляет заключительный параметр Req1 в вышеуказанный оператор MQSEND, чтобы указать ID корреляции для требования. Чтобы получить ответ на это конкретное требование, воспользуйтесь оператором MQRECREIVE для выборочного получения первого сообщения, определенного указанной службой, соответствующей данному ID корреляции, так: Пример 18: DB2MQ.MQRECEIVE('myReceiver','myPolicy','Req1') Если программа, обслуживающая требование, занята, а реквестер выдает указанный выше оператор MQRECEIVE перед отправкой ответа, не будет найдено ни одного сообщения, удовлетворяющего данному ID корреляции. Чтобы получить и требование службы, и ID корреляции, используется примерно такой оператор: Пример 19: SELECT msg, correlid FROM table (DB2MQ.MQRECEIVEALL('aServiceProvider', 'myPolicy',1)) t Он возвращает от провайдера aServiceProvider сообщение и идентификатор корреляции первого требования. После того как служба выполнена, она отправляет сообщение-ответ в очередь реквестера. В это время реквестер службы может заниматься другой работой. Фактически нет никакой гарантии, что на начальное требование службы будет дан ответ в установленное время. Сроками ожидания уровня программы, подобными этому, должен управлять разработчик; за обнаружение ответа ответственен реквестер. Преимущество такой асинхронной обработки, не зависящей от времени, состоит в том, что реквестер и провайдер службы выполняют ее полностью независимо друг от друга. Этот способ годится и для сред, в которых программы соединяются лишь периодически, и для сред, более ориентированные на пакеты, в которых перед обработкой накапливается множество требований или ответов. Такое накопление часто используется в средах хранилищ данных для периодического обновления хранилища данных или при оперативном хранении данных. 17.5.4.2 Публикация/подписка Простая публикация данных Другой обычный сценарий в интеграции программ состоит в том, что одна программа уведомляет другие программы о представляющих интерес событиях. Этого легко добиться, послав сообщение в очередь, которую отслеживает другая программа. Содержание сообщения может быть заданной пользователем строкой или состоять из столбцов базы данных. Часто требуется просто послать сообщение; для этого используется функция MQSEND. Если такое сообщение необходимо послать одновременно нескольким получателям, можно воспользоваться средством интерфейса MQSeries AMI Список распределения. Список распределения задается при помощи инструмента AMI Administration. Такой список содержит названия отдельных служб. Сообщение, посланное в список распределения, отправляется каждой службе из этого списка. Это особенно полезно, если известно, что каждое сообщение всегда будет представлять интерес для нескольких служб. В следующем примере показана отправка сообщения в список распределения interestedParties: Пример 20: DB2MQ.MQSEND('interestedParties','интересная для всех информация'); Когда требуется более сложное управление сообщениями для конкретных службы, лучше использовать средство Publish/Subscribe - публикация/подписка. Системы Publish/Subscribe, как правило, предоставляют масштабируемую, защищенную среду, в которой множество подписчиков могут зарегистрироваться на получение сообщений от ряда издателей. Для поддержки этой возможности может использоваться интерфейс MQPublish в совокупности с MQSeries Integrator или MQSeries Publish/Subscribe. MQPublish позволяет пользователям по желанию задать тему, которая будет связана с сообщением. Темы позволяют подписчикам более точно описать сообщения, которые будут приниматься. Используется следующая последовательность действий: Администратор MQSeries конфигурирует возможности публикации/подписки интегратора MQSeries. Заинтересованные программы подписываются в пунктах подписки, определяемых конфигурацией MQSI, задавая по желанию интересующие их темы. Каждый подписчик выбирает подходящие темы; он может также использовать технику подписки на основе содержания, применяемую в MQSeries Integrator V2. Важно отметить, что программу подписки определяют очереди, представленные именами служб. Программа DB2 выпускает сообщение в точке службы Weather (Погода). В сообщении указывается, что идет дождь со снегом и тема Austin, тем самым подписчики оповещаются, что в Остине идет дождь со снегом. Механика реальной публикации сообщений осуществляется функциями MQSeries, предоставляемыми DB2. Сообщение отправляется интегратору MQSeries с использованием службы Weather. MQSI принимает сообщение от службы Weather, выполняет всю обработку, определяемую конфигурацией MQSI, и определяет, каким подпискам оно соответствует. После этого MQSI отправляет это сообщение в очереди подписчиков, которых оно интересует. Программы, которые подписались на службу Weather и зарегистрировали тему Austin, получат сообщение Дождь со снегом в своей службе приема. Чтобы опубликовать данные с использованием всех умолчаний, не задавая тему, следует воспользоваться примерно таким оператором: Пример 21: SELECT DB2MQ.MQPUBLISH(LASTNAME||' '||FIRSTNAME||' '||DEPARTMENT||' '||char(AGE)) FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' Оператор, который полностью задает все параметры и упрощает сообщение, чтобы в нем содержалась только фамилия, выглядит так: Пример 22: SELECT DB2MQ.MQPUBLISH('HR_INFO_PUB', 'SPECIAL_POLICY', LASTNAME, 'ALL_EMP:5LGA', 'MANAGER') FROM EMPLOYEE WHERE DEPARTMENT = '5LGA' Этот оператор выпускает сообщения для издательской службы HR_INFO_PUB с использованием правил обслуживания SPECIAL_POLICY. В сообщениях указывается, что тема отправителя - MANAGER. В строке темы показана возможность указания нескольких тем, разделенных двоеточиями ':'. В этом примере использование двух тем позволяет подписчикам для получения сообщений зарегистрировать тему ALL_EMP или только 5LGA. Для получения опубликованных сообщений сначала вы должны зарегистрировать свою заинтересованность в сообщениях на данную тему, и указать имя службы подписчика, куда следует посылать сообщения. Важно отметить, что службы подписчика интерфейса AMI определяет службу посредника и службу получателя. Служба посредника определяет, как подписчик взаимодействует с посредником публикации/подписки, а служба получателя - куда будут посылаться сообщения, удовлетворяющие требованию подписчика. Следующий оператор регистрирует заинтересованность в теме ALL_EMP. Пример 23: DB2MQ.MQSUBSCRIBE('aSubscriber', 'ALL_EMP') После подписки программы сообщения с темой ALL_EMP будут отправляться в службу получателя, определенную службой подписчика. У программы может быть несколько одновременных подписок. Для сообщений, отвечающих подписке, можно пользоваться любой стандартной функцией получения сообщений. Например, если служба подписчика aSubscriber задает, что служба получателя - aSubscriberReceiver, тогда следующий оператор прочтет первое сообщение, не удаляя его: Пример 24: DB2MQ.MQREAD('aSubscriberReceiver') Чтобы задать и сообщения, и темы, под которыми они были выпущены, можно воспользоваться одной из табличных функций. Следующий оператор может получить первые пять сообщений из службы aSubscriberReceiver и вывести и сообщения, и их темы: Пример 25: SELECT t.msg, t.topic FROM table (DB2MQ.MQRECEIVEALL('aSubscriberReceiver',5)) t Для чтения всех сообщений с темой ALL_EMP можно применить средства SQL: Пример 26: SELECT t.msg FROM table (DB2MQ.MQREADALL('aSubscriberReceiver')) t WHERE t.topic = 'ALL_EMP' Прим.:Важно понять, что если MQRECEIVEALL используется с ограничением, будет использована вся очередь, а не только сообщения с темой ALL_EMP. Вот почему табличная функция выполняется перед применением этого ограничения. Если вы больше не нуждаетесь в подписке на конкретную тему, нужно явно отменить подписку, воспользовавшись таким оператором: Пример 27: DB2MQ.MQUNSUBSCRIBE('aSubscriber', 'ALL_EMP') После запуска такого оператора посредник публикации/подписки больше не будет поставлять сообщения, отвечающие критериям данной подписки. Автоматическая публикация сообщений Другим важным способом передачи сообщений базы данных является автоматическая публикация сообщений. С помощью триггера DB2 можно автоматически публиковать сообщения при вызове триггера. Существуют и другие способы автоматической публикации сообщений, но подход с использованием триггера предоставляет администраторам или разработчикам большую свободу в конструировании содержания сообщений и гибкость при определении действий триггера. Как и при любом другом использовании триггера, следует обратить внимание на частоту и стоимость его работы. Следующие примеры показывают, как можно использовать триггеры с функциями DB2 MQSeries. В примере ниже показано, как просто при помощи триггера публиковать сообщение при найме каждого нового служащего. Любые пользователи или программы, подписывающиеся в службе HR_INFO_PUB с регистрацией темы NEW_EMP, будут получать сообщение, содержащее дату, имя и отдел для каждого нового сотрудника. Пример 28: CREATE TRIGGER new_employee AFTER INSERT ON employee REFERENCING NEW ASn FOR EACH ROW MODE DB2SQL VALUES DB2MQ.MQPUBLISH('HR_INFO_PUB&', 'NEW_EMP', current date || ' ' || LASTNAME || ' ' || DEPARTMENT) 17.6 enable_MQFunctions enable_MQFunctions Подключает функции DB2 MQSeries для заданной базы данных и проверяет возможность их правильного выполнения. Эта команда завершится неудачно, если не установлены и не сконфигурированы MQSeries и интерфейс MQSeries AMI. Авторизация Одни из следующих: sysadm dbadm Полномочия IMPLICIT_SCHEMA для базы данных, если нет неявного или явного имени схемы данной функции Привилегия CREATEIN для схемы, если существует имя схемы DB2MQ Синтаксис команды >>-enable_MQFunctions----n--база_данных----u--ID_пользователя---> >-----p--пароль----+--------+---+-------------+---------------->< '-force--' '-noValidate--' Параметры команды -n база_данных Задает имя базы данных, для которой включаются функции. -u ID_пользователя Задает ID пользователя для соединения с базой данных. -p пароль Задает пароль для данного ID пользователя. -force Задает, что следует игнорировать предупреждения при переустановке. -noValidate Задает, что проверка функций DB2 MQSeries выполняться не будет. Примеры В следующем примере создаются функции DB2MQ. Пользователь соединяется с базой данных SAMPLE. Используется схема по умолчанию DB2MQ. enable_MQFunctions -n sample -u user1 -p password1 Замечания по использованию Функции DB2 MQ запускаются под схемой DB2MQ, которая автоматически создается этой командой. Перед тем, как выполнить данную команду: Убедитесь, что установлены MQ и AMI, и что установлены функции MQSeries Версии 5.2 или новее. Убедитесь, что задана переменная среды $AMT_DATA_PATH. Перейдите в подкаталог cfg каталога DB2PATH В UNIX: Воспользуйтесь командой db2set, чтобы добавить AMT_DATA_PATH в DB2ENVLIST. Убедитесь, что учетная запись пользователя, связанная с выполнением пользовательской функции (UDF), относится к группе mqm. Убедитесь, что пользователь, который будет вызывать эту команду, входит в группу mqm. Прим.:MQSeries Версии 5.2 не поддерживает AIX Версии 4.2. 17.7 disable_MQFunctions disable_MQFunctions Отключает использование функций DB2 MQSeries для заданной базы данных. Авторизация Одни из следующих: sysadm dbadm Полномочия IMPLICIT_SCHEMA для базы данных, если нет неявного или явного имени схемы данной функции Привилегия CREATEIN для схемы, если существует имя схемы DB2MQ Синтаксис команды >>-disable_MQFunctions----n--база_данных----u--ID_пользователя--> >-----p--пароль------------------------------------------------>< Параметры команды -n база_данных Задает имя базы данных. -u ID_пользователя Задает ID пользователя, используемый для соединения с базой данных. -p пароль Задает пароль для данного ID пользователя. Примеры В следующем примере функции DB2MQ отключаются для базы данных SAMPLE. disable_MQFunctions -n sample -u user1 -p password1 Инструменты управления Частичное содержание Центр управления 18.1 Возможность управления серверами DB2 Server for VSE and VM 18.2 Поддержка Java 1.2 для Центра управления 18.3 Ошибка "Неверный ярлык" при использовании электронной справки в операционной системе Windows 18.4 Центр управления в виде Java в OS/2 18.5 Ошибка "Доступ к файлу запрещен" при попытке просмотреть завершенное задание в журнале операционной системы Windows 18.6 Соединение для проверки многоузлового изменения 18.7 Центр управления для DB2 for OS/390 18.8 Необходимое исправление для Центра управления для OS/390 18.9 Изменения в окне Создать географический слой 18.10 Информация по устранению неисправностей для Центра управления DB2 18.11 Устранение неисправностей для Центра управления в системах на основе UNIX 18.12 Возможные проблемы со всплывающими справками в OS/2 18.13 Справка для параметра конфигурации jdk11_path 18.14 Системная ошибка Solaris (SQL10012N) при использовании Центра сценариев или журнала 18.15 Справка для файла DPREPL.DFT 18.16 Запуск нескольких апплетов Центра управления 18.17 Электронная справка для Центра управления, выполняемого как апплет 18.18 Выполнение Центра управления в режиме апплета (Windows 95) 18.19 Работа с большими результатами запросов Информационный центр 19.1 Ошибка "Неверный ярлык" в операционной системе Windows 19.2 Открытие внешних ссылок Web в Netscape Navigator, если Netscape уже открыт (системы на основе UNIX) 19.3 Проблемы запуска Информационного центра Мастера 20.1 Задание размера экстента в мастере по созданию базы данных 20.2 Мастер поддержки MQSeries 20.3 Мастер поддержки OLE DB Центр управления 18.1 Возможность управления серверами DB2 Server for VSE and VM В Центре управления DB2 Universal Database Версии 7 улучшена поддержка баз данных DB2 Server for VSE and VM. С помощью Центра управления можно просмотреть все объекты баз данных DB2 Server for VSE and VM. Поддерживаются также операторы CREATE INDEX, REORGANIZE INDEX и UPDATE STATISTICS и команда REBIND. Для REORGANIZE INDEX и REBIND требуется выполнение хранимой процедуры на хостах DB2 Server for VSE and VM. Эта хранимая процедура поставляется средством Центра управления для VSE и VM DB2 для Server for VSE and VM. Полностью интегрированный Центр управления позволяет пользователю управлять DB2 независимо от того, на какой платформе работает сервер DB2. Объекты DB2 Server for VSE and VM выводятся в главном окне Центра управления вместе с объектами DB2 Universal Database. При выборе объекта вызываются соответствующие действия и утилиты для управления этим объектом. Например, пользователь может вывести список индексов конкретной базы данных, выбрать один из этих индексов и реорганизовать его. Пользователь может также вывести список таблиц базы данных и выполнить сбор статистической информации или определить одну из таблиц в качестве источника репликации. Информацию о конфигурировании Центра управления для выполнения задач администратора для объектов DB2 Server for VSE and VM смотрите в руководстве DB2 Connect. Руководство пользователя или Дополнение по установке и настройке. 18.2 Поддержка Java 1.2 для Центра управления Центр управления поддерживает языки с двумя направлениями письма, такие как арабский или иврит, используя средства поддержки таких языков в Java 1.2. Эта поддержка обеспечивается только для платформ Windows NT. Необходимо установить Java 1.2, чтобы Центр управления мог распознать и использовать этот продукт: JDK 1.2.2 находится на компакт-диске DB2 UDB в каталоге DB2\bidi\NT. ibm-inst-n122p-win32-x86.exe - это программа установки, а ibm-jdk-n122p-win32-x86.exe - дистрибутив JDK. Скопируйте оба эти файла во временный каталог на жестком диске и затем запустите оттуда программу установки. Установите этот продукт в каталог \java\Java12, где - путь установки DB2. При установке JDK/JRE не выбирайте JDK/JRE в качестве системной VM. Когда Java 1.2 успешно установлен, при обычном запуске Центра управления будет использоваться Java 1.2. Чтобы прекратить использовать Java 1.2, можно или деинсталлировать JDK/JRE из каталога \java\Java12, или просто переименовать подкаталог \java\Java12, задав для него какое-либо другое имя. Прим.:Не спутайте \java\Java12 с \Java12.\Java12 - это часть установки DB2, содержащая поддержку JDBC для Java 1.2. 18.3 Ошибка "Неверный ярлык" при использовании электронной справки в операционной системе Windows При использовании электронной справки Центра управления может возникнуть ошибка "Неверный ярлык". Если недавно был установлен новый браузер Web (или новая версия браузера), убедитесь, что документы HTML и HTM связаны с правильным браузером. Посмотрите в Справке Windows раздел "Чтобы выбрать программу, открывающую файл". 18.4 Центр управления в виде Java в OS/2 Центр управления должен быть установлен на диске с файловой системой HPFS. 18.5 Ошибка "Доступ к файлу запрещен" при попытке просмотреть завершенное задание в журнале операционной системы Windows В DB2 Universal Database for Windows NT при попытке открыть журнал для просмотра информации о задании, созданном в Центре сценариев возникает ошибка "Доступ к файлу запрещен". Состояние этого задания указывается как завершенное. Это происходит, если задание, созданное Центре сценариев, содержит команду START. Чтобы избежать такой ошибки, используйте START/WAIT вместо START в пакетном файле и в самом задании. 18.6 Соединение для проверки многоузлового изменения В Центре управления Версии 7 работа соединения для проверки многоузлового изменения зависит от версии экземпляра назначения. Для удаленной работы экземпляр назначения должен быть не ниже Версии 7. Для работы соединения для проверки многоузлового изменения в Версии 6 необходимо перенести Центр управления в систему экземпляра назначения и выполнять его оттуда. 18.7 Центр управления для DB2 for OS/390 Центр управления DB2 UDB for OS/390 позволяет управлять использованием лицензированных утилит DB2 IBM. Функции утилит, входящие в отдельно заказываемые средства DB2 UDB for OS/390, должны быть лицензированы и установлены в вашей среде, прежде чем ими можно будет управлять с помощью Центра управления DB2. База данных "CC390", создаваемая для Центра управления при конфигурировании подсистемы DB2 for OS/390, используется для внутренней поддержки Центра управления. Не изменяйте эту базу данных. Хотя DB2 for OS/390 Версии 7.1 специально не упомянута в таблице содержимого для Центра управления или в информации о задачах информационного центра, эта документация поддерживает функции DB2 for OS/390 Версии 7.1. В таблице содержимого не указаны версии для многих функций DB2 for OS/390, появляющихся только в Версии 6 и использующиеся также в Версии 7.1, и некоторых функций DB2 for OS/390, использующихся только в Версии 7.1. Сконфигурировав в Центре управления подсистему DB2 for OS/390 Версии 7.1, вы получите доступ ко всей документации по этой версии. Чтобы из Центра управления для DB2 for OS/390 можно было использовать функцию DDL Generate, эта функция должна быть установлена: Для Версии 5 установите DB2Admin 2.0 с DB2 for OS/390 Версии 5. Для Версии 6 установите небольшое программное усовершенствование, которое будет доступно в виде PTF для средства Admin DB2 для DB2 for OS/390 Версии 6. Для Версии 7.1 функция DDL Generate входит в отдельно поставляемое средство Admin DB2 для DB2 for OS/390 Версии 7.1. Из Центра управления можно обращаться к построителю хранимых процедур, но он должен быть уже установлен в момент запуска Центра управления DB2 UDB. Он входит в клиент разработки программ DB2. Чтобы внести в каталог подсистему DB2 for OS/390 прямо на рабочей станции, используйте Ассистент конфигурирования клиента. На странице Источник выберите радиокнопку Конфигурировать соединение с базой данных вручную. На странице Протокол введите соответствующую информацию о связи. На странице Подсистема задайте имя подсистемы в поле Имя базы данных. На странице Опции узла включите переключатель Сконфигурировать опции узла (необязательные). Выберите MVS/ESA, OS/390 из списка в поле Операционные системы. Нажмите кнопку Завершить, чтобы закончить конфигурирование. Чтобы внести в каталог подсистему DB2 for OS/390 через компьютер шлюза, выполните описанные выше шаги с 1 по 6 на компьютере шлюза и затем: Запустите Центр управления на компьютере клиента. Щелкните правой кнопкой мыши по папке Системы и выберите Добавить. В окне Добавить систему введите имя компьютера шлюза в поле Имя системы. В поле Удаленный экземпляр введите DB2DAS00. Для протокола TCP/IP в параметрах протокола в поле Имя хоста задайте имя хоста компьютера шлюза. В поле Имя службы введите 523. Нажмите кнопку OK, чтобы добавить систему. Компьютер шлюза будет добавлен в папку Системы. Раскройте объект этого компьютера шлюза. Щелкните правой кнопкой мыши по папке Экземпляры и выберите Добавить. В окне Добавить экземпляр нажмите кнопку Обновить, чтобы вывести список экземпляров, доступных на компьютере шлюза. Если компьютер шлюза - это система Windows NT, подсистема DB2 for OS/390 может быть каталогизирована под экземпляром DB2. Выберите экземпляр. Параметры протокола будут автоматически заполнены для этого экземпляра. Нажмите кнопку OK, чтобы добавить экземпляр. Откройте папку Экземпляры, чтобы увидеть только что добавленный экземпляр. Раскройте объект этого экземпляра. Щелкните правой кнопкой мыши по папке Базы данных и выберите Добавить. Нажмите кнопку Обновить, чтобы вывести список локальных баз данных на компьютере шлюза. Если вы добавляете подсистему DB2 в окне Добавить базу данных, введите имя подсистемы в поле Имя базы данных. Необязательно: Введите локальный алиас для этой подсистемы (или базы данных). Нажмите кнопку OK. Теперь эта подсистема успешно добавлена в Центр управления. Когда вы откроете эту базу данных, вы увидите подсистему DB2 for OS/390. В первом абзаце раздела "Центр управления 390" говорится: The DB2 UDB Control Center for OS/390 allows you to manage the use of your licensed IBM DB2 utilities. Utility functions that are elements of separately orderable features of DB2 UDB for OS/390 must be licensed and installed in your environment before being managed by the DB2 Control Center. Этот раздел должен выглядеть так: The DB2 Control Center for OS/390 allows you to manage the use of your licensed IBM DB2 utilities. Utility functions that are elements of separately orderable products must be licensed and installed in your environment in order to be managed by DB2 Control Center. 18.8 Необходимое исправление для Центра управления для OS/390 Необходимо применить APAR PQ36382 для средства 390 Enablement в DB2 for OS/390 Версии 5 и DB2 for OS/390 Версии 6, чтобы можно было управлять этими подсистемами с помощью Центра управления DB2 UDB для Версии 7. Без этого исправления нельзя использовать Центр управления DB2 UDB Версии 7 для запуска утилит для этих подсистем. Этот APAR нужно применить для следующих FMID: 390 Enablement в DB2 for OS/390 Версия 5: FMID JDB551D 390 Enablement в DB2 for OS/390 Версия 6: FMID JDB661D 18.9 Изменения в окне Создать географический слой Из окна Создать географический слой удалены кнопки "<<" и ">>". 18.10 Информация по устранению неисправностей для Центра управления DB2 В главе "Установка и конфигурирование Центра управления" книги "Быстрый старт" сказано, что если возникают ошибки при запуске Центра управления в виде апплета, нужно в командном окне отменить задание браузера клиента в CLASSPATH. В этом разделе сказано также, что нужно запустить браузер из того же командного окна. Однако там не приведена команда запуска браузера. Для запуска Internet Explorer введите start iexplore и нажмите клавишу Enter. Для запуска Netscape введите start netscape и нажмите клавишу Enter. В этих командах предполагается, что путь браузера записан в PATH. Если это не так, добавьте путь браузера в PATH или перейдите в каталог установки браузера и повторите команду start. 18.11 Устранение неисправностей для Центра управления в системах на основе UNIX Если не удается запустить Центр управления в системе на основе UNIX, задайте переменную среды JAVA_HOME, чтобы она указывала путь установки Java: Если Java установлен в каталоге /usr/jdk118, задайте для JAVA_HOME значение /usr/jdk118. Для оболочек sh, ksh или bash: export JAVA_HOME=/usr/jdk118. Для оболочек csh или tcsh: setenv JAVA_HOME /usr/jdk118 18.12 Возможные проблемы со всплывающими справками в OS/2 Если Центр управления используется в OS/2 в режиме с размером экрана 1024x768 и 256 цветами и с включенной опцией "Знать палитру рабочего стола", всплывающие справки, выходящие за границы текущего окна, могут выводиться черным текстом на черном фоне. Чтобы исправить эту ошибку, или измените режим экрана на более чем 256 цветов, или отключите опцию "Знать палитру рабочего стола". 18.13 Справка для параметра конфигурации jdk11_path В справке Центра управления в описании параметра конфигурации jdk11_path (путь установки Java Development Kit 1.1) пропущена строка под заголовком Применяется к. Полный список под заголовком Применяется к: Сервер баз данных с локальными и удаленными клиентами Клиент Сервер баз данных с локальными клиентами Сервер многораздельных баз данных с локальными и удаленными клиентами Сервер сателлитных баз данных с локальными клиентами 18.14 Системная ошибка Solaris (SQL10012N) при использовании Центра сценариев или журнала При выборе из Центра сценариев или из журнала системы Solaris может возникнуть следующая ошибка: SQL10012N - Непредвиденная ошибка операционной системы при загрузке библиотеки "/udbprod/db2as/sqllib/function/unfenced/ db2scdar!ScheduleInfoOpenScan". SQLSTATE=42724. Эта ошибка вызвана ошибкой компоновщика времени выполнения системы Solaris. Чтобы исправить эту ошибку, примените следующие программные исправления: 105490-06 (107733 делает 105490 устаревшим) для Solaris 2.6 18.15 Справка для файла DPREPL.DFT В Центре управления в справке для страницы Репликация записной книжки Параметры инструментов в шаге 5d сказано: Сохраните этот файл в рабочем каталоге для Центра управления (например, SQLLIB\BIN), чтобы система могла использовать его в качестве файла по умолчанию. Правильный текст для шага 5d: Сохраните этот файл в рабочем каталоге для Центра управления (SQLLIB\CC), чтобы система могла использовать его в качестве файла по умолчанию. 18.16 Запуск нескольких апплетов Центра управления На одном компьютере можно одновременно запустить только один апплет Центра управления. Это ограничение применяется к апплетам Центра управления, выполняющимся во всех поддерживаемых браузерах. 18.17 Электронная справка для Центра управления, выполняемого как апплет Если Центр управления выполняется как апплет, клавиша F1 работает только в окнах и записных книжках, для которых есть всплывающие справки. Чтобы получить всплывающие справки, можно нажать клавишу F1 в следующих компонентах: DB2 Universal Database for OS/390 Мастеры В остальных компонентах Центра управления клавиша F1 не вызывает справку. Для вывода справки для других компонентов используйте кнопку Справка или выпадающее меню Справка. 18.18 Выполнение Центра управления в режиме апплета (Windows 95) При попытке открыть Центр сценариев может возникнуть ошибка, если заданы неверные ID пользователя и пароль. Убедитесь, что при регистрации в Центре управления введены правильные ID пользователя и пароль. 18.19 Работа с большими результатами запросов Пользователь легко может построить запрос, который вернет большое число строк. Для пользователя не так просто предсказать, сколько строк может быть реально возвращено. Запросы, которые потенциально могут вернуть тысячи (или миллионы) строк, ставят две проблемы: Для получения результата может потребоваться много времени. Для хранения этого результата на клиенте может потребоваться много памяти. Чтобы упростить работу, DB2 разбивает большой набор результатов на порции. Она получает и выводить результаты запроса по порции за раз. В результате: Время отклика сокращается, так как первая порция становится доступной для просмотра, пока идет получение остальных порций. Требования к памяти на клиенте смягчаются, так как в каждый момент на клиенте хранится только одна порция. Чтобы управлять числом строк результата в памяти:: Откройте страницу Общие записной книжки Параметры инструментов. В разделе Максимальный размер выберите: Пример содержания, чтобы ограничить число строк результата, выводимых в окне Пример содержания. Задайте размер порции набора результатов (число строк) в поле ввода. Командный центр, чтобы ограничить число строк результата, выводимых в окне Результаты запроса Командного центра. Задайте размер порции набора результатов (число строк) в поле ввода. При работе с результатами запроса в окне Пример содержания или на странице Результаты запроса поле Строк в памяти указывает, сколько строк хранится в памяти для этого запроса. Это число никогда не превышает заданного Максимального размера. Нажмите кнопку Далее, чтобы получить следующую порцию набора результатов. Если кнопка Далее неактивна, достигнут конец набора результатов. Информационный центр 19.1 Ошибка "Неверный ярлык" в операционной системе Windows При использовании Информационного центра может возникнуть ошибка "Неверный ярлык". Если недавно был установлен новый браузер Web (или новая версия браузера), убедитесь, что документы HTML и HTM связаны с правильным браузером. Посмотрите в Справке Windows раздел "Чтобы выбрать программу, открывающую файл". 19.2 Открытие внешних ссылок Web в Netscape Navigator, если Netscape уже открыт (системы на основе UNIX) Если Netscape Navigator уже открыт и в нем выводится содержимое локального документа HTML DB2 или документа с внешнего сайта Web, при попытке открыть внешний сайт Web из Информационного центра возникнет ошибка Netscape. В сообщении об ошибке будет сказано: "Netscape не может найти файл или каталог с именем ." Чтобы обойти эту ошибку, закройте открытый браузер Netscape перед тем, как открывать внешний сайт Web. Netscape будет перезапущен и покажет этот внешний сайт Web. Учтите, что эта ошибка не возникает при попытке открыть локальный документ HTML DB2, когда Netscape уже открыт. 19.3 Проблемы запуска Информационного центра В некоторых системах Информационный центр может запускаться с запаздыванием, если он запущен через меню Пуск, программу Первые шаги или командой db2ic. Если вы столкнулись с этой проблемой, запустите Центр управления и затем выберите Справка --> Информационный центр. Мастера 20.1 Задание размера экстента в мастере по созданию базы данных В мастере по созданию базы данных можно задать параметры размер экстента и размер предварительной выборки для пользовательского табличного пространства (но не для таблиц каталога или временных таблиц) новой базы данных. Эта возможность разрешена, только если на странице "Пользовательские таблицы" этого мастера для этого пользовательского табличного пространства задан хотя бы один контейнер. 20.2 Мастер поддержки MQSeries DB2 Версии 7.2 содержит новый мастер поддержки MQSeries. Этот мастер создает табличную функцию, которая читает данные из очереди MQSeries, используя для этого функции DB2 MQSeries (они также появились только в Версии 7.2). Вы можете задать, как мастер будет интерпретировать каждое сообщение MQSeries: как строку с разделителями или как строку со столбцами фиксированной длины. Созданная табличная функция анализирует эту строку в соответствии с заданными вами параметрами и возвращает каждое сообщение MQSeries в виде строки таблицы для этой табличной функции. Этот мастер позволяет также создать над этой табличной функцией производную таблицу и просматривать сообщения MQSeries и результат табличной функции. Этот мастер можно запустить из построителя хранимых процедур или из Центра хранилищ данных. Для этого мастера необходимы: MQSeries версии 5.2 MQSeries Application Messaging Interface (AMI) Функции DB2 MQSeries Подробности этих требований приводятся в разделе MQSeries. Примеры и учебник по мастеру поддержки MQSeries смотрите в разделе обучения по адресу http://www.ibm.com/software/data/db2/udb/ide 20.3 Мастер поддержки OLE DB Этот мастер помогает создать табличную функцию, читающую данные из базы данных другого типа, поддерживающей стандарт Microsoft OLE DB. Можно также создать таблицу DB2, содержащую данные, считанные табличной функцией OLE DB, и создать производную таблицу для этой табличной функции OLE DB. Этот мастер можно запустить из построителя хранимых процедур или из Центра хранилищ данных. Для этого мастера необходимы: Провайдер OLE DB (такой как Oracle или Microsoft SQL Server) Функции поддержки OLE DB Примеры и учебник по мастеру поддержки OLE DB смотрите в разделе обучения по адресу http://www.ibm.com/software/data/db2/udb/ide Возможности для бизнеса Частичное содержание Business Intelligence Tutorial 21.1 Исправленный учебник Business Intelligence Tutorial Data Warehouse Center Administration Guide 22.1 Устранение неисправностей 22.2 Задание Excel как источника хранилища 22.3 Определение и запуск процессов 22.4 Диалоговое окно Экспорт метаданных 22.5 Определение значений для программы VWPMVS 22.6 Изменения в приложении Data Warehousing Sample (Пример хранилища данных) 22.7 Сообщения Центра хранилищ данных 22.8 Создание макета и загрузка данных на сервере интеграции OLAP DB2 22.9 Использование Classic Connect с Центром хранилищ данных 22.10 Структура среды Центра хранилищ данных 22.11 Использование преобразователя инвертирования 22.12 Доступ к данным DB2 Версии 5 с помощью агента хранилища данных DB2 Версии 7 22.12.1 Перенастройка серверов DB2 Версии 5 22.12.2 Изменение конфигурации агента 22.12.2.1 Агенты хранилищ UNIX 22.12.2.2 Агенты хранилищ Microsoft Windows NT, Windows 2000 и OS/2 22.13 Использование инкрементного принятия с замещением 22.14 Имена файлов данных трассировки компонентов 22.15 Open Client, необходимый для источников Sybase в AIX и операционной среде Solaris 22.16 Исправленные записи для примера 22.17 Глава 3. Setting up warehouse sources 22.17.1 Отображение поля Memo в Microsoft Access на источник хранилища 22.18 Глава 10. Maintaining the Warehouse Database 22.18.1 Компоновка таблиц в подтип шага для программы DB2 UDB RUNSTATS 22.19 Управляющая база данных хранилища по умолчанию 22.20 Окно Менеджер управляющей базы данных хранилища 22.21 Изменение активной управляющей базы данных хранилища 22.22 Создание и инициализация управляющей базы данных хранилища 22.23 Создание шагов SQL с информацией об издании 22.24 Изменение источников и назначений в окне Модель процесса 22.25 Добавление описаний к объектам Центра хранилищ данных 22.26 Запросы примера содержания 22.27 Редактирование оператора SQL Create DDL 22.28 Перенастройка бизнес-просмотров Visual Warehouse 22.29 Генерация таблиц назначения и первичных ключей 22.30 Использование драйверов ODBC Merant 22.31 Новый драйвер ODBC 22.32 Определение источника или потребителя хранилища в базе данных OS/2 22.33 Наблюдение за состоянием управляющей базы данных хранилища 22.34 Использование SQL Assist с базой данных примера TBC_MD 22.35 Использование функции FormatDate 22.36 Изменение параметра языка 22.37 Использование преобразователя Генерировать таблицу ключей 22.38 Поддержание соединений с базами данных 22.39 Установка удаленного клиента Центра хранилищ данных 22.40 Определение источника хранилища DB2 for VM 22.41 Определение таблицы назначения DB2 for VM или DB2 for VSE 22.42 Включение поддержку идентификаторов с ограничителями 22.43 Ошибка Data Joiner, указывающая на проблемы связывания 22.44 Настройка и выполнение репликации с помощью Центра хранилищ данных 22.45 Советы по устранению неисправностей 22.46 Поддерживаемые источники и потребители 22.47 Дополнения для поддерживаемых источников других типов (не баз данных IBM) 22.48 Создание источника данных вручную в Центре хранилищ данных 22.49 Импорт и экспорт метаданных с помощью CWMI (Common Warehouse Metadata Interchange - общий обмен метаданными хранилищ) 22.49.1 Введение 22.49.2 Изменение ваших метаданных после запуска утилиты импорта 22.49.3 Экспорт метаданных 22.50 Шаг утилиты Runstats в OS/390 22.51 Шаг утилиты Load в OS/390 Data Warehouse Center Application Integration Guide Электронная справка Центра хранилищ данных 24.1 Определение таблиц или производных таблиц для репликации 24.2 Выполнение VWP Essbase с агентом AS/400 24.3 Использование окна Сделать доступными метаданные Центра хранилищ данных и связанного с ним окна свойств 24.4 Внешние ключи 24.5 Записные книжки репликации 24.6 Импорт языка тегов 24.7 Ссылки для добавления данных 24.8 Импорт таблиц 24.9 Исправления для электронной справки по RUNSTATS и REORGANIZE TABLE 24.10 Страница Уведомление (записные книжки Свойства хранилища данных и Расписание) 24.11 Поле Модуль агента в записной книжке Системы агентов Начальный комплект OLAP DB2 25.1 Web-сайт сервера OLAP 25.2 Поддерживаемые служебные уровни операционных систем 25.3 Установка Начального комплекта OLAP DB2 в UNIX 25.4 Конфигурирование ODBC для Начального комплекта OLAP 25.4.1 Конфигурирование источников данных в системах UNIX 25.4.1.1 Конфигурирование переменных среды ODBC 25.4.1.2 Редактирование файла odbc.ini 25.4.1.3 Добавление источника данных в файл odbc.ini 25.4.1.4 Пример параметров ODBC для DB2 25.4.1.5 Пример параметров ODBC для Oracle 25.4.2 Конфигурирование каталога метаданных OLAP в системах UNIX 25.4.3 Конфигурирование источников данных в системах Windows 25.4.4 Конфигурирование каталога метаданных OLAP в системах Windows 25.4.5 После конфигурирования источника данных 25.5 Регистрация с рабочего стола Начального комплекта OLAP 25.5.1 Пример регистрации для Начального комплекта 25.6 Создание и конфигурирование вручную баз данных примера для Начального комплекта OLAP 25.7 Перенастройка прикладных программ в Начальный комплект OLAP Версии 7.2 25.8 Известные проблемы и ограничения 25.9 Отсутствие файлов EQD встраиваемого модуля OLAP для электронных таблиц Information Catalog Manager Administration Guide 26.1 Утилита инициализации менеджера каталогов данных 26.1.1 26.1.2 Вопросы лицензирования 26.1.3 Вопросы установки 26.2 Доступ к каталогам данных DB2 Версии 5 при помощи менеджера каталогов данных DB2 Версии 7 26.3 Конфигурирование каталога данных 26.4 Обмен метаданными с другими продуктами 26.5 Обмен метаданными при помощи командами flgnxoln 26.6 Обмен метаданными при помощи команды MDISDGC 26.7 Вызов программ Information Catalog Manager Programming Guide and Reference 27.1 Коды причин Менеджера каталогов данных Information Catalog Manager User's Guide Менеджер каталогов данных: Сообщения 29.1 Сообщение FLG0260E 29.2 Сообщение FLG0051E 29.3 Сообщение FLG0003E 29.4 Сообщение FLG0372E 29.5 Сообщение FLG0615E Менеджер каталогов данных: Электронная справка 30.1 Менеджер каталогов данных для Web DB2 Warehouse Manager Installation Guide 31.1 Требования к программному обеспечению для преобразователей хранилища Query Patroller Administration Guide 32.1 Клиент DB2 Query Patroller - это отдельный компонент 32.2 Перенастройка из Версии 6 DB2 Query Patroller с использованием dqpmigrate 32.3 Включение управления запросами 32.4 Положение табличного пространства для управляющих таблиц 32.5 Новые параметры команды dqpstart 32.6 Новый параметр команды iwm_cmd 32.7 Новая переменная реестра: DQP_RECOVERY_INTERVAL 32.8 Запуск QueryAdministrator 32.9 Управление пользователями 32.10 Создание очереди заданий 32.11 Использование интерфейса командной строки 32.12 Замечания по Query Enabler 32.13 DB2 Query Patroller Tracker может возвратить пустую страницу столбцов 32.14 Query Patroller и средства репликации 32.15 Приложение B. Troubleshooting DB2 Query Patroller Clients (Устранение неисправностей клиентов DB2 Query Patroller) Business Intelligence Tutorial 21.1 Исправленный учебник Business Intelligence Tutorial FixPak 2 содержит исправленный учебник Business Intelligence Tutorial по обработке деловой информации и пример базы данных Центра хранилищ данных, где устранен ряд ошибок Версии 7.1. Чтобы применить исправленный образец базы данных Центра хранилищ данных, необходимо: Если вы еще не установили образцы баз данных, создайте новые образцы баз данных с помощью панели запуска Первые шаги. Нажмите кнопку Пуск и выберите Программы --> DB2 IBM --> Первые шаги. Если у вас уже установлены баз данных примера, отбросьте баз данных примера DWCTBC, TBC_MD и TBC. Если в базах данных надо сохранить ранее добавленную информацию, прежде чем отбросить базы данных, создайте для нее резервные копии. Чтобы отбросить три баз данных примера: Откройте окно команд DB2, нажав кнопку Пуск и выбрав Программы --> DB2 IBM --> Окно команд. В окне команд DB2 последовательно введите следующие три команды, нажимая после каждой из них клавишу Enter: db2 drop database dwctbc db2 drop database tbc_md db2 drop database tbc Закройте командное окно DB2. Создайте новые базы данных примера с помощью панели запуска Первые шаги. Нажмите кнопку Пуск и выберите Программы --> DB2 IBM --> Первые шаги. Data Warehouse Center Administration Guide 22.1 Устранение неисправностей Информация об исправлении ошибок для Центра хранилищ данных была перемещена в руководство DB2 Troubleshooting Guide. 22.2 Задание Excel как источника хранилища В Главе 3 "Setting up warehouse sources" в разделе "Setting up non-DB2 database warehouse sources in Windows NT" в описании Microsoft Excel пропущен шаг. Этот шаг приводится ниже как Шаг 3. Если вы используете для доступа к электронным таблицам Excel драйвер ODBC Microsoft Excel 95/97 ODBC, надо создать именованную таблицу для каждого рабочего листа электронной таблицы. Чтобы создать именованную таблицу для каждого рабочего листа: Выберите нужные столбцы и строки. Выберите Excel ---> Вставка ---> Имя ---> Определить. Убедитесь, что поле ссылок в окне Определить имя содержит ячейки, которые вы выбрали на шаге 1. Если это не так, щелкните по значку справа от поля ссылок для включения всех выбранных ячеек. Введите имя (или используйте имя по умолчанию) для отмеченных данных. Нажмите кнопку OK. 22.3 Определение и запуск процессов В главе 5 "Defining and running processes" раздел "Starting a step from outside the Data Warehouse Center" надо указать, что для запуска шага, имя которого содержит двухбайтные символы, на рабочей станции сервера хранилища и на узле агента необходим JDK 1.1.8 или более новый. 22.4 Диалоговое окно Экспорт метаданных В главе 12 в разделе "Exporting and Importing Data Warehouse Center Metadata" в подразделе "Exporting the metadata to a tag language file" шаг 5 должен выглядеть так: Чтобы не экспортировать информацию о расписаниях, относящуюся к экспортируемым процессам, выключите переключатель Включать расписания. 22.5 Определение значений для программы VWPMVS На странице 180 в разделе "Defining values for a Submit OS/390 JCL jobstream (VWPMVS) program" в шаге 8 сказано, что необходимо определить файл .netrc в том же каталоге, что и файл JES. На самом деле файл .netrc создается этой программой. Если этот файл не существует, программа создает его в начальном каталоге. Если в начальном каталоге уже есть файл .netrc, программа переименует его и создаст новый файл. Когда программа завершает свою работу, она удаляет новый созданный ей файл .netrc и переименовывает исходный файл в .netrc. 22.6 Изменения в приложении Data Warehousing Sample (Пример хранилища данных) В приложении Data warehousing sample в разделе "Viewing and modifying the sample metadata" в список таблиц источника должна быть включена таблица GEOGRAPHIES. В этом же приложении в разделе "Promoting the steps" в описании процедуры перевода шага в режим производства следующее предложение неверно, так как таблица назначения создается при переводе шага в режим тестирования: The Data Warehouse Center starts to create the target table, and displays a progress window. 22.7 Сообщения Центра хранилищ данных В Microsoft Windows NT и Windows 2000 Центр хранилищ данных записывает информацию о событиях в системный журнал событий. ID события соответствует номеру сообщения Центра хранилищ данных. Информацию о сообщениях Центра хранилищ данных смотрите в руководстве Справочник по сообщениям. 22.8 Создание макета и загрузка данных на сервере интеграции OLAP DB2 В примере на рисунке 20 на странице 315 есть ошибка. Правильные команды: "C:\IS\bin\olapicmd" < "C:\IS\Batch\my_script.script" > "C:\IS\Batch\my_script.log" Двойные кавычки вокруг "C:\IS\bin\olapicmd" необходимы, если имя каталога в пути содержит пробел (например, Program Files). 22.9 Использование Classic Connect с Центром хранилищ данных В приложении F "Using Classic Connect with the Data Warehouse Center" раздел "Installing the CROSS ACCESS ODBC driver" на странице 388 надо заменить на следующую информацию: Установите драйвер ODBC CROSS ACCESS, выполнив пользовательскую установку менеджера хранилищ DB2 Версии 7 и выбрав компонент Classic Connect Drivers. При стандартной установке менеджера хранилищ DB2 этот драйвер не устанавливается. Драйвер ODBC CROSS ACCESS будет установлен в подкаталог ODBC32 каталога SQLLIB. После завершения установки надо вручную добавить путь для драйвера (например, C:\Program Files\SQLLIB\ODBC32) к системной переменной среды PATH. Если у вас уже установлена другая версия драйвера ODBC CROSS ACCESS, путь ...\SQLLIB\ODBC32\ надо поместить перед путем к предыдущей версии. Операционная система будет использовать первый каталог в пути, где найдет драйвер ODBC CROSS ACCESS. К приложению F "Using Classic Connect with the Data Warehouse Center" надо добавить следующую процедуру: Установка драйвера ODBC Classic Connect: Вставьте компакт-диск менеджера хранилищ в дисковод CD-ROM. Откроется панель запуска. Нажмите кнопку Установить на панели запуска. В окне Выбор продукта включите переключатель Менеджер хранилища DB2 и нажмите кнопку Далее. В окне Выбор типа установки выберите Пользовательская и нажмите кнопку Далее. В окне Выбор компонентов выберите Драйверы Classic Connect и Агент хранилища, выключите остальные переключатели и нажмите Далее. В окне Начать копирование файлов посмотрите, что вы выбрали. Если вы хотите изменить выбор, нажмите кнопку Назад, чтобы вернуться в окно, где можно изменить сделанный выбор. Нажмите кнопку Далее, чтобы начать установку. 22.10 Структура среды Центра хранилищ данных В приложении G "Data Warehouse Center environment structure" на странице 401 в таблице есть неверная запись. Каталог C:\Program Files\SQLLIB\ODBC32 не добавляется к переменной среды PATH. К переменной среды PATH добавляется только C:\Program Files\SQLLIB\BIN. 22.11 Использование преобразователя инвертирования В книге говорится, что преобразователь инвертирования может создать таблицу назначения на основе параметров, однако пропущено уточнение, что в сгенерированной таблице назначения не будет требуемых выходных столбцов, которые надо тем самым создавать явно. 22.12 Доступ к данным DB2 Версии 5 с помощью агента хранилища данных DB2 Версии 7 Агенты хранилища данных DB2 Версии 7, сконфигурированные процессом установки DB2 Версии 7, будут поддерживать доступ к данным DB2 Версии 6 и DB2 Версии 7. Если требуется доступ к данным DB2 Версии 5, необходимо сделать одно из следующих действий: Перенастроить серверы DB2 Версии 5 в DB2 Версии 6 или 7. Изменить конфигурацию агента (в соответствующей операционной системе), чтобы разрешить доступ к данным DB2 Версии 5. Агенты хранилища данных DB2 Версии 7 не поддерживают доступ к данным из DB2 Версии 2 или более ранних версий. 22.12.1 Перенастройка серверов DB2 Версии 5 Информацию о перенастройке серверов DB2 Версии 5 смотрите в руководстве DB2 Universal Database: Быстрый старт для конкретной операционной системы. 22.12.2 Изменение конфигурации агента Ниже описывается, как изменить конфигурацию агента в каждой операционной системе. При перенастройке серверов DB2 в DB2 Версии 6 или более поздней удалите внесенные в конфигурацию изменения. 22.12.2.1 Агенты хранилищ UNIX Чтобы настроить агенты хранилища данных для UNIX для доступа к данным из DB2 Версии 5 с использованием доступа CLI или ODBC: Установите клиент времени выполнения DB2 Версии 6. Его можно получить, выбрав загрузку клиента на странице: http://www.ibm.com/software/data/db2/udb/support Измените файл конфигурации агента хранилища данных, чтобы переменная среды DB2INSTANCE указывала на экземпляр DB2 Версии 6. Внесите в каталог все базы данных в этом экземпляре DB2 Версии 6, к которым будет обращаться агент хранилища данных. Остановите процесс демона агента командой kill с ID процесса демона агента. Демон агента будет перезапущен автоматически. Для остановки процесса требуются полномочия root. 22.12.2.2 Агенты хранилищ Microsoft Windows NT, Windows 2000 и OS/2 Чтобы настроить агенты хранилища данных для Microsoft NT, Windows 2000 или OS/2 для доступа к данным из DB2 Версии 5: Установите DB2 Connect Enterprise Edition Версии 6 на рабочей станции, отличной от той, где установлен агент хранилища данных DB2 Версии 7. DB2 Connect Enterprise Edition входит в DB2 Universal Database Enterprise Edition и DB2 Universal Database Enterprise - Extended Edition. Если установлена Версия 6 одного из этих продуктов, не нужно отдельно устанавливать DB2 Connect. Ограничение:На одной рабочей станции Windows NT или OS/2 нельзя установить несколько версий DB2. Можно установить DB2 Connect на другой рабочей станции Windows NT или на рабочей станции OS/2 или UNIX. Сконфигурируйте агент хранилища данных и DB2 Connect Версии 6 для доступа к данным DB2 Версии 5. Дополнительную информацию смотрите в публикации Руководство пользователя DB2 Connect. Далее представлен обзор требуемых шагов: В системе DB2 Версии 5 используйте процессор командной строки DB2 для внесения в каталог базы данных Версии 5, к которой будет обращаться агент хранилища данных. В системе DB2 Connect используйте процессор командной строки DB2 для внесения в каталог: Узла TCP/IP для системы DB2 Версии 5 Базы данных для системы DB2 Версии 5 Записи DCS для системы DB2 Версии 5 На рабочей станции агента хранилища данных используйте процессор командной строки DB2 для внесения в каталог: Узла TCP/IP для системы DB2 Connect Базы данных для системы DB2 Connect Информацию о внесении в каталог баз данных смотрите в руководстве Дополнение по установке и конфигурированию DB2 Universal Database. На рабочей станции агента хранилища данных свяжите пакет CLI DB2 с каждой базой данных, для обращения к которой будет использоваться DB2 Connect. Далее показан пример команд DB2 для связывания с базой данных DB2 Версии 5 с именем v5database. Для ввода этих команд используйте процессор командной строки DB2. Файлы db2cli.lst и db2ajgrt находятся в каталоге \sqllib\bnd. db2 connect to v5database user ID_пользователя using пароль db2 bind db2ajgrt.bnd db2 bind @db2cli.lst blocking all grant public где ID_пользователя - ID пользователя для базы данных Версии 5, а пароль - пароль для этого ID пользователя. При связывании db2cli.list с базой данных DB2 Версии 5 возникает ошибка. Эта ошибка вызывается тем, что в этой конфигурации не поддерживаются большие объекты. Эта ошибка не влияет на доступ агента хранилища данных к базе данных DB2 Версии 5. Для обращения к данным DB2 Версии 5 через DB2 Connect требуется FixPak 14 для DB2 Universal Database Версии 5, доступный с июня 2000 года. Номер APAR для этого FixPak - JR14507. 22.13 Использование инкрементного принятия с замещением В шаге, в котором применяется тип заполнения Замещение, инкрементное принятие используется только при вставке новых данных. Старые данные удаляются внутри одной области действия принятия. Если нужно удалить данные, не создавая записи журнала, выполните шаг, загружающий пустой файл, перед выполнением шага SQL с типом заполнения Добавление. 22.14 Имена файлов данных трассировки компонентов В Windows NT Центр хранилищ данных записывает следующие файлы: AGNTnnnn.Log содержит информацию трассировки. nnnn - числовой ID процесса агента хранилища из 4 или 5 символов в зависимости от операционной системы. AGNTnnnn.Set содержит параметры среды агента. nnnn - числовой ID процесса агента хранилища из 4 или 5 символов в зависимости от операционной системы. Каталог по умолчанию - x:\program files\sqllib\logging, где x - буква диска, где установлена DB2. 22.15 Open Client, необходимый для источников Sybase в AIX и операционной среде Solaris В Главе 3 "Setting up warehouse sources, AIX" в таблице 3 "Connectivity requirements for supported data sources on AIX, and for Solaris Operating Environment" и в таблице 4 "Connectivity requirements for supported data sources on the Solaris Operating Environment" строка для Sybase должна содержать дополнительный шаг в столбце "How to connect:". Этот дополнительный шаг показан ниже как шаг 3. 3. Установите Open Client Обратите внимание на то, что Open Client необходим для соединения с источниками Sybase на платформах Windows NT или Windows 2000. 22.16 Исправленные записи для примера Рисунки 6, 8, 10 и 11 в Главе 3 "Setting up warehouse sources" руководства Data Warehouse Center Administration Guide содержат неправильный путь для атрибута Driver. Ниже показаны правильные пути. Рисунок 6 Driver=/home/db2_07_01/3.6/odbc/lib/ivinf12.so Рисунок 8 Driver=/home/db2_07_01/3.6/odbc/lib/ivsyb1112.so Рисунок 10 Driver=/home/db2_07_01/3.6/lib/ivor814.so Рисунок 11 Driver=/home/db2_07_01/3.6/odbc/lib/ivmsss14.so 22.17 Глава 3. Setting up warehouse sources 22.17.1 Отображение поля Memo в Microsoft Access на источник хранилища Поле Memo базы данных Microsoft Access представляется в источниках Центра хранилищ данных как тип данных LONG VARCHAR с размером столбца больше 1 Гбайта. Для поддержки практических конфигураций систем Центр хранилищ данных усекает значения, превышающие 128 Кбайт. Чтобы значения Memo-полей в источнике хранилища не усекались, перед использованием таблицы в шаге измените тип данных столбца, который принимает Memo-поля, с LONG VARCHAR на CLOB. Если не сделать этого, все значения длиннее 128 Кбайт будут усечены. Для OS/390 и OS/400 необходима поддержка DRDA для типа данных CLOB. Для OS/390 тип данных CLOB поддерживается, начиная с DB2 Версии 6. Для OS/400 тип данных CLOB поддерживается, начиная с Версии 4, Выпуска 4 с DB FixPak 4 или новее (PTF SF99104). Для OS/400 установочный диск Версии 4, Выпуск 4 от февраля 1999 также содержит поддержку типа данных CLOB. 22.18 Глава 10. Maintaining the Warehouse Database 22.18.1 Компоновка таблиц в подтип шага для программы DB2 UDB RUNSTATS Подтип шага для программы RUNSTATS читает из потребителя хранилища и пишет в него. Свяжите потребитель с подтипом шага в окне Модель процесса перед определением значений для шага. 22.19 Управляющая база данных хранилища по умолчанию При типовой установке DB2 в Windows NT или Windows 2000 система DB2 создает и инициализирует управляющую базу данных хранилища по умолчанию для Центра хранилищ данных, если в реестре Windows NT не указана активная управляющая база данных хранилища. Инициализация - это процесс, во время которого Центр хранилищ данных создает управляющие таблицы, необходимые для хранения метаданных Центра хранилищ данных. Управляющая база данных хранилища по умолчанию имеет имя DWCTRLDB. При регистрации в Центре хранилищ данных по умолчанию в качестве управляющей базы данных хранилища задается DWCTRLDB. Чтобы увидеть имя управляющей базы данных хранилища, которая будет использоваться, нажмите кнопку Дополнительные в окне Регистрация Центра хранилищ данных. 22.20 Окно Менеджер управляющей базы данных хранилища Окно Менеджер управляющей базы данных хранилища устанавливается при типовой установке DB2 в Windows NT или Windows 2000. В этом окне можно изменить активную управляющую базу данных хранилища, создать и инициализировать новые управляющие базы данных хранилища и перенастроить управляющие базы данных хранилища, которые использовались с IBM Visual Warehouse. Эти действия описаны в последующих разделах. Перед использованием окна Менеджер управляющей базы данных хранилища остановите сервер хранилища данных. 22.21 Изменение активной управляющей базы данных хранилища Если нужно использовать управляющую базу данных хранилища, не совпадающую с активной управляющей базой данных хранилища, зарегистрируйте эту базу данных в качестве активной с помощью окна Менеджер управляющей базы данных хранилища. Если при регистрации в Центре хранилищ данных задать имя, не совпадающее с именем активной управляющей базы данных хранилища, будет выдано сообщение об ошибке, указывающее, что заданная база данных не совпадает с базой данных, заданной сервером хранилища данных. Чтобы зарегистрировать базу данных: Выберите Пуск -> Программы -> IBM DB2 -> Менеджер управляющей базы данных хранилища. В поле Новая управляющая база введите имя нужной управляющей базы данных. В поле Схема введите имя схемы для этой базы данных. В поле ID пользователя введите ID пользователя для обращения к базе данных. В поле Пароль введите пароль для данного ID пользователя. В поле Подтверждение пароля введите этот пароль еще раз. Нажмите кнопку OK. Окно останется открытым. В поле Сообщения будут появляться сообщения о ходе процесса регистрации. Когда процесс будет завершен, закройте окно. 22.22 Создание и инициализация управляющей базы данных хранилища Если нужно создать управляющую базу данных хранилища, отличающуюся от базы данных по умолчанию, ее можно создать в процессе установки или после установки с помощью окна Менеджер управляющей базы данных хранилища. В процессе установки можно создать базу данных на той же рабочей станции, что и сервер хранилища данных, или на другой рабочей станции. Чтобы изменить имя управляющей базы данных хранилища, создаваемой во время установки, необходимо выполнить выборочную установку и изменить имя в окне Определить локальную управляющую базу данных хранилища. Процесс установки создаст базу данных с заданным именем, инициализирует ее для использования с Центром хранилищ данных и зарегистрирует ее в качестве активной управляющей базы данных хранилища. Чтобы в процессе установки создать управляющую базу данных хранилища на рабочей станции, отличающейся от рабочей станции сервера хранилища данных, выберите Локальную управляющую базу данных хранилища во время выборочной установки. Процесс установки создаст эту базу данных. После установки необходимо использовать окно Менеджер управляющей базы данных хранилища на рабочей станции сервера хранилища данных и выполнить шаги, описанные в разделе 22.21, Изменение активной управляющей базы данных хранилища. Задайте имя базы данных, заданное при установке. Эта база данных будет инициализирована для использования с Центром хранилищ данных и зарегистрирована в качестве активной управляющей базы данных хранилища. Чтобы создать и инициализировать управляющую базу данных хранилища после процесса установки, используйте окно Менеджер управляющей базы данных хранилища на рабочей станции сервера хранилища данных. Если эта новая управляющая база данных хранилища находится не на рабочей станции сервера хранилища данных, ее нужно сначала создать и внести в каталог на рабочей станции сервера хранилища данных. Затем выполните шаги, описанные в разделе 22.21, Изменение активной управляющей базы данных хранилища. Задайте имя базы данных, заданное при установке. При регистрации в Центре хранилищ данных нажмите кнопку Дополнительные и введите имя активной управляющей базы данных хранилища. 22.23 Создание шагов SQL с информацией об издании При создании шагов SQL с информацией об издании на основе использования можно создать индекс (не индекс уникальности) для столбца издания, чтобы ускорить производительность операций удаления изданий. Делайте это только для больших таблиц хранилища данных, поскольку при вставке небольшого числа строк производительность операций вставки может ухудшаться. 22.24 Изменение источников и назначений в окне Модель процесса Если изменить источник или назначение в окне Модель процесса, это изменение будет немедленно автоматически сохранено. Если сделаны другие изменения (например, добавление шага), необходимо явно сохранить изменения, чтобы сделать их постоянными. Чтобы сохранить изменения, выберите Процесс --> Сохранить. 22.25 Добавление описаний к объектам Центра хранилищ данных В поле Описание записной книжки Центр хранилищ данных можно задать до 254 символов. Используется эта максимальная длина, а не та, что указана в электронной справке. 22.26 Запросы примера содержания Для источника типа плоский файл нельзя успешно выполнить запрос примера содержания, использующий агент AS/400. Хотя можно создать источник типа плоский файл и попытаться использовать агент AS/400 для выдачи запроса примера содержания, этот запрос завершится неудачно. Можно получить сообщение об ошибке при выполнении запроса примера содержания для назначения хранилища данных в окне модели процесса. Эта ошибка связана с доступностью общей системы агента для источника хранилища данных, назначения хранилища данных и шага в процессе. Список доступных систем агентов для шага - пересечение множеств систем агентов IR источника хранилища данных, систем агентов IR назначения хранилища данных и систем агентов, доступных для конкретного шага (эти шаги выбраны на последней странице записной книжки свойств систем агентов). Например, вы можете захотеть увидеть пример содержания для процесса, выполняющего программу копирования файла при помощи FTP (VWPRCPY). Используемый в этом процессе шаг должен быть выбран для системы агента в определении этой системы агента. При выполнении запроса примера содержания для файла назначения обычно используется первая система агента в выбранном списке. Однако операции поддержки базы данных могут влиять на порядок, в котором заданы системы агентов в этом списке. Запросы примера содержания завершатся ошибкой, если выбранная система агента находится не на то же системе, что файл назначения и файл источника. 22.27 Редактирование оператора SQL Create DDL При попытке отредактировать оператор SQL Create DDL для таблицы назначения для шага в режиме разработки вы можете увидеть следующее вводящее в заблуждение сообщение: "Изменения оператора SQL Create DDL не будут отражены в определении таблицы или реальной физической таблице. Продолжить?" Изменения будут отражены в реальной физической таблице. Игнорируйте это сообщение и продолжайте изменять оператор Create DDL. Исправленная версия этого сообщения для шагов в режиме разработки выглядит так: "Изменения оператора SQL Create DDL не будут отражены в определении таблицы. Продолжить?" Для шагов в режиме тестирования или производства это сообщение правильно. Центр хранилищ данных не будет изменять физическую таблицу назначения, созданную перед переводом шага в режим тестирования. 22.28 Перенастройка бизнес-просмотров Visual Warehouse Если нужно перенастроить бизнес-просмотры синхронизации метаданных Visual Warehouse в Центр хранилищ данных, переведите эти бизнес-просмотры в режим производства перед перенастройкой управляющей базы данных хранилища данных. Если бизнес-просмотры находятся в режиме производства, их расписания будут перенастроены в Центр хранилищ данных. Если бизнес-просмотры находятся в другом режиме, они будут перенастроены в режим тестирования без их расписаний. Перенастроенные шаги нельзя перевести в режим производства. Необходимо заново создать шаги синхронизации в Центре хранилищ данных и удалить перенастроенные шаги. 22.29 Генерация таблиц назначения и первичных ключей Когда Центр хранилищ данных генерирует таблицу назначения для шага, он не генерирует первичный ключ для таблицы назначения. Некоторые из преобразований (например, Скользящее среднее) используют сгенерированную таблицу в качестве таблицы источника и также требуют, чтобы таблица источника имела первичный ключ. Прежде чем использовать с преобразованием сгенерированную таблицу, определите для нее первичный ключ, щелкнув правой кнопкой мыши по этой таблице в Центре управления DB2 и выбрав Изменить. 22.30 Использование драйверов ODBC Merant Для обращения к Microsoft SQL Server в Windows NT с использованием драйверов ODBC Merant убедитесь, что системный путь содержит каталог sqllib\odbc32. 22.31 Новый драйвер ODBC Если вы будете использовать агент Центра хранилищ данных AIX или Sun, который связан для обращения к источникам ODBC Merant, а также будет обращаться к базам данных DB2,измените значение атрибута "Driver=" в разделе источников DB2 файла .odbc.ini следующим образом: AIX: имя драйвера - /usr/lpp/db2_07_01/lib/db2_36.o Пример записи об источнике ODBC для AIX: [SAMPLE] Driver=/usr/lpp/db2_07_01/lib/db2_36.o Description=DB2 ODBC Database Database=SAMPLE Sun: имя драйвера - /opt/IBMdb2/V7.1/lib/libdb2_36.so Пример записи об источнике ODBC для Sun: [SAMPLE] Driver=/opt/IBMdb2/V7.1/lib/libdb2_36.so Description=DB2 ODBC Database Database=SAMPLE 22.32 Определение источника или потребителя хранилища в базе данных OS/2 При определении источника хранилища данных или назначения хранилища данных для базы данных OS/2 вводите имя базы данных в верхнем регистре. 22.33 Наблюдение за состоянием управляющей базы данных хранилища Центр управления DB2 или процессор командной строки могут указывать, что управляющая база данных хранилища данных находится в несовместимом состоянии. Информация об этом состоянии может появляться, поскольку это состояние указывает, что сервер хранилища данных не передал свое исходное сообщение запуска зарегистрированному в хранилище данных пользователю. 22.34 Использование SQL Assist с базой данных примера TBC_MD Для содержащегося в базе данных TBC_MD примера использования хранилища данных нельзя использовать SQL Assist для изменения оператора SQL в шаге выбора сценария SQL, поскольку этот оператор SQL был отредактирован после его создания в SQL Assist. 22.35 Использование функции FormatDate Чтобы использовать функцию FormatDate, нажмите кнопку Построить SQL на странице Оператор SQL записной книжки Свойства для шага SQL. Выходное значение функции FormatDate имеет тип данных varchar(255). Нельзя изменить этот тип данных, выбрав тип данных дата, время или дата/время из списка Категория на странице Параметры функции - FormatDate page. 22.36 Изменение параметра языка В операционных средах AIX и Solaris процесс установки задает язык для публикации каталога данных и экспорта на сервер интеграции OLAP. Если нужно использовать эти функции в языке, отличном от языка, заданном во время установки, создайте следующую программную связь, введя следующую команду в одну строку: В AIX /usr/bin/ln -sf /usr/lpp/db2_07_01/msg/локаль/flgnxolv.str /usr/lpp/db2_07_01/bin/flgnxolv.str локаль Обозначение языка в формате xx_yy В операционной среде Solaris /usr/bin/ln -sf /opt/IBMdb2/V7.1/msg/локаль/flgnxolv.str /opt/IBMdb2/V7.1/bin/flgnxolv.str локаль Обозначение языка в формате xx_yy 22.37 Использование преобразователя Генерировать таблицу ключей При использовании опции Изменить значение в ключевом столбце преобразования Генерировать таблицу ключей это преобразование изменяет только те строки в таблице, в которых нет значений ключей, то есть ключи с пустыми значениями. После вставки в таблицу дополнительных строк они будут содержать пустые значения ключей, пока вновь не будет выполнено это преобразование. Чтобы избежать этой ситуации, используйте следующий подход: При повторном выполнении этого преобразования используйте опцию Заменить все значения, чтобы заново сгенерировать ключи для всех строк. 22.38 Поддержание соединений с базами данных Сервер хранилища данных не поддерживает соединений с локальными и удаленными базами данных, если управляющий этими базами данных сервер DB2 остановлен и заново запущен. Если система DB2 была остановлена и заново запущена, остановите и заново запустите также службы хранилищ данных. 22.39 Установка удаленного клиента Центра хранилищ данных Чтобы при установке клиента администратора DB2 и инструментов хранилища данных настроить клиент администратора Центра хранилищ данных на различных рабочих станциях с одной рабочей станции, содержащей сервер хранилища данных, необходимо добавить номер порта TCP/IP, используемого рабочей станцией сервера хранилища данных для получения файла служб для рабочей станции клиента. Добавьте в файл служб следующую запись: vwkernel 11000/tcp 22.40 Определение источника хранилища DB2 for VM При определении источника хранилища данных для базы данных DB2 for VM, обращение к которой производится через шлюз DRDA, есть ограничения на использование типов данных CLOB и BLOB: Нельзя использовать функцию примера содержания для просмотра данных в типах данных CLOB и BLOB. Нельзя использовать столбцы типов данных CLOB и BLOB с шагом SQL. Это известные ограничения для сервера DB2 for VM Версии 5.2, в которой большие объекты нельзя передавать клиенту DB2 Версии 7, используя DRDA. 22.41 Определение таблицы назначения DB2 for VM или DB2 for VSE При определении в Центре хранилищ данных таблицы назначения DB2 for VM или DB2 for VSE не включайте переключатель Предоставить всем (public). Синтаксис команды GRANT, генерируемой Центром хранилищ данных, не поддерживается DB2 for VM и DB2 for VSE. 22.42 Включение поддержку идентификаторов с ограничителями Чтобы включить поддержку идентификаторов с ограничителями для сервера Sybase и Microsoft SQL Server в Windows NT: включите переключатель Разрешить идентификаторы в кавычках на странице Дополнительные записной книжки Настройка драйвера ODBC. Чтобы включить поддержку идентификаторов с ограничителями для Sybase в UNIX, отредактируйте запись для источника данных Sybase в файле .odbc.ini и задайте атрибут соединения EQI=1. 22.43 Ошибка Data Joiner, указывающая на проблемы связывания Пользователи, использующие DataJoiner с DB2 Версии 7.1 + FixPak 2 или новее, могут получать сообщение, указывающее на проблемы со связыванием. Например, при использовании источника DataJoiner с агентом Центра хранилищ данных Версии 7 вы можете получить сообщение об ошибке такого вида: DWC07356E Агент не смог выполнить команду типа "importTableNames" для издания "0" шага "?". SQL0001N Связывание или прекомпиляция не были завершены успешно. SQL0001N Пакет "NULLID.SQLL6D05" не найден. SQLSTATE=51002 RC = 7356 RC2 = 8600 Чтобы исправить эту ошибку, добавьте в файл db2cli.ini следующие строки: [COMMON] DYNAMIC=1 В системах UNIX файл db2cli.ini находится в каталоге .../sqllib/cfg. В Windows NT файл db2cli.ini находится в каталоге .../sqllib. 22.44 Настройка и выполнение репликации с помощью Центра хранилищ данных Для настройки и выполнения репликации с помощью Центра хранилищ данных требуется, чтобы управляющие таблицы репликации существовали как в управляющей базе данных хранилища, так и в базах данных назначения хранилища. Для репликации необходимо, чтобы управляющие таблицы репликации существовали и управляющей базе и базах данных назначения. Управляющие таблицы репликации находятся в схеме ASN и все их имена начинаются с IBMSNAP. Управляющие таблицы репликации автоматически создаются в базе данных при определении источника репликации с помощью Центра управления, если эти управляющие таблицы еще не существуют. Учтите, что эти управляющие таблицы должны также существовать в базе данных назначения. Чтобы создать набор управляющих таблиц в базе данных назначения можно создать источник репликации с помощью Центра управления и затем удалить этот источник репликации, не удаляя управляющие таблицы. Можно также определить управляющие таблицы, используя продукт DJRA (Data Joiner Replication Administration). Установка и использование DJRA Чтобы для определения управляющих таблиц использовать DJRA, необходимо сначала установить этот продукт. DJRA поставляется вместе с DB2. Чтобы установить DJRA, перейдите в каталог d:\sqllib\djra (где установлена система DB2) и запустите пакет djra.exe. DJRA будет установлен в системе. После этого для запуска DJRA в Windows NT из меню Пуск выберите DB2 for Windows NT и затем выберите Репликация и затем Инструменты управления репликацией. Интерфейс DJRA немного отличается от обычного интерфейса прикладных программ NT. Для каждой функции, которую он выполняет, он создает набор операторов SQL, но не выполняет их. Пользователь должен вручную сохранить сгенерированные операторы SQL и затем использовать для их выполнения функцию Выполнить SQL. Настройка выполнения программ Capture и Apply Инструкции по конфигурированию используемой системы для выполнения программ Capture и Apply смотрите в справочном руководстве Replication Guide and Reference Manual. Необходимо связать программы Capture и Apply с каждой базой данных, для которых они будут использоваться. Обратите внимание на то, что НЕ нужно создавать файл паролей. Центр хранилищ данных автоматически создаст файл паролей для регистрации репликации. Определение источника репликации в Центре управления Для определения источника репликации используйте Центр управления. Центр хранилищ данных поддерживает пять типов репликации: Пользовательская копия, Момент времени, Базовая сводка, Сводка изменений и Промежуточные таблицы (таблицы CCD). Для типов Пользовательская копия, Момент времени и Сжатая промежуточная таблица требуется, чтобы таблица источника репликации имела первичный ключ. Для других типов репликации это не требуется. Имейте это в виду при выборе входной таблицы, определяемой в качестве источника репликации. Источник репликации на самом деле представляет собой определение исходной таблицы источника и созданной таблицы CD (таблицы изменений данных), хранящей информацию об изменениях данных до того, как они будет перемещены в таблицу назначения. При определении источника репликации в Центре управления в ASN.IBMSNAP_REGISTER записывается определение источника и его таблицы CD. Одновременно создается таблица CD, но изначально она не содержит данных. При определении источника репликации можно выбрать, включать только столбцы образа данных после изменения или столбцы образа данных после изменения и образа данных перед изменением. Для этого используйте переключатели на странице Источник репликации Центра управления. Затем для выбранных столбцов образов данных перед изменением и после изменения создаются столбцы в новой таблице CD. В таблице CD столбцы образа данных после изменения имеют те же имена, что столбцы исходной таблицы источника. Имена столбцов образа данных перед изменением начинаются с символа 'X'. Импорт источника репликации в Центр хранилищ данных Создав источник репликации в Центре управления, можно импортировать его в Центр хранилищ данных. При импорте источника репликации включите переключатель "Таблицы, которые можно реплицировать". Тогда Центр хранилищ данных посмотрит записи в таблице ASN.IBMSNAP_REGISTER, чтобы узнать какие таблицы были определены как источники репликации. Определение шага репликации в Центре хранилищ данных В окне Модель процесса выберите один из пяти типов репликации: Базовая сводка, Сводка изменений, Момент времени, Промежуточная таблица и Пользовательская копия. Если нужно определить тип репликации Базовая сводка или Сводка изменений, посмотрите идущий ниже раздел о том, как настроить репликацию типа Базовая сводка или Сводка изменений в Центре хранилищ данных. Выберите соответствующий источник репликации для этого типа репликации. Как указано выше, для типов Пользовательская копия, Момент времени и Сжатая промежуточная таблица требуется, чтобы таблица источника репликации имела первичный ключ. Соедините источник репликации с шагом репликации. Откройте свойства шага репликации. Перейдите за страницу Параметры. Выберите нужные столбцы. Включите переключатель для создания таблицы назначения. Выберите потребитель хранилища данных. Перейдите на страницу Опции обработки и заполните поля параметров. Нажмите кнопку OK. Запуск программы Capture В окне DOS введите команду: ASNCCP база-данных-источника COLD PRUNE Параметр COLD задает холодный запуск и вызывает удаление всех существующих данных из таблиц CD. Параметр PRUNE указывает программе Capture, что нужно поддерживать таблицу IBMSNAP_PRUNCNTL. Оставьте работать программу Capture. В нужное время ее можно будет остановить, нажав клавиши Ctrl-Break в ее окне DOS. Не забудьте, что нужно запустить программу Capture перед запуском программы Apply. Перевод шага репликации в режим тестирования Вернитесь в Центр хранилищ данных и переведите определенный шаг репликации в режим тестирования. В результате информация регистрации репликации будет записана в управляющие таблицы репликации. В таблицы IBMSNAP_SUBS_SET, IBMSNAP_SUBS_MEMBR, IBMSNAP_SUBS_COLS и IBMSNAP_SUBS_EVENT будут добавлены записи для поддержки этого набора регистрации. Кроме этого, в базе данных назначения будет создана таблица назначения. Для репликации типа Пользовательская копия, Момент времени или Сжатая промежуточная таблица таблица назначения должна иметь первичный ключ. Перейдите в Центр управления и создайте этот первичный ключ. Учтите, что для некоторых таблиц назначения репликации также требуются индексы уникальности для различных столбцов. Центр хранилищ данных создает эти индексы уникальности при создании таблицы, поэтому вам НЕ нужно создавать их самостоятельно. Но имейте в виду, что при определении в Центре управления первичного ключа для таблицы, уже имеющей для этого столбца индекс уникальности, будет выдано предупреждение. Игнорируйте его. Перевод шага репликации в режим производства При переводе шага репликации в режим производства не выполняются изменения регистрации репликации. Как и для других шагов, эта операция затрагивает только Центр хранилищ данных. Выполнение шага репликации После перевода шага репликации в режим тестирования его можно выполнить. Перед внесением каких-либо изменений в таблицу источника сначала выполните этот шаг. Перейдите в раздел Выполняемая работа (WIP) и выберите этот шаг репликации. Выполните его. В таблицу IBMSNAP_SUBS_EVENT будет добавлена запись о событии, а запись регистрации в IBMSNAP_SUBS_SET станет активной. Сразу же выполняется набор регистрации. При выполнении набора регистрации агент вызывает программу Apply, обрабатывающую активные регистрации. Если после этого изменить исходную таблицу источника, измененные данные будут записаны в таблицу CD. Если после этого выполнить шаг репликации, снова запустится программа Apply и она переместит измененные данные из таблицы CD в таблицу назначения. Изменение режима шага репликации на режим тестирования При изменении режима шага репликации на режим тестирования не выполняются изменения регистрации репликации. Как и для других шагов, эта операция затрагивает только Центр хранилищ данных. Понижение режима шага репликации до режима разработки При изменении режима шага репликации на режим разработки из управляющих таблиц репликации удаляется информация о регистрации. После завершения изменения режима на режим разработки в управляющих таблицах репликации не останется записей для этой конкретной регистрации. Будет также отброшена таблица назначения. Таблица CD будет оставлена, так как она относится к определению источника репликации. Как настроить репликацию типа Базовая сводка или Сводка изменений в Центре хранилищ данных. Входная таблица. Выберите входную таблицу, которую можно использовать с оператором GROUP BY. Для нашего примера мы будем использовать входную таблицу со следующими столбцами: SALES, REGION, DISTRICT. Шаг репликации. Выберите тип репликации Базовая сводка или Сводка изменений. Откройте свойства шага. При выполнении программы Apply она должна выполнять оператор SELECT такого типа: SELECT SUM(SALES), REGION, DISTRICT GROUP BY REGION, DISTRICT. Поэтому в качестве выходных столбцов вам нужно выбрать столбцы REGION, DISTRICT и один вычисляемый столбец SUM(SALES). Используйте кнопку Добавить вычисляемый столбец. Для нашего примера введите SUM(SALES) в поле Выражение. Сохраните его. Условие WHERE. Если для шага репликации требуется только условие GROUP BY, необходимо также задать фиктивное условие WHERE (например, 1=1). Не включайте в условие WHERE слово "WHERE". Это связано с тем, что в пользовательском интерфейсе Центра хранилищ данных для репликации типа Базовая сводка есть только поле ввода условия WHERE. Для нашего примера введите в этом поле: 1=1 GROUP BY REGION, DISTRICT. Для репликации типа Сводка изменений есть поле ввода условия WHERE и поле ввода условия GROUP BY: В поле условия WHERE введите: 1=1, а в поле ввода условия GROUP BY введите: GROUP BY REGION, DISTRICT Задайте остальные свойства шага так же, как для других типов репликации. Нажмите кнопку OK, чтобы сохранить этот шаг и создать объект таблицы назначения. Откройте объект таблицы назначения. Теперь нужно переименовать выходной столбец для выражения вычисляемого столбца на допустимое имя столбца и задать для этого столбца правильный тип данных. Сохраните объект таблицы назначения. Переведите этот шаг репликации в режим тестирования. Будет создана таблица назначения. Для нее НЕ требуется первичный ключ. Выполните этот шаг (как любой другой шаг репликации). 22.45 Советы по устранению неисправностей Чтобы включить трассировку для программы Apply, на панели Свойства хранилища данных задайте для параметра Трассировка агента значение 4. При этом значении агент включит полную трассировку для программы Apply. Если таблица CD не содержит данных, то скорее всего или не была запущена программа Capture, или не были изменены данные исходной таблицы источника. В электронной справке пропущено поле почтового сервера на странице Уведомление записной книжки Расписание. Для работы с уведомлениями Центра хранилищ данных почтовый сервер должен поддерживать ESMTP. В справке Открытие окна Выполняемая работа, выбирайте Хранилище данных --> Выполняемая работа вместо Центр хранилищ данных --> Выполняемая работа. 22.46 Поддерживаемые источники и потребители В следующих таблицах перечислены уровни версий и выпусков источников и потребителей, поддерживаемые Центром хранилищ данных. Табл. 7. Уровни версий и выпусков поддерживаемых источников хранилища данных IBM Источник Версия/выпуск IMS 5.1 DB2 Universal Database for Windows NT 5.2 - 7.1 DB2 Universal Database Enterprise-Extended Edition 5.2 - 7.1 DB2 Universal Database for OS/2 5.2 - 7.1 DB2 Universal Database for AS/400 3.7 - 4.5 DB2 Universal Database for AIX 5.2 - 7.1 DB2 Universal Database для операционных сред Solaris 5.2 - 7.1 DB2 Universal Database for OS/390 4.1 - 7.1 DB2 DataJoiner 2.1.1 DB2 for VM 5.3.4 или новее DB2 for VSE 7.1 Источник Windows NT AIX Informix 7.2.2 - 8.2.1 7.2.4 - 9.2.0 Oracle 7.3.2 - 8.1.5 8.1.5 Microsoft SQL Server 7.0 Microsoft Excel 97 Microsoft Access 97 Sybase 11.5 11.9.2 Табл. 8. Уровни версий и выпусков поддерживаемых потребителей хранилища данных IBM Потребитель Версия/выпуск DB2 Universal Database for Windows NT 6 - 7 DB2 Universal Database Enterprise-Extended Edition 6 - 7 DB2 Universal Database for OS/2 6 - 7 DB2 Universal Database for AS/400 3.1-4.5 DB2 Universal Database for AIX 6 -7 DB2 Universal Database для операционных сред Solaris 6 -7 DB2 Universal Database for OS/390 4.1 - 7 DB2 DataJoiner 2.1.1 DB2 DataJoiner/Oracle 8 DB2 for VM 3.4 - 5.3.4 DB2 for VSE 3.2, 7.1 CA/400 3.1.2 22.47 Дополнения для поддерживаемых источников других типов (не баз данных IBM) Следующая таблица содержит дополнения для поддерживаемых источников других типов (не баз данных IBM): База данных Операционная система Требования к клиенту базы данных Informix AIX Informix-Connect и ESQL/C версии 9.1.4 или более поздней Informix Операционная среда Solaris Informix-Connect и ESQL/C версии 9.1.3 или более поздней Informix Windows NT Informix-Connect for Windows Platforms 2.x или Informix-Client Software Developer's Kit for Windows Platforms 2.x Oracle 7 AIX Oracle7 SQL*Net и совместно используемая библиотека Oracle7 SQL*Net (построенная при помощи сценария genclntsh) Oracle 7 Операционная среда Solaris Oracle7 SQL*Net и совместно используемая библиотека Oracle7 SQL*Net (построенная при помощи сценария genclntsh) Oracle 7 Windows NT Соответствующие DLL для текущей версии SQL*Net, плюс OCIW32.DLL. Например, для SQL*Net 2.3 требуются ORA73.DLL, CORE35.DLL, NLSRTL32.DLL, CORE350.DLL и OCIW32.DLL. Oracle 8 AIX Oracle8 Net8 и совместно используемая библиотека Oracle8 SQL*Net (построенная при помощи сценария genclntsh8) Oracle 8 Операционная среда Solaris Oracle8 Net8 и совместно используемая библиотека Oracle8 SQL*Net (построенная при помощи сценария genclntsh8) Oracle 8 Windows NT Для доступа к удаленным серверам баз данных Oracle8 с уровнем версии 8.0.3 или более новой установите клиент Oracle Net8 Client версии 7.3.4.x, 8.0.4 или более новой. В системах Intel установите в своем пути соответствующие DLL для клиента Oracle Net8 Client (такие как Ora804.DLL, PLS804.DLL и OCI.DLL). Sybase AIX В среде без DCE (драйвер ODBC ibsyb15): Библиотека libct В среде DCE (драйвер ODBC ibsyb1115): Библиотека клиента Sybase 11.1 libct_r Sybase Операционная среда Solaris В среде без DCE (драйвер ODBC ibsyb15): Библиотека libct В среде DCE (драйвер ODBC ibsyb1115): Библиотека клиента Sybase 11.1 libct_r Sybase Windows NT Sybase Open Client-Library 10.0.4 или более поздняя версия и соответствующая Sybase Net-Library. 22.48 Создание источника данных вручную в Центре хранилищ данных Если источник данных создается с помощью Relational Connect и оператора "Create Nickname", источник данных не будет доступен в функциях, связанных с импортом таблиц в Центр хранилищ данных. Чтобы использовать источник данных как исходную таблицу или таблицу назначения, последовательно выполните следующие действия: Определите источник/потребитель, не импортируя каких-либо таблиц. Разверните дерево Источники/Потребители хранилища из главного окна Центра хранилищ данных и щелкните правой кнопкой мыши по разделу "Таблицы" для нужного источника/потребителя. Выберите Определить. Определите источник данных с помощью открывшей записной книжки и проследите, чтобы столбцы были определены для каждого источника данных. Дополнительную информацию смотрите в разделах "Определение таблицы источника хранилища" или "Определение таблицы потребителя хранилища" в Информационном центре. 22.49 Импорт и экспорт метаданных с помощью CWMI (Common Warehouse Metadata Interchange - общий обмен метаданными хранилищ) 22.49.1 Введение В дополнение к имеющейся поддержке файлов языка тегов Центр хранилищ данных может теперь импортировать и экспортировать метаданные в формате файлов XML, соответствующих стандарту CWM (Common Warehouse Metamodel - общая метамодель хранилища). Импорт и экспорт этих CWM-совместимых файлов XML называется CWMI (Common Warehouse Metadata Interchange). Метаданные можно импортировать и экспортировать из следующих объектов Центра хранилищ данных: Источники хранилища Потребители хранилища Предметные области, включая процессы, источники, потребители и шаги Пользовательские программы Утилита экспорта и импорта CWMI не поддерживает метаданные некоторых видов, в том числе, планы, схемы хранилища, шаги ярлыков, каскадные связи, пользователи и группы. Центр хранилищ данных создает файл журнала, который содержит результаты процессов импорта и экспорта. Обычно файл журнала создается в каталоге x:\program files\sqllib\logging (где x: - устройство, где вы установили DB2) или в каталоге, заданным переменной среды VWS_LOGGING. Файл журнала представляет собой простой текстовый файл, который можно посмотреть в любом текстовом редакторе. Метаданные можно импортировать как из Центра хранилищ данных, так и из командной строки. Новые объекты, создаваемые в процессе импорта, назначаются группе защиты Центра хранилищ данных по умолчанию. Дополнительную информацию смотрите в разделе "Изменение защиты после импорта" в данных Замечаниях по выпуску. Если импортируются метаданные о шаге, с этим шагом может быть связано несколько файлов. Метаданные о шаге хранятся в файле XML, но с шагом могут быть иногда связаны также данные, хранящиеся как двоичные большие объекты. Имя файла метаданных двоичных больших объектов такое же, как у файла XML, но они существуют в виде отдельных файлов с нумерованными расширениями. При импорте все связанные с шагом файлы должны находиться в одном каталоге. Изменение шагов, находящихся в режиме тестирования или режиме производства Чтобы Центр хранилищ данных смог изменить метаданные шага, шаг должен находиться в режиме разработки. Если шаг находится в режиме тестирования или производства, переведите его в режим разработки перед импортом метаданных: Зарегистрируйтесь в Центре хранилищ данных. Щелкните правой кнопкой мыши по шагу, который надо перевести в другой режим, и выберите Режим. Выберите Разработка. Данный шаг переведен в режим разработки. После завершения импорта метаданных переведите шаг обратно в режим тестирования или производства. Импорт данных из Центра хранилищ данных Метаданные можно импортировать из Центра хранилищ данных: Зарегистрируйтесь в Центре хранилищ данных. Нажмите на левой панели кнопку Хранилище. Выберите Выбранные -> Импорт метаданных -> Файл обмена... В окне Импортировать метаданные задайте имя файла, содержащего метаданные, которые надо импортировать. Имя файла можно ввести самостоятельно или же выбрать в списке. Если положение файла известно, введите полное имя файла, который надо импортировать. Не забудьте указать расширение .xml, указывающее, что надо импортировать метаданные в формате XML. Чтобы просмотреть ваши файлы: Нажмите кнопку с многоточием (...). В окне Файл измените Файлы типа на XML. Перейдите в правильный каталог и выберите файл, который надо импортировать. Прим.:Файл должен иметь расширение .xml. Нажмите кнопку OK. В окне Импортировать метаданные нажмите кнопку OK, чтобы закончить работу. При импорте файла Центром хранилищ данных появляется окно Ход выполнения. Импорт метаданных с помощью командной строки Для импорта метаданных можно также использовать командную строку. Синтаксис команды импорта: CWMImport файл_XML управляющая_база_данных ID_пользователя пароль [PREFIX = схема] файл_XML Полное имя (включая диск и каталог) файла XML, который надо импортировать. Это обязательный параметр. управляющая_база_данных Имя управляющей базы данных хранилища, в которую вы хотите импортировать метаданные. Это обязательный параметр. ID_пользователя ID пользователя, используемый при регистрации в управляющей базе данных хранилища. Это обязательный параметр. пароль Пароль, используемый при регистрации в управляющей базе данных хранилища. Это обязательный параметр. [PREFIX=схема] Имя схемы базы данных для Центра хранилищ данных, иногда называемое префиксом таблицы. Если значение для PREFIX= не задано, по умолчанию используется имя IWH. Это необязательный параметр. 22.49.2 Изменение ваших метаданных после запуска утилиты импорта Изменение защиты после импорта В качестве меры защиты Центр хранилищ данных не импортирует и не экспортирует пароли. Пароли для новых объектов обновляются по мере необходимости. Подробнее об особенностях импорта смотрите в руководстве Data Warehouse Center Administration Guide, глава 12, "Exporting and importing Data Warehouse Center metadata". При импорте метаданных все объекты назначаются группе защиты по умолчанию. Группы, имеющие доступ к объекту, можно изменить: Зарегистрируйтесь в Центре хранилищ данных. Щелкните правой кнопкой мыши по папке, содержащей объект, который надо изменить. Выберите Свойства и выберите закладку Защита. Удалите группы из списка Выбранные группы хранилища или добавьте группы в список Доступные группы хранилища. Нажмите кнопку OK. 22.49.3 Экспорт метаданных Метаданные можно экспортировать как из Центра хранилищ данных, так и из командной строки. Метаданные некоторых шагов хранятся как двоичные большие объекты. Метаданные двоичных больших объектов экспортируются в отдельный файл с тем же именем, что и файл XML шага, но с числовыми расширениями (.1, .2 и так далее). Экспорт данных из Центра хранилищ данных Метаданные можно экспортировать из Центра хранилищ данных: Зарегистрируйтесь в Центре хранилищ данных. Нажмите на левой панели кнопку Хранилище. Выберите Выбранные -> Экспорт метаданных -> Файл обмена. В окне Экспорт метаданных задайте имя файла, куда будут записаны экспортированные метаданные. Имя файла можно ввести самостоятельно или выбрать его в списке: Если вы знаете полное имя требуемого файла, введите его в поле ввода Имя файла. Не забудьте задать расширение .xml, указывающее, что метаданные надо экспортировать в формате XML. Чтобы просмотреть ваши файлы: Нажмите кнопку с многоточием (...). В окне Файл измените Файлы типа на XML. Перейдите в правильный каталог и выберите файл, в котором должны содержаться экспортированные метаданные. Прим.:Любой существующий файл, выбранный вами, будет перезаписан экспортированными метаданными. Нажмите кнопку OK. Если в окне Экспорт метаданных выведено имя нужного файла, выберите в списке Доступные объекты объект, метаданные которого надо экспортировать. Нажмите кнопку >, чтобы переместить выбранный объект из списка Доступные объекты в список Выбранные объекты. Повторяйте эту операцию, пока все экспортируемые объекты не окажутся в списке Выбранные объекты. Нажмите кнопку OK. Центр хранилищ данных создает входной файл, содержащий информацию о выбранных для экспорта объектах, и затем экспортирует метаданные об этих объектах. Во время экспорта метаданных Центром хранилищ данных появляется окно хода выполнения. По завершении экспорта выдается информационное сообщение о процессе экспорта. Код возврата 0 указывает на успешный экспорт. Подробнее о процессе можно узнать, посмотрев файл журнала. Экспорт метаданных с помощью командной строки Прежде чем экспортировать метаданные из командной строки, необходимо создать входной файл. Входной файл - это текстовый файл с расширением .INP, в котором перечислены по типу объекта все объекты, которые надо экспортировать. При экспорте из Центра хранилищ данных входной файл создается автоматически, но при экспорте из командной строки, его надо вначале создать самостоятельно. Входной файл можно создать с помощью любого текстового редактора. Введите имена всех объектов, появляющихся в Центре хранилищ данных. Убедитесь, что файл создается в каталоге, для которое есть разрешение на чтение/запись. При запуске утилиты экспорта Центр хранилищ данных записывает файлы XML в тот же каталог, где находится входной файл. Ниже приводится пример файла ввода: Tutorial Fact Table Process Tutorial file source Tutorial target New Program group В разделе (процессы) перечислите все процессы, которые надо экспортировать. В разделе (информационные ресурсы) перечислите все источники и потребители хранилища, которые надо экспортировать. Центр хранилищ данных автоматически включает все таблицы и столбцы, связанные с этими источниками и потребителями. В разделе (пользовательские программы) перечислите все группы программ, которые надо экспортировать. Для экспорта метаданных введите следующую команду в командной строке DOS: CWMExport входной_файл управляющая_база_данных ID_пользователя пароль [PREFIX=схема] входной_файл Полное имя (включая диск и каталог) файла .INP, со списком объектов, которые надо экспортировать. Это обязательный параметр. управляющая_база_данных Имя управляющей базы данных хранилища, из которой осуществляется экспорт. Это обязательный параметр. ID_пользователя ID пользователя, используемый при регистрации в управляющей базе данных хранилища. Это обязательный параметр. пароль Пароль, используемый при регистрации в базе данных управления хранилищем. Это обязательный параметр. [PREFIX=схема] Имя схемы базы данных для Центра хранилищ данных, иногда называемое префиксом таблицы. Если значение для PREFIX= не задано, по умолчанию используется имя IWH. Это необязательный параметр. 22.50 Шаг утилиты Runstats в OS/390 Определяя в Центре хранилищ данных шаг утилиты Runstats в OS/390, надо помнить, что на вкладке Параметры диалогового окна Свойства шага в поле табличного пространства имя надо вводить в верхнем регистре. Если это табличное пространство не находится в базе данных DSNDB04, к имени табличного пространства надо добавить имя содержащей его базы данных. Например, введите SAMPLE.EMPLOYEE. В справке сейчас это поле не отражено. 22.51 Шаг утилиты Load в OS/390 Определяя в Центре хранилищ данных шаг утилиты Runstats в OS/390, надо помнить, что на вкладке Параметры диалогового окна Свойства шага обязательно надо нажать кнопку Дополнительно. В противном случае не будет сгенерировано условие INTO оператора загрузки, и при запуске утилита загрузки завершится неудачно. Кроме того, в FixPak 3 включено исправление, удаляющее двойные кавычки вокруг имени набора данных загрузки. Без этого исправления загрузка работать не будет. Data Warehouse Center Application Integration Guide В Главе 5 "Metadata Templates" таблица 16 описывает маркеры тегов столбцов. В этом руководстве должно быть сказано, что отсчет "*ColumnPositionNumber" должен начинаться с "1". В руководстве ошибочно утверждается, что начальный символ - "0". Далее в Главе 5 таблица 42 должна содержать элемент TableTypeIfFile, если для элемента DatabaseType в соответствующем SourceDataBase.tag задан тип ISV_IR_FFLan. Если этот элемент не задан, будет обнаружена ошибка. В главе 6 "Data Warehouse Center metadata" описание свойства объекта столбца POSNO следует читать так: Индекс (начиная с 1) столбца или поля в строке в таблице или в файле. В главе 8 "Типы объектов менеджера каталогов данных" каталог, в котором находятся файлы .TYP, содержащие язык тегов для определения типа объекта, был изменен на \SQLLIB\DGWIN\TYPES. Электронная справка Центра хранилищ данных 24.1 Определение таблиц или производных таблиц для репликации Прежде чем таблицу или производную таблицу можно будет использовать в качестве источника репликации в Центре хранилищ данных, ее необходимо определить для репликации, используя Центр управления DB2. 24.2 Выполнение VWP Essbase с агентом AS/400 Перед выполнением VWP Essbase с агентом AS/400 нужно задать ARBORLIB и ARBORPATH в качестве переменных среды *sys. Чтобы задать их, ID пользователя должен иметь полномочия *jobctl. Эти переменные среды нужны для задания библиотеки, в которой установлен Essbase. 24.3 Использование окна Сделать доступными метаданные Центра хранилищ данных и связанного с ним окна свойств В шаге 10 справки задания есть пример, в котором сказано, что если для максимального числа уровней объектов в дереве задано значение 1, при опубликовании процесса станет доступным и будет выводиться только шаг 1 этого процесса. Это верно не во всех случаях. В шаге 8 во втором абзаце первое предложение неверно. Оно должно выглядеть так: "Выберите опцию На уровне столбцов, чтобы сгенерировать объект преобразования между столбцом источника каталога данных и столбцом назначения." 24.4 Внешние ключи В электронной справке все упоминания внешних ключей относятся ко внешним ключам хранилища данных. 24.5 Записные книжки репликации В электронной справке все упоминания записной книжки Определение репликации относятся к записной книжке шага репликации. 24.6 Импорт языка тегов В электронной справке по импорту языка тегов в списке общих ошибок импорта есть строка "Импортируется файл языка тегов, который не был правильно экспортирован". Эта ошибка не относится к списку общих ошибок импорта. 24.7 Ссылки для добавления данных В теме "Добавление данных" электронной справки не работают ссылки на темы "Добавление к процессу таблиц источника" и "Добавление к процессу таблиц назначения". Эти темы можно найти с помощью указателя справки. 24.8 Импорт таблиц В темах справки "Импорт таблиц и производных таблиц источника" и "Импорт таблиц назначения в потребитель хранилища" есть неверная информация о символах подстановки. Фразу: Например, если задать XYZ*, будут возвращены таблицы и производные таблицы, имена схем которых начинаются с символов XYZ. надо читать как: Например, если задать XYZ%, будут возвращены таблицы и производные таблицы, имена схем которых начинаются с символов XYZ. 24.9 Исправления для электронной справки по RUNSTATS и REORGANIZE TABLE В электронной справке по этим утилитам сказано, что таблица, для которой нужно собрать статистическую информацию или которую нужно реорганизовать, должна быть связана и с источником, и с потребителем. Но поскольку этот шаг работает только с источником, требуется только связь от источника к этому шагу. 24.10 Страница Уведомление (записные книжки Свойства хранилища данных и Расписание) Для страницы Уведомление записной книжки Свойства хранилища данных предложение: Поле ввода Отправитель изначально содержит строку . следует изменить на: Поле ввода Отправитель изначально содержит строку <адрес e-mail текущего зарегистрированного пользователя>. На странице Уведомление записной книжки Расписание поле Отправитель изначально содержит значение, заданное в записной книжке Свойства хранилища данных. Если там не задано никакое значение, это поле изначально содержит строку адреса e-mail текущего зарегистрированного пользователя. Если с этим пользователем не связан адрес e-mail, полю Отправитель присваивается ID этого пользователя. 24.11 Поле Модуль агента в записной книжке Системы агентов Поле Модуль агента записной книжки Системы агентов содержит имя программы, выполняющейся в момент, когда демон агента хранилища данных порождает процесс агента хранилища данных. Не изменяйте имя в этом поле, если не получите указаний сделать это от IBM. Начальный комплект OLAP DB2 В начальный комплект OLAP DB2 IBM Версии 7.2 добавлена поддержка для систем управления реляционными базами данных (СУБД) Oracle, MS-SQL, Sybase и Informix на платформах ряда операционных систем. Версия 7.2 содержит сценарии и инструменты для всех поддерживаемых СУБД, включая DB2. При этом существуют некоторые ограничения; дополнительную информацию смотрите в разделе 25.8, Известные проблемы и ограничения. Служебный уровень начального комплекта OLAP DB2 для DB2 Universal Database Версии 7.2 эквивалентен исправлению 2 для Hyperion Essbase 6.1 в сочетании с исправлением 2 для сервера Hyperion Integration Server 2.0. 25.1 Web-сайт сервера OLAP Последние замечания по установке и использованию Начального комплекта OLAP DB2 смотрите на странице Library Web-сайта сервера OLAP DB2: http://www.ibm.com/software/data/db2/db2olap/library.html 25.2 Поддерживаемые служебные уровни операционных систем Компоненты сервера начального комплекта OLAP для Версии 7.2 поддерживают следующие уровни операционных систем и служб: Серверы Windows NT 4.0 с SP 5 и Windows 2000 AIX Версии 4.3.3 или новее Solaris Operating System Версии 2.6, 7 и 8 (Sun OS 5.6, 5.7, или 5.8) Компоненты клиента работают в Windows 95, Windows 98, Windows NT 4.0 SP5 и Windows 2000. 25.3 Установка Начального комплекта OLAP DB2 в UNIX Установка Начального комплекта OLAP DB2 выполняется после основных процедур установки DB2 Universal Database для UNIX. Программа установки помещает файлы продукта в системный каталог: (в AIX: /usr/lpp/db2_07_01; в Solaris: /opt/IBMdb2/V7.1). Затем на фазе создания экземпляра в начальном каталоге владельца экземпляра в каталоге sqllib будут созданы два каталога OLAP DB2 (essbase и is). На компьютере одновременно может быть запущен только один экземпляр сервера OLAP. Чтобы завершить установку, пользователь должен вручную задать каталог is/bin, чтобы он не был связан с системным каталогом is/bin. Он должен быть связан с каталогом, для которого разрешена запись, в начальном каталоге экземпляра. Чтобы выполнить установку для Solaris, зарегистрируйтесь с ID экземпляра, перейдите в каталог sqllib/is и затем введите следующие команды: rm bin mkdir bin cd bin ln -s /opt/IBMdb2/V7.1/is/bin/ismesg.mdb ismesg.mdb ln -s /opt/IBMdb2/V7.1/is/bin/olapicmd olapicmd ln -s /opt/IBMdb2/V7.1/is/bin/olapisvr olapisvr ln -s /opt/IBMdb2/V7.1/is/bin/essbase.mdb essbase.mdb ln -s /opt/IBMdb2/V7.1/is/bin/libolapams.so libolapams.so 25.4 Конфигурирование ODBC для Начального комплекта OLAP Для начального комплекта OLAP DB2 IBM Версии 7.2 требуется файл ODBC.ini для работы с соединениями Open Database Connectivity (ODBC) между сервером интеграции OLAP и реляционным источником данных и каталогом метаданных OLAP. В операционных системах Windows этот файл записан в реестре в ключе HKEY_LOCAL_MACHINE/SOFTWARE/ODBC. Чтобы записать информацию о том, как соединяться с реляционным источником данных, воспользуйтесь администратором источников данных ODBC. В операционных системах UNIX программа установки создает модельный файл odbc.ini. Чтобы записать информацию о том, как соединяться с реляционным источником данных, отредактируйте этот файл вашим редактором. Файл ODBC.ini содержится в пакетах программного обеспечения ODBC и включен в программное обеспечение Microsoft Office. Дополнительную информацию о программах, устанавливающих драйверы ODBC или администратор ODBC, можно найти в Web по адресу: http://support.microsoft.com/support/kb/articles/Q113/1/08.asp. Для пользователей Oracle на компьютерах AIX: чтобы cконфигурировать ODBC для Oracle, необходимо изменить файл ODBC.ini, указав в нем драйверы MERANT 3.6. В Версии 7.2 начальный комплект OLAP управляет соединениями ODBC с реляционным источником данных и каталогом метаданных OLAP. Для работы с этими соединениями ODBC начальный комплект OLAP использует драйверы ODBC в Windows NT 4.0, Windows 2000, AIX и Solaris. Клиент баз данных DB2 Universal Database Версии 6: драйверы ODBC DB2 Версии 6 в Windows NT 4.0 SP5 или Windows 2000, AIX 4.3.3 и Solaris Operating System 2.6, 7 или 8 (Sun OS 5.6, 5.7 или 5.8). Клиент баз данных DB2 Universal Database Версии 7.1: драйверы ODBC DB2 Версии 7 в Windows NT 4.0 SP5 или Windows 2000, AIX 4.3.3 и Solaris Operating System 2.6, 7 или 8 (Sun OS 5.6, 5.7 или 5.8). Клиент баз данных Oracle 8.04 и 8i SQL*Net 8.0: драйверы ODBC MERANT 3.6 в Windows NT 4.0 SP5 или Windows 2000, AIX 4.3.3 и Solaris Operating System 2.6, 7 или 8 (Sun OS 5.6, 5.7 или 5.8). MS SQL Server 6.5.201 (клиент баз данных не требуется): драйверы ODBC MS SQL Server 6.5 в Windows NT 4.0 SP5 или Windows 2000. MS SQL Server 7.0 (Клиент баз данных не требуется): драйверы ODBC MS SQL Server 7.0 в Windows NT 4.0 SP5 или Windows 2000. 25.4.1 Конфигурирование источников данных в системах UNIX В AIX и Solaris надо вручную задать переменные среды для ODBC и отредактировать файл odbc.ini, чтобы сконфигурировать реляционный источник данных и каталог метаданных OLAP. При изменении или добавлении нового драйвера или источника данных убедитесь, что в файл odbc.ini внесены соответствующие изменения. 25.4.1.1 Конфигурирование переменных среды ODBC В системах UNIX для доступа к основным компонентам ODBC переменные среды необходимо задать необходимо задать переменные среды. Сценарии оболочки is.sh и is.csh, которые задают требуемые переменные, находятся в домашнем каталоге Начального комплекта. Перед тем, как соединяться с источниками данных при помощи ODBC, надо запустить один из этих сценариев. Эти сценарии нужно включить в сценарий регистрации для имени пользователя, которое используется при запуске начального комплекта OLAP. 25.4.1.2 Редактирование файла odbc.ini Чтобы сконфигурировать источник данных в файле odbc.ini, надо добавить имя и описание для источника данных ODBC и указать полное имя файла драйвера ODBC и другие параметры драйвера в специальном разделе, который вы создадите для имени источника данных. Программа установки установит файл примера odbc.ini в каталог ISHOME. Этот файл содержит общую информацию о соединениях и конфигурировании ODBC для поддерживаемых драйверов ODBC. Его можно использовать в качестве отправной точки при отображении драйверов ODBC, используемых при работе с реляционным источником данных и каталогом метаданных OLAP. Если используется файл, отличный от odbc.ini, не забудьте задать имя этого файла в переменной среды ODBCINI. 25.4.1.3 Добавление источника данных в файл odbc.ini В системе, где запущены серверы Начального комплекта OLAP, откройте файл odbc.ini с помощью текстового редактора, например, vi. Найдите раздел, начинающийся с [ODBC Data Sources], и добавьте новую строку с именем и описанием источника данных, например: mydata=data source for analysis. Чтобы свести к минимуму путаницу, используйте в качестве имени источника данных имя базы данных в СУБД. Добавьте в этот файл новый раздел, создав новую строку с именем нового источника данных в квадратных скобках, например: [mydata]. В строках, следующих за именем источника данных, добавьте полное имя файла для драйвера ODBC, который требуется для этого источника данных, и любую другую обязательную информацию о драйвере ODBC. Используйте примеры, приведенные в следующих разделах, как образца для вашего источника данных. Убедитесь, что файл драйвера ODBC действительно существует в месте, которое вы указали в параметре Driver=. Закончив редактирование файла odbc.ini, сохраните его и выйдите из текстового редактора. 25.4.1.4 Пример параметров ODBC для DB2 В следующем примере показано, как можно отредактировать файл odbc.ini для соединения с реляционным источником данных db2data в DB2 Universal Database Версии 6.1 в AIX при помощи собственного драйвера ODBC DB2 IBM. В редакторе vi используйте для редактирования файла odbc.ini команду $ODBCINI и вставьте следующие операторы: [ODBC Data Sources] db2data=DB2 Source Data on AIX ... [db2data] Driver=/home/db2inst1/sqllib/lib/db2.o Description=DB2 Data Source - AIX, native 25.4.1.5 Пример параметров ODBC для Oracle В следующем примере показано, как можно отредактировать файл odbc.ini для соединения с реляционным источником данных oradata из Oracle Версии 8 (в Solaris) при помощи драйвера ODBC MERANT Версии 3.6. В этом примере ID регистрации и Пароль заменяются используемыми в Начальном комплекте OLAP именем пользователя и паролем. [ODBC Data Sources] oradata=Oracle8 Source Data on Solaris ... [myoracle] Driver= /export/home/users/dkendric/is200/odbclib/ARor815.so Description=my oracle source 25.4.2 Конфигурирование каталога метаданных OLAP в системах UNIX Конфигурирование каталога метаданных OLAP в AIX и Solaris сходно с конфигурированием источника данных. Для базы данных каталога метаданных OLAP добавьте имя и раздел источника данных в файл odbc.ini, как описано в разделе 25.4.1.2, Редактирование файла odbc.ini. Других изменений не требуется. Перед конфигурированием базы данных каталога метаданных OLAP в качестве источника данных ODBC ее надо создать в поддерживаемой СУБД. В следующем примере показано, как можно отредактировать файл odbc.ini для соединения с каталогом метаданных OLAP, TBC_MD, в DB2 Версии 6.1 (в Solaris) при помощи собственного драйвера ODBC: [ODBC Data Sources] ocd6a5a=db2 v6 ... [ocd6a5a] Driver=/home/db2instl/sqllib/lib/db2.0 Description=db2 25.4.3 Конфигурирование источников данных в системах Windows Чтобы конфигурировать реляционный источник данных в операционных системах Windows NT или Windows 2000, надо запустить администратор ODBC и затем создать соединение с источником данных, который будет использоваться для создания моделей и метамакетов OLAP. Для этого воспользуйтесь утилитой администратора ODBC, доступной из панели управления Windows. В приведенном ниже примере показано создание источника данных DB2, диалоговые окна для других СУБД будут другими. Чтобы сконфигурировать реляционный источник данных при помощи администратора ODBC, последовательно выполните следующие действия: Откройте окно Панель управления на рабочем столе. В окне Панель управления выполните одно из следующих действий: В Windows NT дважды щелкните по значку ODBC, чтобы открыть диалоговое окно Администратор источников данных ODBC. В Windows 2000 дважды щелкните по значку Инструменты управления, а затем дважды щелкните по значку Источники данных (ODBC), чтобы открыть диалоговое окно Администратор источников данных ODBC. В диалоговом окне Администратор источников данных ODBC щелкните по вкладке Системный DSN. Нажмите кнопку Добавить, чтобы открыть диалоговое окно Создать новый источник данных. В списке драйверов диалогового окна администратора ODBC Создать новый источник данных выберите подходящий драйвер, например, IBM DB2 ODBC Driver, и нажмите кнопку Готово, чтобы открыть диалоговое окно Драйвер ODBC DB2 IBM - Добавить. В выпадающем списке Алиас базы данных диалогового окна Драйвер ODBC DB2 IBM - Добавить выберите имя базы данных для ваших данных реляционного источника (например, TBC в примере прикладной программы). В текстовом окне Описание введите необязательное описание, указывающее, как используется данный драйвер, и нажмите кнопку Добавить. Например, для описания базы данных My Business введите: Заказчики, продукты, рынки Для описания базы данных примера прикладной программы можно ввести: Пример реляционного источника данных Эти описания помогают идентифицировать доступные источники данных для последующего выбора при соединении с рабочего стола Начального комплекта OLAP. Нажмите кнопку OK, чтобы вернуться в окно Администратор источников данных ODBC. Введенное вами имя источника данных и назначенный для него драйвер выводятся в списке Источники данных системы на вкладке Системные DSN. Чтобы отредактировать информацию о конфигурации для источника данных: Выберите имя источника данных и нажмите Конфигурировать, чтобы открыть диалоговое окно ODBC DB2 IBM - Добавить. Исправьте информацию, которую надо изменить. Для выхода дважды нажмите кнопку OK. 25.4.4 Конфигурирование каталога метаданных OLAP в системах Windows Чтобы сконфигурировать каталог метаданных OLAP в системах Windows NT или Windows 2000, надо запустить администратор ODBC и затем создать соединение с источником данных, который содержит базу данных каталога метаданных OLAP. В приведенном ниже примере показано создание источника данных DB2, диалоговые окна для других СУБД будут другими. Чтобы создать источник данных для каталога метаданных OLAP, последовательно выполните следующие действия: Откройте окно Панель управления на рабочем столе. В окне Панель управления выполните одно из следующих действий: В Windows NT дважды щелкните по значку ODBC, чтобы открыть диалоговое окно Администратор источников данных ODBC. В Windows 2000 дважды щелкните по значку Инструменты управления, а затем дважды щелкните по значку Источники данных (ODBC), чтобы открыть диалоговое окно Администратор источников данных ODBC. В диалоговом окне Администратор источников данных ODBC щелкните по вкладке Системный DSN. Нажмите кнопку Добавить, чтобы открыть диалоговое окно Создать новый источник данных. В списке драйверов диалогового окна администратора ODBC Создать новый источник данных выберите подходящий драйвер, например, IBM DB2 ODBC Driver, и нажмите кнопку Готово, чтобы открыть диалоговое окно Драйвер ODBC DB2 IBM - Добавить. В выпадающем списке Алиас базы данных диалогового окна Драйвер ODBC DB2 IBM - Добавить, выберите имя базы данных для вашего каталога метаданных OLAP (например, TBC_MD в примере прикладной программы). Имя выбранной базы данных автоматически выводится в текстовом окне Имя источника данных. Если нужно изменить имя источника данных, выберите имя, выведенное в текстовом окне Имя источника данных, введите новое имя, чтобы указать, как используется этот драйвер, и нажмите кнопку Добавить. Например, чтобы указать, что драйвер используется для соединения с первым каталогом метаданных OLAP, можно ввести следующее имя: OLAP Catalog first Чтобы указать, что вы соединяетесь с базой данных каталога метаданных OLAP примера программы, можно было бы ввести имя: TBC_MD В текстовом окне Описание введите описание, указывающее, как используется данный драйвер. Например, чтобы описать каталог метаданных OLAP, можно ввести: Мои первые модели и метамакеты Чтобы описать базу данных каталога метаданных OLAP примера прикладной программы, можно ввести: Примеры моделей и метамакетов Эти описания помогают идентифицировать каталог, который вы захотите выбрать, соединившись с каталогом метаданных OLAP с рабочего стола Начального комплекта OLAP. Нажмите кнопку OK, чтобы вернуться в окно Администратор источников данных ODBC. Введенное вами имя источника данных и назначенный для него драйвер выводятся в списке Источники данных системы на вкладке Системный DSN. Чтобы отредактировать информацию о конфигурации для источника данных: Выберите имя источника данных и нажмите Конфигурировать, чтобы открыть диалоговое окно ODBC DB2 IBM - Добавить. Исправьте информацию, которую надо изменить. Для выхода дважды нажмите кнопку OK. 25.4.5 После конфигурирования источника данных После того как вы сконфигурировали реляционный источник данных и каталог метаданных OLAP, можно соединиться с ними при помощи Начального комплекта OLAP. Это позволит создавать, изменять и сохранять модели и метамакеты OLAP. При соединении с базой данных сервера SQL для драйвера ODBC сервера SQL может истечь срок ожидания. Повторите попытку соединения, когда база данных не будет перегружена. Этого затруднения можно избежать, увеличив срок ожидания для данного драйвера. Дополнительную информацию смотрите в документации ODBC по используемому вами драйверу. Дополнительную информацию по проблемам соединения ODBC и их разрешению смотрите в руководстве OLAP Integration Server System Administrator's Guide. 25.5 Регистрация с рабочего стола Начального комплекта OLAP Чтобы использовать рабочий стол Начального комплекта OLAP для создания моделей и метамакетов OLAP, необходимо установить соединения программы клиента с двумя серверами: сервером интеграции OLAP DB2 и сервером OLAP DB2. В окне регистрации будет запрошена необходимая информация для соединения рабочего стола с этими двумя серверами. Слева введите информацию о Сервере интеграции OLAP DB2. Справа введите информацию о сервере OLAP DB2. Для соединения с Сервером интеграции OLAP DB2: Сервер: Введите имя хоста или IP-адрес Сервера интеграции. Если Сервер интеграции установлен на той же рабочей станции, что и рабочий стол, введите значение "localhost" или "127.0.0.1". Каталог метаданных OLAP: При соединении с Сервером интеграции OLAP необходимо также задать каталог метаданных. Сервер интеграции OLAP хранит информацию о созданных моделях и метамакетах OLAP в реляционной базе данных, которая называется каталогом метаданных. Эта реляционная база данных должны быть зарегистрирована для ODBC. Эта база данных каталога содержит специальный набор реляционных таблиц, используемых Сервером интеграции OLAP. В окне регистрации можно задать Сервер интеграции и затем раскрыть выпадающее меню для поля Каталог метаданных OLAP, чтобы увидеть список имен источников данных ODBC, известных на этом Сервере интеграции OLAP. Выберите базу данных ODBC, содержащую таблицы каталога метаданных. Имя пользователя и пароль: Сервер интеграции OLAP будет соединяться с каталогом метаданных, используя заданные здесь имя пользователя и пароль. Это учетная запись, существующая на сервере (не на клиенте, если только сервер и клиент не работают на одном компьютере). Это должно быть имя пользователя, создавшего каталог метаданных OLAP. В противном случае Сервер интеграции OLAP не сможет найти нужные реляционные таблицы в базе данных каталога, так как будет использоваться другое имя схемы. Информацию о сервере OLAP DB2 задавать не обязательно, поэтому можно оставить незаполненными поля в правой части окна Регистрация. Однако для некоторых операций в рабочем столе и менеджере администратора требуется соединение с сервером Server OLAP DB2. Если оставить эти поля пустыми, рабочий стол вновь выведет окно Регистрация, если для выполнения запрошенной операции Серверу интеграции потребуется соединение с сервером OLAP DB2. Рекомендуется всегда заполнять поля сервера OLAP DB2 в окне Регистрация. Для соединения с сервером OLAP DB2: Сервер: Введите имя хоста или IP-адрес сервера OLAP DB2. При работе с Начальным комплектом OLAP DB2 сервер OLAP совпадает с сервером интеграции. Если Сервер интеграции и сервер OLAP установлены на разных хостах, введите имя хоста или IP-адрес, определенные на Сервере интеграции OLAP. Имя пользователя и пароль: Сервер интеграции OLAP будет соединяться с сервером OLAP DB2, используя заданные здесь имя пользователя и пароль. Эти имя пользователя и пароль должны быть уже определены на сервере OLAP DB2. Сервер OLAP поддерживает свои имена пользователей и пароли отдельно от операционной системы хоста. 25.5.1 Пример регистрации для Начального комплекта В следующем примере предполагается, что при установке Начального комплекта OLAP создан пример OLAP и выбраны db2admin в качестве ID пользователя администратора и password в качестве пароля администратора. Для Сервера интеграции OLAP: Сервер - localhost, каталог метаданных OLAP - TBC_MD, имя пользователя - db2admin, пароль - password Для сервера OLAP DB2: Сервер - localhost, Имя пользователя db2admin 25.6 Создание и конфигурирование вручную баз данных примера для Начального комплекта OLAP Базы данных примера создаются автоматически при установке Начального комплекта OLAP. Далее описывается, как можно вручную создать базы данных каталога и примера, если это понадобится. В Windows откройте окно Командного центра, выбрав Пуск -> Программы ->DB2 for Windows NT -> Окно команд. Создайте базу данных каталога производства: Введите команду db2 create db OLAP_CAT Введите команду db2 connect to OLAP_CAT Создайте таблицы в этой базе данных: Перейдите в \SQLLIB\IS\ocscript\ocdb2.sql Введите команду db2 -tf ocdb2.sql Создайте базу данных источника примера: Введите команду db2 connect reset Введите команду db2 create db TBC Введите команду db2 connect to TBC Создайте таблицы в этой базе данных: Перейдите в \SQLLIB\IS\samples\ Скопируйте tbcdb2.sql в \SQLLIB\samples\db2sampl\tbc Скопируйте lddb2.sql в \SQLLIB\samples\db2sampl\tbc Перейдите в \SQLLIB\samples\db2sampl\tbc Введите команду db2 -tf tbcdb2.sql Введите команду db2 - vf lddb2.sql, чтобы загрузить исходные данные примера в эти таблицы. Создайте базу данных каталога примера: Введите команду db2 connect reset Введите команду db2 create db TBC_MD Введите команду db2 connect to TBC_MD Создайте таблицы в этой базе данных: Перейдите в \SQLLIB\IS\samples\tbc_md Скопируйте ocdb2.sql в \SQLLIB\samples\db2sampl\tbcmd Скопируйте lcdb2.sql в \SQLLIB\samples\db2sampl\tbcmd Перейдите в \SQLLIB\samples\db2sampl\tbcmd Введите команду db2 -tf ocdb2.sql Введите команду db2 -vf lcdb2.sql, чтобы загрузить метаданные примера в эти таблицы. Сконфигурируйте ODBC для TBC_MD, TBC, AND OLAP_CAT: Откройте Панель управления NT, выбрав Пуск -> Настройка -> Панель управления Выберите из списка ODBC (или источники данных ODBC). Выберите закладку Системный DSM. Нажмите кнопку Добавить. Откроется окно Создать новый источник данных. Выберите из списка IBM DB2 ODBC DRIVER. Нажмите кнопку Завершить. Откроется окно Драйвер ODBC IBM D2 - Добавить. В поле Имя источника данных введите имя источника данных (OLAP_CAT). В поле Алиас базы данных введите алиас или щелкните по стрелке вниз и выберите из списка OLAP_CAT. Нажмите кнопку OK. Повторите эти шаги для баз данных TBC_MD и TBC. 25.7 Перенастройка прикладных программ в Начальный комплект OLAP Версии 7.2 Программа установки не переустанавливает программы, базы данных и файлы данных примера Начального комплекта OLAP. На ваши существующие программы и базы данных это не влияет. Тем не менее, всегда полезно перед установкой создавать резервные копии ваших программ и баз данных. Ваши программы автоматически перенастраиваются в Версию 7.2 при их открытии. 25.8 Известные проблемы и ограничения В этом разделе перечислены известные ограничения для Начального набора OLAP DB2 Совместимость СУБД Informix c драйверами Merant для платформ Windows Для того чтобы драйверы Merant для платформ Windows могли работать с RDBMS Informix, в оператор PATH надо добавить две записи: C:\Informix C:\Informix\bin Оба эти каталога должны находиться в начале PATH. Возможные несоответствия между ассоциациями в моделях OLAP и связанных с ними метамакетах При определенных условиях можно создать ассоциацию в метамакете, для которой отсутствует соответствующая ассоциация в модели OLAP. Это может произойти следующим образом: Создайте новую модель OLAP и сохраните ее. Создайте на основе этой модели метамакет, но не сохраняйте его. Вернитесь к модели OLAP и удалите ассоциацию, на которой основана одна из ассоциаций метамакета. Вернитесь к метамакету, сохраните его, закройте, а затем вновь откройте. В результате этот метамакет будет содержать ассоциацию, для которой отсутствует соответствующая ассоциация в модели OLAP. Начальный комплект OLAP не в состоянии отличить созданную таким образом неверную ассоциацию от пользовательской ассоциации в метамакете. Как следствие, неверная ассоциация будет выведена в метамакете, но будет рассматриваться как заданная пользователем, так как для нее не существует соответствия в модели OLAP. На платформах Windows 2000 задание переменной среды для TMP приводит к неудачной загрузке элементов и данных Из-за различия в системных параметрах по умолчанию и пользовательских параметрах переменной среды для TMP между Windows 2000 и Windows NT загрузка элементов и данных завершается неудачно при запуске Начального комплекта OLAP на платформах Windows 2000. Появляющееся в результате сообщение об ошибке говорит о невозможности создания временного файла. В Windows 2000 это ограничение можно обойти, последовательно выполнив следующие действия: Создайте каталог C:\TEMP Задайте значение переменной среды TMP (и для системы и для пользователя): TMP=C:\TEMP При установке ODBC существующий драйвер Merant не заменяется Существующие драйверы ODBC 3.6 Merant не будут изменены при этой установке. Если выполняется обновление из Начального комплекта OLAP Версии 7.1, Fixpack 2 или более ранний, следует продолжать использовать ранее установленные драйверы ODBC Использование драйверов ODBC Merant Informix на платформах UNIX Чтобы использовать драйверы ODBC Merant Informix на платформах UNIX, надо выполнить одно из следующих действий: Перед запуском Начального комплекта задайте значение переменной среды LANG "en_US". Например, для оболочки korn введите: export LANG='en_US' Задавайте значение этой переменной каждый раз при запуске Начального комплекта OLAP. Если для переменной LANG уже задано другое значение, создайте после установки следующую символическую связь: ln -s $ISHOME/locale/en_US $ISHOME/locale/$LANG Разные служебные уровни клиентов и серверов OLAP IBM рекомендует, чтобы клиент и сервер Начального комплекта OLAP DB2 были одной версии и имели одинаковый уровень Fixpack. В некоторых ситуациях, однако, допускаются разные служебные уровни клиента и сервера: Использование клиентов и серверов с разными служебными уровнями в одной версии IBM не поддерживает и не рекомендует использование более новых версий клиентов с ранними версиями серверов. Однако вам, возможно, удастся использовать более ранние версии клиентов для работы с более новыми серверами, хотя IBM не поддерживает этого. При этом вы можете столкнуться с трудностями. Например: Сообщения от сервера могут быть неверными. Эту проблему можно разрешить, обновив файл message.MDB на клиенте, чтобы он соответствовал уровню сервера. Не действуют новые возможности сервера. При попытке использовать новую возможность клиент, сервер или оба компонента могут отказать. Клиент может не соединиться правильно с сервером. Использование нескольких серверов с одним клиентом одной версии Если нужно соединить клиент с несколькими серверами OLAP на разных компьютерах или в разных операционных системах, IBM рекомендует, чтобы все они были одной версии и служебного уровня. Уровень вашего клиента должен быть не ниже, чем самый низкий из уровней этих серверов. При возникновении затруднений вам может понадобиться использовать разные клиентские компьютеры для сопоставления с подходящим хостом либо обновить все клиенты и серверы до одного служебного уровня. Совместное использование клиентов и серверов разных версий IBM не поддерживает использование клиентов и серверов Начального комплекта OLAP Версии 7.1 с клиентами и серверами Версии 7.2. При обновлении продуктов OLAP IBM до уровня новой версии часто выполняются изменения сетевых параметров и формата данных, требующие, чтобы клиент и сервер были одного уровня версии. Совместное использование продуктов IBM (Начальный комплект OLAP DB2) c продуктами Hyperion (Hyperion Essbase и Hyperion Integration Server) IBM не поддерживает совместное использование клиентов и серверов OLAP от IBM с клиентами и серверами OLAP от Hyperion Solutions. Хотя в некоторых ситуациях совместная работа разнородных компонентов возможна, их возможности несколько различаются, что может привести к ошибкам. 25.9 Отсутствие файлов EQD встраиваемого модуля OLAP для электронных таблиц В Начальном комплекте OLAP дополнительный модуль для электронных таблиц содержит компонент, называемый Query Designer (EQD). Меню электронной справки для EQD содержит кнопку Учебник, которая не выводит на экран никакой информации. Материал, который должен выводиться в учебниках по EQD, содержится во второй главе руководств OLAP Spreadsheet Add-in User's Guide for Excel и OLAP Spreadsheet Add-in User's Guide for 1-2-3. Вся информация учебника по EQD доступна в версиях HTML этих книг в Информационном центре и в версиях PDF. Information Catalog Manager Administration Guide 26.1 Утилита инициализации менеджера каталогов данных 26.1.1 В утилите инициализации менеджера каталогов данных (ICM) теперь можно добавить оператор SQL к концу оператора CREATE TABLE при помощи следующей команды: CREATEIC \DBTYPE тип-базы-данных \DGNAME имя-базы-данных \USERID id-пользователя \PASSWORD пароль \KA1 id-пользователя \TABOPT "каталог:\tabopt.file" Ключевое слово TABOPT можно задать в утилите CREATEIC из каталога установки DB2. За ключевым словом TABOPT должно идти полное имя файла tabopt.file. Если имя каталога содержит пробелы, заключите его в кавычки. Содержимое файла tabopt.file должно содержать информацию, добавляемую к оператору CREATE TABLE. Для записи в этот файл tabopt.file можно использовать любой из приведенных ниже операторов SQL. Утилита ICM прочтет этот файл и добавит его к оператору CREATE TABLE. Табл. 9. Операторы SQL IN MYTABLESPACE Создает таблицу с ее данными в табличном пространстве MYTABLESPACE DATA CAPTURE CHANGES Создает таблицу и записывает изменения SQL в расширенном формате IN ACCOUNTING INDEX IN ACCOUNT_IDX Создает таблицу с ее данными в табличном пространстве ACCOUNTING, а индекс - в пространстве ACCOUNT_IDX Максимальный размер содержимого - 1000 однобайтных символов. Эта новая возможность доступна только в системах Windows и UNIX. 26.1.2 Вопросы лицензирования Если вы получили следующее сообщение: FLG0083E: У вас нет действительной лицензии для утилиты инициализации Менеджера каталогов данных IBM. Пожалуйста, обратитесь к местному дилеру или торговому представителю IBM. Вы должны приобрести Менеджер хранилищ данных DB2 или сервер OLAP IBM DB2 и установить компонент Менеджер каталогов данных, содержащий утилиту инициализации каталога данных. 26.1.3 Вопросы установки Если вы установили Менеджер хранилищ данных DB2 или сервера OLAP DB2 IBM, а затем установили на той же рабочей станции другой компонент администратора менеджера каталогов данных (с компакт-диска DB2 Universal Database), утилита инициализации каталога данных может быть перезаписана. В этом случае в каталоге \sqllib\bin найдите файлы createic.bak и flgnmwcr.bak и переименуйте их соответственно в createic.exe и flgnmwcr.exe. Если вы устанавливаете дополнительные компоненты Менеджера каталогов данных DB2 Universal Database, эти компоненты должны быть установлены на отдельной рабочей станции (а не на той, где установлен Менеджер хранилищ данных). Дополнительную информацию смотрите в Главе 3, Installing Information Catalog Manager (Установка Менеджера каталогов данных) руководства DB2 Warehouse Manager Installation Guide. 26.2 Доступ к каталогам данных DB2 Версии 5 при помощи менеджера каталогов данных DB2 Версии 7 Подкомпоненты менеджера каталогов данных DB2 Версии 7, сконфигурированные процессом установки DB2 Версии 7, поддерживают доступ к каталогам данных, сохраненным в базах данных DB2 Версии 6 и DB2 Версии 7. Конфигурацию этих подкомпонентов можно изменить, чтобы обращаться к каталогам данных, сохраненным в базах данных DB2 Версии 5. Подкомпоненты менеджера каталогов данных DB2 Версии 7 не поддерживают доступ к данным из DB2 Версии 2 или более ранних версий. Чтобы настроить администратор каталога данных, пользователя каталога данных и утилиту инициализации каталога данных для доступа к каталогам данных, сохраненным в базах данных DB2 Версии 5: Установите DB2 Connect Enterprise Edition Версии 6 на рабочей станции, отличной от той, где установлен менеджер каталогов данных DB2 Версии 7. DB2 Connect Enterprise Edition входит в DB2 Universal Database Enterprise Edition и DB2 Universal Database Enterprise - Extended Edition. Если установлена Версия 6 одного из этих продуктов, не нужно отдельно устанавливать DB2 Connect. Ограничение:На одной рабочей станции Windows NT или OS/2 нельзя установить несколько версий DB2. Можно установить DB2 Connect на другой рабочей станции Windows NT или на рабочей станции OS/2 или UNIX. Сконфигурируйте менеджер каталогов данных и DB2 Connect Версии 6 для доступа к данным DB2 Версии 5. Дополнительную информацию смотрите в публикации Руководство пользователя DB2 Connect. Далее представлен обзор требуемых шагов: В системе DB2 Версии 5 используйте процессор командной строки DB2 для внесения в каталог базы данных Версии 5, к которой будет обращаться менеджер каталогов данных. В системе DB2 Connect используйте процессор командной строки DB2 для внесения в каталог: Узла TCP/IP для системы DB2 Версии 5 Базы данных для системы DB2 Версии 5 Записи DCS для системы DB2 Версии 5 На рабочей станции менеджера каталогов данных используйте процессор командной строки DB2 для внесения в каталог: Узла TCP/IP для системы DB2 Connect Базы данных для системы DB2 Connect Информацию о внесении в каталог баз данных смотрите в руководстве Дополнение по установке и конфигурированию DB2 Universal Database. На рабочей станции менеджера каталогов данных свяжите пакет CLI DB2 с каждой базой данных, для обращения к которой будет использоваться DB2 Connect. Далее показан пример команд DB2 для связывания с базой данных DB2 Версии 5 с именем v5database. Для ввода этих команд используйте процессор командной строки DB2. Файлы db2cli.lst и db2ajgrt находятся в каталоге \sqllib\bnd. db2 connect to v5database user ID_пользователя using пароль db2 bind db2ajgrt.bnd db2 bind @db2cli.lst blocking all grant public где ID_пользователя - ID пользователя для v5database и пароль - пароль для этого ID пользователя. При связывании db2cli.list с базой данных DB2 Версии 5 возникает ошибка. Эта ошибка вызывается тем, что в этой конфигурации не поддерживаются большие объекты. Эта ошибка не влияет на доступ агента хранилища данных к базе данных DB2 Версии 5. Для обращения к данным DB2 Версии 5 через DB2 Connect требуется FixPak 14 для DB2 Universal Database Версии 5, доступный с июня 2000 года. Номер APAR для этого FixPak - JR14507. 26.3 Конфигурирование каталога данных Про шаг 2 в первом разделе Главы 1, "Setting up an information catalog" (Конфигурирование каталога данных), говорится: When you install either the DB2 Warehouse Manager or the DB2 OLAP Server, a default information catalog is created on DB2 Universal Database for Windows NT. Это утверждение неверно. Вам надо определить новый каталог данных. Дополнительную информацию смотрите в разделе "Creating the Information Catalog" (Создание каталога данных). 26.4 Обмен метаданными с другими продуктами В Главе 6 "Exchanging metadata with other products" (Обмен метаданными с другими продуктами) в разделе "Identifying OLAP objects to publish" (Идентификация объектов OLAP для публикаций) во втором абзаце утверждается: When you publish DB2 OLAP Integration Server metadata, a linked relationship is created between an information catalog "dimensions within a multi-dimensional database" object type and a table object in the OLAP Integration Server. Это утверждение следует читать так: Когда вы публикуете метаданные сервера интеграции OLAP DB2 OLAP, создается взаимосвязь между каталогом данных "ассоциация в многомерной базе данных" и таблицей. Это же утверждение появляется в Приложении C, "Metadata mappings" (Отображение метаданных) в разделе "Metadata mappings between the Information Catalog Manager and OLAP Server" (Отображение метаданных между Менеджером каталогов данных и сервером OLAP). 26.5 Обмен метаданными при помощи командами flgnxoln В Главе 6 "Exchanging metadata" (Обмен метаданными) есть раздел "Identifying OLAP objects to publish" (Идентификация объектов OLAP для публикации). В конце этого раздела есть пример использования команды flgnxoln для публикации метаданных сервера OLAP через каталог данных. В этом примере каталог файлов db2olap.ctl db2olap.ff ошибочно указан как x:\Program Files\sqllib\logging. Правильное имя этого каталога - x:\Program Files\sqllib\exchange, как сказано на странице 87. 26.6 Обмен метаданными при помощи команды MDISDGC Глава 6. "Exchanging metadata with other products" (Обмен метаданными с другими продуктами), раздел "Converting MDIS-conforming metadata into a tag language file" (Конвертирование MDIS-совместимых метаданных в файл языка тегов), страница 97. Команду MDISDGC нельзя ввести в командном окне MS-DOS. Эту команду надо вводить в командном окне DB2. В первом предложении раздела "Converting a tag language file into MDIS-conforming metadata" (Конвертирование MDIS-совместимых метаданных в файл языка тегов) тоже говорится, что команду DGMDISC надо вводить из командной строки MS-DOS. Команду DGMDISC надо вводить в командном окне DB2. 26.7 Вызов программ В некоторых примерах руководства Information Catalog Administration Guide есть команды, содержащие каталог Program Files. Вызывая команду, в имя которой входит Program Files, надо заключить строку вызова в двойные кавычки. Например, в Приложении B, "Predefined Information Catalog Manager object types" (Предопределенные типы объектов Менеджера каталогов данных) в разделе "Initializing your information catalog with the predefined object types" (Инициализация каталога данных с предопределенными типами объектов) приводится пример. Если использовать его из командной строки DOS буквально, вы получите сообщение об ошибке. Правильный текст примера такой: "X:Program Files\SQLLIB\SAMPLES\SAMPDATA\DGWDEMO" /T userid password dgname Information Catalog Manager Programming Guide and Reference 27.1 Коды причин Менеджера каталогов данных В Приложении D: Information Catalog Manager reason codes в крайнем правом столбце может не полностью выводиться текст для следующих кодов причин: 31014, 32727, 32728, 32729, 32730, 32735, 32736, 32737, 33000, 37507, 37511 и 39206. Если текст усечен, смотрите HTML-версию этой книги, где он приводится полностью. Information Catalog Manager User's Guide В главе 2 есть раздел под названием "Registering a server node and remote information catalog" (Регистрация узла сервера и удаленного каталога данных). В этом разделе перечислены шаги, которые можно выполнить из Центра управления DB2 перед регистрацией удаленного каталога данных с использованием Менеджера каталогов данных. В последнем абзаце этого раздела сказано, что после выполнения последовательности шагов из Центра управления DB2 (добавить систему, добавить экземпляр и добавить базу данных) Центр управления необходимо отключить, и только после этого открывать Менеджер каталогов данных. Это неверно. Отключать Центр управления перед открытием Менеджера каталогов данных не обязательно. То же исправление касается раздела оперативной справки "Регистрация узла сервера и удаленного каталога данных" и оперативной справки для окна Регистрация узла сервера и каталога данных. Менеджер каталогов данных: Сообщения 29.1 Сообщение FLG0260E Второе предложение в объяснении этого сообщения должно быть таким: Эта ошибка вызвана ошибкой отката каталога данных. Каталог данных не находится в стабильном состоянии, но изменения не были внесены. 29.2 Сообщение FLG0051E Второй абзац в объяснении этого сообщения должен быть таким: Каталог данных содержит слишком много объектов или типов объектов. В описании действий администратора должно быть сказано: Удалите из текущего каталога данных некоторые объекты или типы объектов с помощью функции импорта. 29.3 Сообщение FLG0003E В объяснении этого сообщения должно быть сказано: Чтобы каталог данных можно было использовать, он должен быть зарегистрирован. Возможно, этот каталог данных не был правильно зарегистрирован. 29.4 Сообщение FLG0372E Первое предложение в объяснении этого сообщения должно быть таким: Проигнорировано значение ATTACHMENT-IND для объекта, поскольку это объект подключения. 29.5 Сообщение FLG0615E Второе предложение в этом сообщении должно быть таким: Менеджер каталогов данных обнаружил непредвиденную ошибку в базе данных или не нашел файл связывания в текущем каталоге или пути. Менеджер каталогов данных: Электронная справка Окно каталога данных: В электронной справке для пункта Открыть меню Выбранный ошибочно сказано: "Открывает выбранный объект". Там должно быть сказано: "Открывает окно Определить поиск". 30.1 Менеджер каталогов данных для Web При использовании каталога данных, находящегося в системе DB2 UDB for OS/390, поиск без учета регистра недоступен. Это относится и к простому поиску, и к сложному поиску. Электронная справка для простого поиска не поясняет, что все виды поиска в каталоге данных DB2 UDB for OS/390 производятся с учетом регистра. Далее, любой объект категории группировки можно развернуть, даже если у него нет базовых объектов. DB2 Warehouse Manager Installation Guide 31.1 Требования к программному обеспечению для преобразователей хранилища На той базе данных, где вы планируете использовать преобразователи хранилища, нужно установить Java Developer's Kit (JDK) версии 1.1.8 или новее. Query Patroller Administration Guide 32.1 Клиент DB2 Query Patroller - это отдельный компонент Клиент DB2 Query Patroller - отдельный компонент, не входящий в клиент управления DB2. Это значит, что он не устанавливается при установке клиента администратора DB2, как сказано в руководстве Query Patroller Installation Guide. Клиент Query Patroller надо устанавливать отдельно. Версии и уровни клиента и сервера Query Patroller должны совпадать. 32.2 Перенастройка из Версии 6 DB2 Query Patroller с использованием dqpmigrate Команду dqpmigrate необходимо использовать, если Версия 7 сервера Query Patroller установлена поверх Версии 6. Для FixPak 2 или более позднего нет необходимости запускать dqpmigrate вручную, поскольку FixPak запускает эту команду автоматически. Если не использовать эту команду, у существующих пользователей, определенных в Версии 6, не будет привилегий EXECUTE для нескольких новых хранимых процедур, добавленных в Версии 7. Прим.:dqpmigrate.bnd находится в каталоге sqllib/bnd, а dqpmigrate.exe - в каталоге sqllib/bin. Чтобы использовать dqpmigrate вручную для предоставления привилегий EXECUTE, после установки FixPak: Свяжите файл пакета /sqllib/bnd/dqpmigrate.bnd с базой данных, на которой был установлен сервер Query Patroller, введя команду: db2 bind dqpmigrate.bnd Выполните dqpmigrate, введя команду: dqpmigrate dbalias userid passwd 32.3 Включение управления запросами В главе "Getting Started" в разделе "Enabling Query Management" текст должен выглядеть так: Для задания параметров конфигурации базы данных необходимо быть владельцем этой базы данных или обладать полномочиями SYSADM, SYSCTRL или SYSMAINT. 32.4 Положение табличного пространства для управляющих таблиц В главе 1 "System Overview" (Обзор системы) под заголовком DB2 Query Patroller Control Tables в конец первого абзаца раздела надо добавить следующий текст: Табличное пространство для управляющих таблиц DB2 Query Patroller должно находиться в одноузловой группе узлов, иначе DB2 Query Patroller не будет работать правильно. 32.5 Новые параметры команды dqpstart В главу 2 "Getting Started" (Начинаем работу) под заголовком Starting and Stopping DB2 Query Patroller после последнего абзаца надо добавить следующий текст: Новые параметры команды dqpstart: Параметр RESTART: Позволяет пользователям заменять имя хоста и/или тип узла для указанного узла в файле dqpnodes.cfg. DB2 Query Patroller будет запущен на этом узле. Прим.:Перед выполнением команды DQPSTART с параметром RESTART надо проверить, что: DB2 Query Patroller уже остановлен на хосте, который будет заменен. DB2 Query Patroller не запущен еще на новом хосте. Синтаксис команды: dqpstart nodenum номер_узла restart имя_хоста server | agent | none Параметр ADDNODE: Позволяет пользователю добавить новый узел к файлу dqpnodes.cfg. DB2 Query Patroller будет запущен на этом узле после добавления новой записи в файл dqpnodes.cfg. Синтаксис команды: dqpstart nodenum номер_узла addnode имя_хоста server | agent | none Параметр DROPNODE: Позволяет пользователю удалить узел из файла dqnodes.cfg. DB2 Query Patroller будет остановлен на этом узле перед удалением записи из файла dqpnodes.cfg. Синтаксис команды: dqpstop nodenum номер_узла dropnode 32.6 Новый параметр команды iwm_cmd Для команды iwm_cmd добавлен новый параметр -v, который позволяет пользователю восстановить состояние заданий, выполняемых на указанном узле. Восстановить можно только задания на неактивном узле. Эту команду следует использовать, когда происходит отказ узла и есть задания, выполняемые на этом узле или же отменяемые в этот момент. Задания в состоянии "Выполняется" запускаются снова и переводятся в состояние "В очереди". Задания в состоянии "Отменяется" будут переведены в состояние "Отменено". Соответствующая часть синтаксиса команды: >>-iwm_cmd----+---------------------------------------+---------> '--u--id_пользователя--+-------------+--' '--p--пароль--' >-----v--id_узла_для_восстановления---------------------------->< id_узла_для_восстановления Задает узел, задания на котором должны быть восстановлены. 32.7 Новая переменная реестра: DQP_RECOVERY_INTERVAL Новая переменная реестра DQP_RECOVERY_INTERVAL используется для задания интервала в минутах, через который iwm_scheduler ищет файлы восстановления. Значение по умолчанию - 60 минут. 32.8 Запуск QueryAdministrator В главе "Using QueryAdministrator to Administer DB2 Query Patroller" содержатся инструкции по запуску QueryAdministrator из меню Пуск Windows. В первом шаге содержится следующий текст: If you are using Windows, you can select DB2 Query Patroller --> QueryAdministrator from the IBM DB2 program group. Этот текст должен выглядеть так: DB2 Query Patroller --> QueryAdmin. 32.9 Управление пользователями В разделе "User Administration" главы "Using QueryAdministrator to Administer DB2 Query Patroller" в определении параметра максимального затраченного времени сказано, что если он имеет значение 0 или -1, запрос всегда будет выполняться до завершения. Этому параметру нельзя задать отрицательное значение. В тексте должно быть сказано, что если для него задано значение 0, запрос всегда будет выполняться до завершения. Параметр максимального числа запросов задает максимальное число заданий, одновременно выполняемых DB2 Query Patroller. Его значение должно быть целым числом от 0 до 32767. 32.10 Создание очереди заданий В разделе "Job Queue Administration" главы "Using QueryAdministrator to Administer DB2 Query Patroller" вид экрана в шагах для "Создания очереди заданий" должен идти после второго шага. Окно Информация о новой очереди заданий открывается после нажатия на кнопку Новое на странице Управление очередью заданий инструмента QueryAdministrator. Ссылки на страницу Очереди заданий и закладку Очереди заданий должны указывать на страницу Управление очередью заданий и закладку Управление очередью заданий соответственно. 32.11 Использование интерфейса командной строки Чтобы передать запрос и чтобы была создана таблица результатов, пользователю с полномочиями User в системе DB2 Query Patroller могут быть нужны полномочия CREATETAB для базы данных. Такому пользователю не требуются полномочия CREATETAB для базы данных, если переменная профиля DQP_RES_TBLSPC не задана или если в качестве ее значения задано имя табличного пространства по умолчанию. В этих случаях таблица результатов будет успешно создана, поскольку пользователи имеют полномочия на создание таблиц в табличном пространстве по умолчанию. 32.12 Замечания по Query Enabler При использовании инструментов запросов других производителей, использующих указатель с набором ключей, запросы не будут перехватываться. Чтобы Query Enabler перехватывал такие запросы, нужно изменить файл db2cli.ini, задав в нем: [common] DisableKeySetCursor=1 Для клиентов AIX убедитесь, что не задана переменная среды LIBPATH. Поставляемая с JDK библиотека libXext.a не совместима с библиотекой в каталоге /usr/lib/X11. Это вызывает проблемы с графическим интерфейсом Query Enabler. 32.13 DB2 Query Patroller Tracker может возвратить пустую страницу столбцов FixPak 3 содержит исправление к DB2 Query Patroller Tracker. Теперь он корректно возвращает результаты запросов, для которых не найдено столбцов. Пример такого запроса - "SELECT COUNT(*) FROM ...". Поскольку такому запросу не соответствует ни один столбец таблицы, Tracker возвращает в качестве страницы столбцов пустую страницу. Это не является дефектом. 32.14 Query Patroller и средства репликации Query Patroller Версии 7 будет перехватывать запросы средств репликации (asnapply, asnccp, djra и analyze), что приводит к неправильной работе этих средств. Обходной прием - отключать динамическое управление запросами при выполнении этих средств. 32.15 Приложение B. Troubleshooting DB2 Query Patroller Clients (Устранение неисправностей клиентов DB2 Query Patroller) В Приложении B, Troubleshooting DB2 Query Patroller Clients (Устранение неисправностей клиентов DB2 Query Patroller) в разделе Common Query Enabler Problems (Общие ошибки Query Enabler) в описании второй ошибки текст первого пункта надо заменить на: Убедитесь, что значение path содержит jre. Разработка прикладных программ Частичное содержание Administrative API Reference 33.1 db2ArchiveLog (новый API) db2ArchiveLog 33.2 db2ConvMonStream 33.3 db2DatabasePing (новый API) db2DatabasePing - проверка связи с базой данных 33.4 db2HistData 33.5 db2HistoryOpenScan 33.6 db2XaGetInfo (новый API) db2XaGetInfo - Получить информацию для менеджера ресурсов 33.7 db2XaListIndTrans (новый API, заменяющий sqlxphqr) db2XaListIndTrans - Получить список неоднозначных транзакций 33.8 db2GetSnapshot - получить снимок 33.9 Запись журнала Forget 33.10 sqlaintp - Получить сообщение об ошибке 33.11 sqlbctcq - Закрыть запрос к контейнеру табличного пространства 33.12 sqlubkp - резервное копирование базы данных 33.13 sqlureot - реорганизовать таблицу 33.14 sqlurestore - восстановить базу данных 33.15 Ошибка документации о поддержке расширенной совместно используемой памяти AIX 33.16 SQLFUPD 33.16.1 locklist 33.17 SQLEDBDESC 33.18 Ошибка документации SQLFUPD Application Building Guide 34.1 Глава 1. Introduction 34.1.1 Поддерживаемое программное обеспечение 34.1.2 Примеры программ 34.2 Глава 3. General Information for Building DB2 Applications 34.2.1 Файлы построения, make-файлы и утилиты проверки ошибок 34.3 Глава 4. Building Java Applets and Applications 34.3.1 Задание среды 34.3.1.1 Уровень JDK в OS/2 34.3.1.2 Java2 в HP-UX 34.4 Глава 5. Building SQL Procedures 34.4.1 Настройка среды процедур SQL 34.4.2 Задание переменных среды компилятора 34.4.3 Настройка команды компиляции 34.4.4 Удаление промежуточных файлов 34.4.5 Резервное копирование и восстановление 34.4.6 Создание процедур SQL 34.4.7 Вызов хранимых процедур 34.4.8 Распространение скомпилированных процедур SQL 34.5 Глава 7. Building HP-UX Applications. 34.5.1 HP-UX C 34.5.2 HP-UX C++ 34.6 Глава 9. Building OS/2 Applications 34.6.1 VisualAge C++ for OS/2 Версии 4.0 34.7 Глава 10. Building PTX Applications 34.7.1 ptx/C++ 34.8 Глава 12. Building Solaris Applications 34.8.1 SPARCompiler C++ 34.9 Глава 13. Building Applications for Windows 32-bit Operating Systems 34.9.1 VisualAge C++ Версии 4.0 Application Development Guide 35.1 Глава 2. Coding a DB2 Application 35.1.1 Активация встраиваемых модулей проектов и инструментов IBM DB2 Universal Database для Microsoft Visual C++ 35.2 Глава 6. Common DB2 Application Techniques 35.2.1 Генерирование последовательных значений 35.2.1.1 Управление поведением последовательности 35.2.1.2 Улучшение производительности с помощью объектов последовательности 35.2.1.3 Сравнение объектов последовательности и столбцов идентификации 35.3 Глава 7. Stored Procedures 35.3.1 Ошибка типа DECIMAL в Java-процедурах Linux 35.3.2 Использование указателей в рекурсивных хранимых процедурах 35.3.3 Написание хранимых процедур автоматизации OLE 35.4 Глава 12. Working with Complex Objects: User-Defined Structured Types 35.4.1 Вставка в столбцы атрибутов структурированного типа 35.5 Глава 13. Using Large Objects (LOBs) 35.5.1 Поддержка больших объектов в системах баз данных объединения 35.5.1.1 Как DB2 получает большие объекты 35.5.1.2 Как программы могут использовать локаторы больших объектов 35.5.1.3 Ограничения больших объектов 35.5.1.4 Отображения типов данных больших объектов и других типов данных 35.5.2 Настройка системы 35.6 Часть 5. DB2 Programming Considerations 35.6.1 Провайдер OLE DB IBM DB2 35.7 Глава 20. Programming in C and C++ 35.7.1 Типы C/C++ для хранимых процедур, пользовательских функций и методов 35.8 Глава 21. Programming in Java 35.8.1 Сигнатура метода Java в процедурах и функциях с PARAMETER STYLE JAVA 35.8.2 Соединение с сервером апплетов JDBC 35.9 Приложение B. Примеры программ CLI Guide and Reference 36.1 Связывание утилит базы данных при использовании клиента времени выполнения 36.2 Использование статического SQL в прикладных программах CLI 36.3 Ограничения статического профилирования JDBC/ODBC/CLI 36.4 Преобразования ADT 36.5 Глава 3. Using Advanced Features 36.5.1 Writing Multi-Threaded Applications 36.5.2 Scrollable Cursors 36.5.2.1 Поддержка указателей с возможностью прокрутки на стороне сервера для OS/390 36.5.3 Using Compound SQL 36.5.4 Using Stored Procedures 36.5.4.1 Написание хранимой процедуры в CLI 36.5.4.2 Хранимые процедуры и автоматическое связывание CLI 36.6 Глава 4. Configuring CLI/ODBC and Running Sample Applications 36.6.1 Ключевые слова конфигурации 36.7 Глава 5. DB2 CLI Functions 36.7.1 Параметр SQLBindFileToParam - Связать ссылку файла большого объекта с большим объектом 36.7.2 SQLNextResult - Связать следующий набор результатов с другим хэндлом оператора 36.7.2.1 Назначение 36.7.2.2 Синтаксис 36.7.2.3 Аргументы функции 36.7.2.4 Использование 36.7.2.5 Коды возврата 36.7.2.6 Диагностика 36.7.2.7 Ограничения 36.7.2.8 Ссылки 36.8 Приложение D. Extended Scalar Functions 36.8.1 Date and Time Functions 36.9 Приложение K. Using the DB2 CLI/ODBC/JDBC Trace Facility Справочник по сообщениям 37.1 Получение справки по сообщению и SQLSTATE 37.2 Изменение отображения SQLCODE в DB2 Connect 37.3 Новые и измененные сообщения 37.3.1 Сообщения интерфейса уровня вызовов (CLI) 37.3.2 Сообщения DB2 37.3.3 Сообщения DBI 37.3.4 Сообщения Центра хранилищ данных (DWC) 37.3.5 Сообщения SQL 37.4 Измененные SQLSTATES SQL Reference 38.1 Справочник SQL поставляется в виде одного файла PDF 38.2 Глава 3. Language Elements (Элементы языка) 38.2.1 Правила именования и неявные спецификаторы имен объектов 38.2.2 DATALINK Assignments 38.2.3 Expressions (Выражения) 38.2.3.1 Синтаксическая диаграмма 38.2.3.2 Функции OLAP 38.2.3.3 Справочник по последовательностям 38.3 Глава 4. Functions (Функции) 38.3.1 Включение новых функций и процедур 38.3.2 Скалярные функции 38.3.2.1 ABS или ABSVAL 38.3.2.2 DECRYPT_BIN и DECRYPT_CHAR 38.3.2.3 ENCRYPT 38.3.2.4 GETHINT 38.3.2.5 IDENTITY_VAL_LOCAL 38.3.2.6 LCASE и UCASE (Unicode) 38.3.2.7 MQPUBLISH 38.3.2.8 MQREAD 38.3.2.9 MQRECEIVE 38.3.2.10 MQSEND 38.3.2.11 MQSUBSCRIBE 38.3.2.12 MQUNSUBSCRIBE 38.3.2.13 MULTIPLY_ALT 38.3.2.14 REC2XML 38.3.2.15 ROUND 38.3.2.16 WEEK_ISO 38.3.3 Table Functions (Табличные функции) 38.3.3.1 MQREADALL 38.3.3.2 MQRECEIVEALL 38.3.4 Процедуры 38.3.4.1 GET_ROUTINE_SAR 38.3.4.2 PUT_ROUTINE_SAR 38.4 Глава 5. Queries (Запросы) 38.4.1 оператор select/синтаксическая диаграмма 38.4.2 оператор select/условие fetch-first 38.5 Глава 6. SQL Statements (Операторы SQL) 38.5.1 Теперь поддерживается возможность изменения ключа разделения 38.5.1.1 Оператор: ALTER TABLE 38.5.1.2 Оператор: CREATE TABLE 38.5.1.3 Оператор: DECLARE GLOBAL TEMPORARY TABLE PARTITIONING KEY (имя-столбца,...) 38.5.1.4 Оператор: UPDATE 38.5.2 Длинные ключи индекса для баз данных Unicode 38.5.2.1 ALTER TABLE 38.5.2.2 CREATE INDEX 38.5.2.3 CREATE TABLE 38.5.3 ALTER SEQUENCE ALTER SEQUENCE 38.5.4 ALTER TABLE 38.5.5 Compound SQL (Embedded) (Составной SQL - встроенный) 38.5.6 Составной оператор (динамический) Составной оператор (динамический) 38.5.7 Функция CREATE (источник или шаблон) 38.5.8 Функция CREATE (скалярная SQL, табличная или строчная) 38.5.9 CREATE METHOD CREATE METHOD 38.5.10 CREATE SEQUENCE CREATE SEQUENCE 38.5.11 CREATE TRIGGER CREATE TRIGGER 38.5.12 CREATE WRAPPER 38.5.13 DECLARE CURSOR 38.5.14 DELETE 38.5.15 DROP 38.5.16 GRANT (привилегии для последовательности) GRANT (привилегии для последовательности) 38.5.17 INSERT 38.5.18 SELECT INTO 38.5.19 SET ENCRYPTION PASSWORD SET ENCRYPTION PASSWORD 38.5.20 SET переходная-переменная SET переменная 38.5.21 UPDATE 38.6 Глава 7 "SQL Procedures" теперь называется "SQL Control Statements" 38.6.1 Оператор процедуры SQL Оператор процедуры SQL 38.6.2 FOR FOR 38.6.3 Заголовок раздела Compound Statement изменен на Compound Statement (Procedure) 38.6.4 RETURN RETURN 38.6.5 SIGNAL SIGNAL 38.7 Приложение A. SQL Limits 38.8 Приложение D. Catalog Views 38.8.1 SYSCAT.SEQUENCES Построитель хранимых процедур DB2 39.1 Поддержка Java 1.2 для построителя хранимых процедур DB2 39.2 Удаленная отладка хранимых процедур DB2 39.3 Построение процедур SQL на платформах Windows, OS/2 или UNIX 39.4 Использование построителя хранимых процедур DB2 на платформе Solaris 39.5 Известные проблемы и ограничения 39.6 Использование построителя хранимых процедур DB2 с традиционным китайским языком 39.7 Установки в UNIX (AIX, Sun Solaris, Linux) и построитель хранимых процедур 39.8 Построение хранимых процедур SQL в OS/390 39.9 Отладка хранимых процедур SQL 39.10 Экспорт хранимых процедур Java 39.11 Вставка хранимых процедур в OS/390 39.12 Задание опций построения для хранимых процедур SQL на сервере рабочих станций 39.13 Автоматическое обновление адресного пространства WLM для построения хранимых процедур в OS/390 39.14 Разработка хранимых процедур Java в OS/390 39.15 Построение табличной пользовательской функции DB2 для MQ Series и OLE DB Обновления для Unicode 40.1 Введение 40.1.1 Базы данных Unicode и прикладные программы DB2 40.1.2 Обновление документации 40.2 SQL Reference 40.2.1 Глава 3. Language Elements 40.2.1.1 Расширение типов данных 40.2.1.2 Преобразование типов данных 40.2.1.3 Назначения и сравнения 40.2.1.4 Правила для типов данных результатов 40.2.1.5 Rules for String Conversions 40.2.1.6 Expressions 40.2.1.7 Predicates 40.2.2 Глава 4. Functions 40.2.2.1 Scalar Functions 40.3 CLI Guide and Reference 40.3.1 Глава 3. Using Advanced Features 40.3.1.1 Написание прикладной программы Unicode CLI DB2 40.3.2 Приложение C. DB2 CLI and ODBC 40.3.2.1 Прикладные программы Unicode ODBC 40.4 Data Movement Utilities Guide and Reference 40.4.1 Приложение C. Export/Import/Load Utility File Formats Administrative API Reference 33.1 db2ArchiveLog (новый API) db2ArchiveLog Закрывает и усекает активный файл журнала восстановимой базы данных. Если включен обработчик пользователя, шлет требование архивирования. Авторизация Одни из следующих: sysadm sysctrl sysmaint dbadm Необходимое соединение Этот API автоматически устанавливает соединение с указанной базой данных. Если соединение с указанной базой данных уже существует, API возвращает ошибку. Версия db2ApiDf.h Синтаксис API C /* Файл: db2ApiDf.h */ /* API: архивировать активный журнал */ SQL_API_RC SQL_API_FN db2ArchiveLog ( db2Uint32 version, void *pDB2ArchiveLogStruct, struct sqlca * pSqlca); typedef struct { char *piDatabaseAlias; char *piUserName; char *piPassword; db2Uint16 iAllNodeFlag; db2Uint16 iNumNodes; SQL_PDB_NODE_TYPE *piNodeList; db2Uint32 iOptions; } Результаты /* Файл: db2ApiDf.h */ /* API: архивировать активный журнал */ SQL_API_RC SQL_API_FN db2gArchiveLog ( db2Uint32 version, void *pDB2ArchiveLogStruct, struct sqlca * pSqlca); typedef struct { db2Uint32 iAliasLen; db2Uint32 iUserNameLen; db2Uint32 iPasswordLen; char *piDatabaseAlias; char *piUserName; char *piPassword; db2Uint16 iAllNodeFlag; db2Uint16 iNumNodes; SQL_PDB_NODE_TYPE *piNodeList; db2Uint32 iOptions; } Параметры API version Входной. Задает уровень версии и выпуска для переменной, передаваемой во втором параметре, pDB2ArchiveLogStruct. pDB2ArchiveLogStruct Входной. Указатель на структуру db2ArchiveLogStruct. pSqlca Выходной. Указатель на структуру sqlca. iAliasLen Входной. 4-байтное целое без знака, равное длине (в байтах) алиаса базы данных. iUserNameLen 4-байтное целое без знака, задающее длину в байтах имени пользователя. Если имя пользователя не используется, имеет значение 0. iPasswordLen Входной. 4-байтное целое без знака, задающее длину в байтах пароля. Задайте равным нулю, если пароль не используется. piDatabaseAlias Входной. Строка, содержащая алиас (как он внесен в системный каталог баз данных) базы данных, для которой надо архивировать активный журнал. piUserName Входной. Строка, содержащая имя пользователя для попытки соединения. piPassword Входной. Строка, содержащая пароль для попытки соединения. iAllNodeFlag Только для MPP. Входной. Флаг, указывающий, надо ли применять операцию ко всем узлам, перечисленным в файле db2nodes.cfg. Допустимые значения: DB2ARCHIVELOG_NODE_LIST Применяется на узлах из переданного в параметре piNodeList списка. DB2ARCHIVELOG_ALL_NODES Применяется на всех узлах. piNodeList должен иметь значение NULL. Это значение по умолчанию. DB2ARCHIVELOG_ALL_EXCEPT Применяется на всех узлах, кроме узлов из переданного в параметре piNodeList списка. iNumNodes Только для MPP. Входной. Задает число узлов в списке piNodeList. piNodeList Только для MPP. Входной. Указатель на массив номеров узлов, на которых выполняется операция архивирования журнала. iOptions Входной. Зарезервирован для будущего использования. 33.2 db2ConvMonStream В разделе Usage Notes структура для типа потока данных переменной снимка SQLM_ELM_SUBSECTION должна быть sqlm_subsection. 33.3 db2DatabasePing (новый API) db2DatabasePing - проверка связи с базой данных Проверяет время ответа сети для соединения между клиентом и сервером баз данных. Этот API может использоваться любой программой, когда обращение к серверу баз данных хоста осуществляется через DB2 Connect, как напрямую, так и через шлюз. Авторизация Нет Необходимое соединение База данных Версия db2ApiDf.h Синтаксис API C /* Файл: db2ApiDf.h */ /* API: Проверка соединения с базой данных */ /* ... */ SQL_API_RC SQL_API_FN db2DatabasePing ( db2Uint32 versionNumber, void *pParmStruct, struct sqlca *pSqlca); /* ... */ typedef SQL_STRUCTURE db2DatabasePingStruct { char iDbAlias[SQL_ALIAS_SZ + 1]; db2Uint16 iNumIterations; db2Uint32 *poElapsedTime; } Результаты /* Файл: db2ApiDf.h */ /* API: Проверка соединения с базой данных */ /* ... */ SQL_API_RC SQL_API_FN db2gDatabasePing ( db2Uint32 versionNumber, void *pParmStruct, struct sqlca *pSqlca); /* ... */ typedef SQL_STRUCTURE db2gDatabasePingStruct { db2Uint16 iDbAliasLength; char iDbAlias[SQL_ALIAS_SZ]; db2Uint16 iNumIterations; db2Uint32 *poElapsedTime; } Параметры API versionNumber Входной. Версия и выпуск продукта DB2 Universal Database или DB2 Connect, которые использует программа. Прим.:Для DB2 Версии 7.1 или новее должна использоваться константа db2Version710. iDbAliasLength Входной. Длина алиаса базы данных. Прим.:Этот параметр сейчас не используется. Он зарезервирован для будущего использования. iDbAlias Входной. Алиас базы данных. Прим.:Этот параметр сейчас не используется. Он зарезервирован для будущего использования. iNumIterations Входной. Число повторений требований тестирования. Значение должно находиться в диапазоне от 1 до 32767 включительно. poElapsedTime Выходной. Указатель на массив 32-битных целых, число элементов равно значению iNumIterations. Каждый элемент в этом массиве будет содержать время в микросекундах, затраченное на одно выполнение требования тестирования. Прим.:За выделение памяти для этого массива перед вызовом данного API отвечает прикладная программа. pSqlca Выходной. Указатель на структуру sqlca. Дополнительную информацию об этой структуре смотрите в руководстве Administrative API Reference. Замечания по использованию Перед вызовом данного API соединение с базой данных должно существовать, иначе произойдет ошибка. Эту функцию можно также вызвать при помощи команды PING. Описание этой команды смотрите в руководстве Command Reference. 33.4 db2HistData К Таблице 11 надо добавить следующие строки. Поля в структуре db2HistData: Имя поля Тип данных Описание oOperation char Смотрите таблицу 12. oOptype char Смотрите таблицу 13. После таблицы 11 надо добавить следующую таблицу. Таблица 12. Допустимые значения событий для oOperation в структуре db2HistData Значение Описание Определение на C Определение на COBOL/FORTRAN A добавить табличное пространство DB2HISTORY_OP_ADD_ TABLESPACE DB2HIST_OP_ADD_TABLESPACE B резервное копирование DB2HISTORY_OP_BACKUP DB2HIST_OP_BACKUP C загрузка и копирование DB2HISTORY_OP_LOAD_COPY DB2HIST_OP_LOAD_COPY D отброшенная таблица DB2HISTORY_OP_DROPPED_TABLE DB2HIST_OP_DROPPED_TABLE F повтор транзакций DB2HISTORY_OP_ROLLFWD DB2HIST_OP_ROLLFWD G перестроить таблицу DB2HISTORY_OP_REORG DB2HIST_OP_REORG L загрузка DB2HISTORY_OP_LOAD DB2HIST_OP_LOAD N переименовать табличное пространство DB2HISTORY_OP_REN_ TABLESPACE DB2HIST_OP_REN_TABLESPACE O отбросить табличное пространство DB2HISTORY_OP_DROP_ TABLESPACE DB2HIST_OP_DROP_ TABLESPACE Q стабилизация DB2HISTORY_OP_QUIESCE DB2HIST_OP_QUIESCE R восстановление DB2HISTORY_OP_RESTORE DB2HIST_OP_RESTORE S запустить статистику DB2HISTORY_OP_RUNSTATS DB2HIST_OP_RUNSTATS T изменить табличное пространство DB2HISTORY_OP_ALT_TABLESPACE DB2HIST_OP_ALT_TBS U выгрузить DB2HISTORY_OP_UNLOAD DB2HIST_OP_UNLOAD Надо также добавить следующую таблицу. Таблица 13. Допустимые значения oOptype в структуре db2HistData oOperation oOptype Описание Описание C/COBOL/FORTRAN B F автономный DB2HISTORY_OPTYPE_OFFLINE N оперативный DB2HISTORY_OPTYPE_ONLINE I инкрементный автономный DB2HISTORY_OPTYPE_INCR_OFFLINE O инкрементный оперативный DB2HISTORY_OPTYPE_INCR_ONLINE D разностный автономный DB2HISTORY_OPTYPE_DELTA_OFFLINE E разностный оперативный DB2HISTORY_OPTYPE_DELTA_ONLIN F E до конца журнала DB2HISTORY_OPTYPE_EOL P до момента времени DB2HISTORY_OPTYPE_PIT L I вставка DB2HISTORY_OPTYPE_INSERT R замена DB2HISTORY_OPTYPE_REPLACE Q S стабилизация в совместном режиме DB2HISTORY_OPTYPE_SHARE U изменение стабилизации DB2HISTORY_OPTYPE_UPDATE X стабилизация в монопольном режиме DB2HISTORY_OPTYPE_EXCL Z сброс стабилизации DB2HISTORY_OPTYPE_RESET R F автономный DB2HISTORY_OPTYPE_OFFLINE N оперативный DB2HISTORY_OPTYPE_ONLINE I инкрементный автономный DB2HISTORY_OPTYPE_INCR_OFFLINE O инкрементный оперативный DB2HISTORY_OPTYPE_INCR_ONLINE T C добавить контейнеры DB2HISTORY_OPTYPE_ADD_CONT R перебалансировка DB2HISTORY_OPTYPE_REB 33.5 db2HistoryOpenScan К параметру iCallerAction надо добавить следующее значение. DB2HISTORY_LIST_CRT_TABLESPACE Выбирает только записи CREATE TABLESPACE и DROP TABLESPACE, прошедшие прочие фильтры. 33.6 db2XaGetInfo (новый API) db2XaGetInfo - Получить информацию для менеджера ресурсов Получает информацию для конкретного менеджера ресурсов после того, как были сделаны вызовы xa_open. Авторизация Нет Необходимое соединение База данных Версия sqlxa.h Синтаксис API C /* Файл: sqlxa.h */ /* Функция API: Получить информацию для менеджера ресурсов */ /* ... */ SQL_API_RC SQL_API_FN db2XaGetInfo ( db2Uint32 versionNumber, void * pParmStruct, struct sqlca * pSqlca); typedef SQL_STRUCTURE db2XaGetInfoStruct { db2int32 iRmid; struct sqlca oLastSqlca; } db2XaGetInfoStruct; Параметры API versionNumber Входной. Задает уровень версии и выпуска для структуры, передаваемой во втором параметре pParmStruct. pParmStruct Входной. Указатель на структуру db2XaGetInfoStruct. pSqlca Выходной. Указатель на структуру sqlca. Дополнительную информацию об этой структуре смотрите в руководстве Administrative API Reference. iRmid Входной. Задает менеджер ресурсов, для которого требуется информация. oLastSqlca Выходной. Содержит sqlca для последнего вызова API XA. Прим.:Можно получить только sqlca для последнего неудачного вызова API XA. 33.7 db2XaListIndTrans (новый API, заменяющий sqlxphqr) db2XaListIndTrans - Получить список неоднозначных транзакций Выдает список всех неоднозначных транзакций для базы данных, с которой в настоящее время установлено соединение. Область действия Эта функция API влияет только на узел, на котором она вызвана. Авторизация Одни из следующих: sysadm dbadm Необходимое соединение База данных Версия db2ApiDf.h Синтаксис API C /* Файл: db2ApiDf.h */ /* Функция API: Получить список неоднозначных транзакций */ /* ... */ SQL_API_RC SQL_API_FN db2XaListIndTrans ( db2Uint32 versionNumber, void * pParmStruct, struct sqlca * pSqlca); typedef SQL_STRUCTURE db2XaListIndTransStruct { db2XaRecoverStruct * piIndoubtData; db2Uint32 iIndoubtDataLen; db2Uint32 oNumIndoubtsReturned; db2Uint32 oNumIndoubtsTotal; db2Uint32 oReqBufferLen; } db2XaListIndTransStruct; typedef SQL_STRUCTURE db2XaRecoverStruct { sqluint32 timestamp; SQLXA_XID xid; char dbalias[SQLXA_DBNAME_SZ]; char applid[SQLXA_APPLID_SZ]; char sequence_no[SQLXA_SEQ_SZ]; char auth_id[SQL_USERID_SZ]; char log_full; char connected; char indoubt_status; char originator; char reserved[8]; } db2XaRecoverStruct; Параметры API versionNumber Входной. Задает уровень версии и выпуска для структуры, передаваемой во втором параметре pParmStruct. pParmStruct Входной. Указатель на структуру db2XaListIndTransStruct. pSqlca Выходной. Указатель на структуру sqlca. Дополнительную информацию об этой структуре смотрите в руководстве Administrative API Reference. piIndoubtData Входной. Указатель на поставляемый прикладной программой буфер, в который будут возвращена информация о неоднозначных транзакциях. Эта возвращаемая информация имеет формат db2XaRecoverStruct. Прикладная программа может просмотреть список неоднозначных транзакций, начиная с адреса, указанного в этом параметре, и используя размер структуры db2XaRecoverStruct. Если этот параметр имеет пустое значение, DB2 вычислит необходимый размер буфера и вернет его значение в oReqBufferLen. oNumIndoubtsTotal будет содержать общее число неоднозначных транзакций. Прикладная программа может выделить буфер нужного размера и вновь вызвать эту функцию API. oNumIndoubtsReturned Выходной. Число записей о неоднозначных транзакциях, возвращенных в буфере, указанном в pIndoubtData. oNumIndoubtsTotal Выходной. Общее число записей о неоднозначных транзакциях, доступных в момент вызова этой функции API. Если буфер piIndoubtData недостаточно большой, чтобы вместить все эти записи, значение oNumIndoubtsTotal будет больше, чем oNumIndoubtsReturned. Прикладная программа может повторно вызвать эту функцию API, чтобы получить все записи. Прим.:Между вызовами API это число может измениться - в результате автоматической или эвристической ресинхронизации неоднозначных транзакций или из-за того, что другие транзакции окажутся в неоднозначном состоянии. oReqBufferLen Выходной. Длина буфера, необходимая для вмещения всех записей о неоднозначных транзакциях, доступных в момент вызова этой функции API. Прикладная программа может использовать это значение, чтобы определить требуемый размер буфера, вызвав эту функцию API с пустым значением параметра pIndoubtData. Затем она может использовать это значение для выделения требуемого буфера и вновь вызвать эту функцию API, задав в pIndoubtData адрес выделенного буфера. Прим.:Требуемый размер буфера может измениться между вызовами API - в результате автоматической или эвристической ресинхронизации неоднозначных транзакций или из-за того, что другие транзакции окажутся в неоднозначном состоянии. Учитывая это, прикладная программа может выделять буфер большего размера. отметка времени (timestamp) Выходной. Указывает время, когда транзакция перешла в неоднозначное состояние. xid Выходной. Указывает идентификатор XA, присвоенный менеджером транзакций для однозначной идентификации глобальной транзакции. dbalias Выходной. Указывает алиас базы данных, в которой обнаружена эта неоднозначная транзакция. applid Выходной. Указывает идентификатор прикладной программы, присвоенный менеджером баз данных этой транзакции. sequence_no Выходной. Указывает порядковый номер, присвоенный менеджером баз данных в качестве расширения для applid. auth_id Выходной. Указывает ID авторизации пользователя, выполнявшего эту транзакцию. log_full Выходной. Указывает, вызвала ли эта транзакция условие переполнения журнала. Допустимые значения: SQLXA_TRUE Эта неоднозначная транзакция вызвала условие переполнения журнала. SQLXA_FALSE Эта неоднозначная транзакция не вызвала условия переполнения журнала. connected Выходной. Указывает, соединена ли эта прикладная программа. Допустимые значения: SQLXA_TRUE Для этой транзакции выполняется нормальная обработка точек синхронизации и она ожидает второй фазы двухфазного принятия. SQLXA_FALSE Эта транзакция осталась неоднозначной из-за более ранней ошибки и теперь она ожидает ресинхронизации менеджером транзакций. indoubt_status Выходной. Указывает состояние этой неоднозначной транзакции. Допустимые значения: SQLXA_TS_PREP Транзакция подготовлена. Можно использовать параметр connected, чтобы определить, ожидает транзакция второй фазы нормальной обработки принятия или возникла ошибка и требуется ресинхронизация менеджером транзакций. SQLXA_TS_HCOM Для транзакции выполнено эвристическое принятие. SQLXA_TS_HROL Для транзакции выполнен эвристический откат. SQLXA_TS_MACK Транзакция не получила подтверждение принятия от узла в многораздельной базе данных. SQLXA_TS_END Транзакция закончена для этой базы данных. Эта транзакция впоследствии может быть вновь активирована, или для нее могут быть выполнены принятие или откат. Возможно также, что менеджер транзакций обнаружит ошибку и транзакция не будет выполнена. В таком случае для этой транзакции требуются эвристические действия, поскольку она может удерживать блокировки и мешать другим прикладным программам обращаться к данным. Замечания по использованию Типичная прикладная программа выполняет следующие шаги после установления соединения с базой данных или с узлом координатора многораздельной базы данных: Вызывает db2XaListIndTrans с пустым (NULL) значением параметра piIndoubtData. Будут возвращены значения oReqBufferLen и oNumIndoubtsTotal. Использует возвращенное значение oReqBufferLen, чтобы выделить буфер. Этот буфер может оказаться недостаточно большим, если после вызова этой функции API для получения значения oReqBufferLen появились дополнительные неоднозначные транзакции. Прикладная программа может выделить буфер больше, чем задано значением oReqBufferLen. Определяет, все ли записи о неоднозначных транзакциях были получены. Для этого она сравнивает значения oNumIndoubtsReturned и oNumIndoubtTotal. Если oNumIndoubtsTotal больше, чем oNumIndoubtsReturned, прикладная программа может повторить описанные выше шаги. Смотрите также "sqlxhfrg - Забыть состояние транзакции", "sqlxphcm - Выполнить принятие неоднозначной транзакции" и "sqlxphrl - Выполнить откат неоднозначной транзакции" в руководстве Administrative API Reference. 33.8 db2GetSnapshot - получить снимок Синтаксис API db2GetSnapshot должен выглядеть так: int db2GetSnapshot( unsigned char version; db2GetSnapshotData *data, struct sqlca *sqlca); Параметры, описанные в данных: typedef struct db2GetSnapshotData{ sqlma *piSqlmaData; sqlm_collected *poCollectedData void *poBuffer; db2uint32 iVersion; db2int32 iBufferSize; db2uint8 iStoreResult; db2uint16 iNodeNumber; db2uint32 *poOutputFormat; }db2GetSnapshotData; 33.9 Запись журнала Forget Следующую информацию надо добавить к Приложению F после раздела MPP Subordinator Prepare. Эта запись журнала записывается после отката неоднозначных транзакций или после завершения двухфазного принятия. Эта запись означает, что транзакция завершена и все удерживаемые ресурсы журнала освобождаются. Чтобы для транзакции была записана такая запись, она должна быть в эвристически завершенном состоянии. Табл. 10. Структура записи журнала Forget Описание Тип Смещение (байт) Заголовок журнала LogManagerLogRecordHeader 0(20) время sqluint64 20(8) Полная длина: 28 байт 33.10 sqlaintp - Получить сообщение об ошибке В описание этого API надо добавить следующее замечание по использованию: В многопоточных прикладных программах функция sqlaintp должна быть подключена к правильному контексту; в противном случае невозможно получить текст сообщения для SQLCODE -1445. 33.11 sqlbctcq - Закрыть запрос к контейнеру табличного пространства У загрузки нет достаточного уровня полномочий для данного API. 33.12 sqlubkp - резервное копирование базы данных Для параметра BackupType значение SQLUB_FULL заменено на SQLUB_DB. При этом снимается резервная копия всех табличных пространств в базе данных. Для поддержки новой возможности инкрементного копирования добавлены также параметры SQLUB_INCREMENTAL и SQLUB_DELTA. Инкрементная резервная копия - это копия всех данных базы данных, измененных с момента последнего успешного снятия полной копии. Разностная резервная копия - это копия всех данных базы данных, измененных с момента последнего успешного снятия копии любого типа. 33.13 sqlureot - реорганизовать таблицу В Замечания по использованию надо добавить следующее предложение: REORGANIZE TABLE не может использовать индекс на основе расширения индекса. 33.14 sqlurestore - восстановить базу данных Для параметра RestoreType значение SQLUD_FULL заменено на SQLUD_DB. При этом восстанавливаются все табличные пространства в базе данных. Восстановление производится в автономном режиме. Для поддержки новой возможности инкрементного восстановления добавлен также параметр SQLUD_INCREMENTAL. Инкрементная резервная копия - это копия всех данных базы данных, измененных с момента последнего успешного снятия полной копии. 33.15 Ошибка документации о поддержке расширенной совместно используемой памяти AIX В Приложении E "Threaded Applications with Concurrent Access" примечание 2 следует читать так: 2. По умолчанию AIX не разрешает 32-битным программам присоединять более 11 сегментов совместно используемой памяти на один процесс, максимум 10 из которых можно использовать для локальных соединений DB2. Чтобы использовать EXTSHM с DB2, выполните следующее: В сеансах клиента: export EXTSHM=ON При запуске DB2: export EXTSHM=ON db2set DB2ENVLIST=EXTSHM db2start В EEE добавите в файл sqllib/db2profile также строки: EXTSHM=ON export EXTSHM 33.16 SQLFUPD 33.16.1 locklist Имя маркера изменено с SQLF_DBTN_LOCKLIST на SQLF_DBTN_LOCK_LIST. Тип параметра locklist изменен с SMALLINT на 64-битное INTEGER без знака. В таблицу Изменяемые параметры конфигурации базы данных надо внести следующее дополнение. Имя параметра Маркер Значение маркера Тип данных locklist SQLF_DBTN_LOCK_LIST 704 Uint64 Новое максимальное значение для этого параметра - 524 288. 33.17 SQLEDBDESC В список допустимых значений для SQLDBCSS (определенный в sqlenv) добавлены два новых значения: SQL_CS_SYSTEM_NLSCHAR Последовательность слияния для системы использует национальную версию подпрограмм сравнения для символьных типов. SQL_CS_USER_NLSCHAR Последовательность слияния для пользователя использует национальную версию подпрограмм сравнения для символьных типов. 33.18 Ошибка документации SQLFUPD В Главе 3 "Data Structures" в Таблице 53 "Updatable Database Configuration" для параметра dbheap указано неверное значение маркера - 701. Верное значение - 58. Application Building Guide 34.1 Глава 1. Introduction 34.1.1 Поддерживаемое программное обеспечение Прим.:PHP. Теперь есть возможность обращаться к DB2 из программ Web при помощи PHP. PHP - это серверный кроссплатформенный язык сценариев с включением HTML. Он поддерживает доступ к DB2 с использованием метода доступа Unified-ODBC, при котором PHP пользовательского уровня связывается с DB2 при помощи вызовов ODBC. В отличие от стандартного ODBC при использовании метода Unified-ODBC связь идет прямо со слоем DB2 CLI, а не через слой ODBC. Дополнительную информацию об использовании PHP с DB2 смотрите на сайте поддержкиDB2 по адресу www.ibm.com/software/data/db2/udb/winos2unix/support. AIX Список версий компилятора C и C++ должен выглядеть так: IBM C and C++ Compilers for AIX Версия 3.6.6 (Версия 3.6.6.3 для 64-битных систем) IBM C for AIX 4.4 IBM VisualAge C++ Версия 4.0 Прим.:Загрузите для этих версий компиляторов последние пакеты исправлений, доступные по адресу http://www.ibm.com/software/ad/vacpp/service/csd.html Список версий компилятора Micro Focus COBOL должны выглядеть так: AIX 4.2.1 Micro Focus COBOL Версия 4.0.20 (PRN 12.03 или новее) Micro Focus COBOL Версии 4.1.10 (PRN 13.04 или новее) AIX 4.3 Micro Focus COBOL Server Express Версия 1.0 Прим.:Информацию о поддержке DB2 хранимых процедур Micro Focus COBOL и пользовательских функций в AIX 4.3 смотрите на Web-странице DB2 Application Development: http://www.ibm.com/software/data/db2/udb/ad При построении 64-битных программ с помощью компилятора IBM XL Fortran for AIX Версии 5.1.0 на стадиях компилирования и компоновки используйте опцию "-q64". Имейте в виду, что 64-битные программы не поддерживаются прежними версиями этого компилятора. HP-UX Список версий компилятора C++ должен выглядеть так: HP aC++, Версия A.03.25 Прим.:HP не поддерживает двоичной совместимости между объектами, скомпилированными старыми и новыми компиляторами, поэтому это вызовет перекомпиляцию всех прикладных программ C++, используемых для обращения к DB2 в HP-UX. Обработка исключительных ситуаций в прикладных программах C++ также должна быть скомпилирована новым компилятором. Руководство по переходу к aCC смотрите по адресу: http://www.hp.com/esy/lang/cpp/tguide. Информацию о несовместимости C++ можно найти по адресу: http://www.hp.com/esy/lang/cpp/tguide/transcontent.html#RN.CVT.1.2 http://www.hp.com/esy/lang/cpp/tguide/transcontent.html#RN.CVT.3.3 Сравнение C и C++ можно найти по адресу: http://www.hp.com/esy/lang/cpp/tguide/transcontent.html#RN.CVT.3.3.1 Хотя C и aCC совместимы, если используются два различных типа объектов, для компиляции объекта, содержащего "main", и для компоновки конечного выполняемого файла должен использоваться aCC. Linux DB2 for Linux поддерживает следующую версию REXX: Object REXX Interpreter for Linux Версия 2.1 Linux/390 DB2 for Linux/390 поддерживает только языки Java, C и C++. OS/2 Список версий компилятора C/C++ должен выглядеть так: IBM VisualAge C++ for OS/2 Версия 3.6.5 и Версия 4.0 Прим.:Загрузите для этих версий компиляторов последние пакеты исправлений, доступные по адресу http://www.ibm.com/software/ad/vacpp/service/csd.html Ограничения будущей сервисной поддержки этих компиляторов VisualAge C++ смотрите в разделе News на сайте: http://www-4.ibm.com/software/ad/vacpp/ Solaris Список версий компилятора Micro Focus COBOL должен выглядеть так: Micro Focus COBOL Server Express Версия 1.0 32-битные операционные системы Windows Список версий компилятора IBM VisualAge C++ должен выглядеть так: IBM VisualAge C++ для Windows Версий 3.6.5 и 4.0 Прим.:Загрузите для этих версий компиляторов последние пакеты исправлений, доступные по адресу http://www.ibm.com/software/ad/vacpp/service/csd.html Ограничения будущей сервисной поддержки этих компиляторов VisualAge C++ смотрите в разделе News на сайте: http://www-4.ibm.com/software/ad/vacpp/ Список версий компилятора Micro Focus COBOL должны выглядеть так: Micro Focus COBOL Версия 4.0.20 Micro Focus COBOL Net Express Версия 3.0 34.1.2 Примеры программ В раздел "Object Linking and Embedding Samples" надо добавить: salarycltvc Написанный на Visual C++ пример CLI DB2, вызывающий хранимую процедуру salarysrv, написанную на Visual Basic. SALSVADO Пример хранимой процедуры автоматизации OLE (SALSVADO) и клиента SALCLADO (SALCLADO), реализованного на 32-битном Visual Basic и ADO, который вычисляет средний оклад в таблице staff2. В раздел "Log Management User Exit Samples" (Примеры обработчиков пользователей для управления журналами) должно быть добавлено следующее: В AIX для построения прикладных программ, использующих клиент API ADSM уровня 3.1.6 и выше, должны использоваться вызовы компилятора xlc_r или xlC_r, а не xlc или xlC, даже если эти прикладные программы однопоточные. Это гарантирует использование библиотек, обеспечивающих правильную работу потоков. Это относится к примеру обработчика пользователя для управления журналами db2uext2.cadsm. Если прикладная программа скомпилирована с библиотекой, не обеспечивающей работу потоков, можно применить исправление IC21925E или обратиться к поставщику этой прикладной программы. Это исправление можно получить с анонимного ftp-сервера index.storsys.ibm.com. Оно понижает уровень API ADSM до 3.1.3. 34.2 Глава 3. General Information for Building DB2 Applications 34.2.1 Файлы построения, make-файлы и утилиты проверки ошибок Запись для bldevm в таблице 16 должна выглядеть так: bldevm Пример программы монитора событий, evm (доступен только в операционных системах AIX, OS/2 и 32-битных операционных системах Windows). Таблица 17 должна содержать следующие записи: bldmevm Пример программы монитора событий, evm, с компилятором Microsoft Visual C++. bldvevm Пример программы монитора событий, evm, с компилятором VisualAge C++. 34.3 Глава 4. Building Java Applets and Applications 34.3.1 Задание среды Если для построения программ SQLJ на поддерживаемых платформах используется IBM JDK 1.1.8, он должен иметь дату построения 24 ноября 1999 (или более позднюю). В противном случае во время компиляции могут возникать ошибки JNI panic. Если для построения программ SQLJ на поддерживаемых платформах используется IBM JDK 1.2.2, он должен иметь дату построения 17 апреля 2000 (или более позднюю). В противном случае во время компиляции могут возникать ошибки Invalid Java type. В подразделах AIX, HP-UX, Linux и Solaris замените информацию о JDBC 2.0 на следующий текст: Использование драйвера JDBC 2.0 с прикладными программами Java Драйвер JDBC 1.22 остается драйвером по умолчанию для всех операционных систем. Чтобы использовать преимущества новых возможностей JDBC 2.0, необходимо установить поддержку JDK 1.2. Перед выполнением прикладной программы, использующей преимущества новых возможностей JDBC 2.0, нужно настроить среду, выполнив команду usejdbc2 из каталога sqllib/java12. Если нужно, чтобы прикладные программы всегда использовали драйвер JDBC 2.0, можно добавить следующую строку в профиль регистрации (например, .profile) или в сценарий инициализации оболочки (например, .bashrc, .cshrc или .kshrc): . sqllib/java12/usejdbc2 Эта команда должна стоять после команды запуска db2profile, так как usejdbc2 должна выполняться после db2profile. Чтобы переключиться назад на драйвер JDBC 1.22, выполните следующую команду из каталога sqllib/java12: . usejdbc1 Использование драйвера JDBC 2.0 с хранимыми процедурами и пользовательскими функциями Java Чтобы использовать драйвер JDBC 2.0 с хранимыми процедурами и пользовательскими функциями Java, необходимо настроить среду для ID пользователя, под которым будут выполняться изолированные пользовательские функции и хранимые процедуры для этого экземпляра. По умолчанию это ID пользователя db2fenc1. Чтобы настроить среду для этого ID пользователя, выполните следующие действия: Добавьте следующую строку в профиль (например, .profile) или в сценарий инициализации оболочки (например, .bashrc, .cshrc или .kshrc) ID пользователя, под которым будут выполняться изолированные пользовательские функции и хранимые процедуры: . sqllib/java12/usejdbc2 Введите следующую команду в командной строке: db2set DB2_USE_JDK12=1 Чтобы переключиться назад на поддержку драйвера JDBC 1.2 для пользовательских функций и хранимых процедур Java, выполните следующие действия: Удалите следующую строку из профиля (например, .profile) или из сценария инициализации оболочки (например, .bashrc, .cshrc или .kshrc) ID пользователя, под которым будут выполняться изолированные пользовательские функции и хранимые процедуры: . sqllib/java12/usejdbc2 Введите следующую команду в командной строке: db2set DB2_USE_JDK12= Если нужно, чтобы прикладные программы всегда использовали драйвер JDBC 2.0, можно добавить следующую строку в профиль регистрации (например, .profile) или в сценарий инициализации оболочки (например, .bashrc, .cshrc или .kshrc): . sqllib/java12/usejdbc2 Эта команда должна стоять после команды запуска db2profile, так как usejdbc2 должна выполняться после db2profile. HP-UX В DB2 for HP-UX с JDK 1.1 хранимые процедуры и пользовательские функции Java не поддерживаются. Silicon Graphics IRIX Если при построении прикладных программ SQLJ с типом объектов -o32 с помощью компилятора Java JIT с JDK 1.2.2 транслятор SQLJ сообщает об ошибке сегментации, попробуйте отключить компилятор JIT командой: export JAVA_COMPILER=NONE На Silicon Graphics IRIX для построения программы Java SQLJ необходим JDK 1.2.2. 32-битные операционные системы Windows Использование драйвера JDBC 2.0 с хранимыми процедурами и пользовательскими функциями Java Чтобы использовать драйвер JDBC 2.0 с хранимыми процедурами и пользовательскими функциями Java, необходимо настроить среду, выполнив следующие действия: Выполните следующую команду из каталога sqllib\java12: usejdbc2 Введите следующую команду в командной строке: db2set DB2_USE_JDK12=1 Чтобы переключиться назад на поддержку драйвера JDBC 1.2 для пользовательских функций и хранимых процедур Java, выполните следующие действия: Выполните следующую команду из каталога sqllib\java12: usejdbc2 Введите следующую команду в командной строке: db2set DB2_USE_JDK12= 34.3.1.1 Уровень JDK в OS/2 В OS/2 с версиями JDK 1.1.8 выпуска ранее 09/99 не будут выводиться некоторые сообщения. Убедитесь, что используется самый свежий выпуск JDK Версии 1.1.8. 34.3.1.2 Java2 в HP-UX Для запуска хранимых процедур Java2 путь совместно используемых библиотек надо изменить по следующему образцу: export SHLIB_PATH=$JAVADIR/jre/lib/PA_RISC:$JAVADIR/ jre/lib/PA_RISC/classic:$HOME/sqllib/lib:/usr/lib:$SHLIB_PATH $JAVADIR - положение SDK Java2. 34.4 Глава 5. Building SQL Procedures 34.4.1 Настройка среды процедур SQL Ниже приводятся дополнительные инструкции по настройке среды DB2 при установке. Для поддержки процедур SQL необходимо установить клиент разработки программ на сервере. Информацию об установке клиента разработки программ смотрите в книге Быстрый старт для вашей платформы. Информацию о компиляторах C и C++, поддерживаемых DB2 на вашей платформе, смотрите в разделе "Supported Software by Platform". Прим.:В файловой системе OS/2 FAT имя схемы для процедур SQL ограничено 8 символами. Для имен схем длиннее 8 символов необходимо использовать файловую систему HPFS. Конфигурирование компилятора состоит из двух частей: настройка переменных среды для компилятора и определение команды компиляции. Эти переменные среды задают пути к двоичным файлам, библиотекам и включаемым файлам компилятора. Команда компиляции - это полнофункциональная команда, которую DB2 будет использовать для компиляции файлов на языке C, сгенерированных для процедур SQL. 34.4.2 Задание переменных среды компилятора Правила конфигурирования среды в OS/2, Windows и в системах на базе UNIX отличаются, как описано ниже. В некоторых случаях никакого конфигурирования не требуется; в других случаях в переменной реестра DB2 DB2_SQLROUTINE_COMPILER_PATH нужно указать путь к исполняемому сценарию, который сконфигурирует данную среду должным образом. Прим.:Для задания значения этой переменной реестра DB2 можно использовать либо команду db2set, либо диалоговое окно Опции построения хранимых процедур SQL. Использование окна Опции построения хранимых процедур позволяет обойтись без физического обращения к серверу баз данных для ввода команды, а также без перезапуска сервера для вступления изменений в силу. В OS/2: для IBM VisualAge C++ for OS/2 Версии 3.6: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\ibmcxxo\bin\setenv.cmd" для IBM VisualAge C++ for OS/2 Версии 4: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\ibmcpp40\bin\setenv.cmd" Прим.:В этих командах предполагается, что компилятор C++ установлен на диске c:. Если нужно, измените диск или путь, чтобы отразить положение компилятора C++ в вашей системе. В 32-битных операционных системах Windows, если переменные среды компилятора заданы как системные переменные, никакого конфигурирования не требуется. Иначе задайте переменную реестра DB2 DB2_SQLROUTINE_COMPILER_PATH DB2: для Microsoft Visual C++ Версии 5.0: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\devstudio\vc\bin\vcvars32.bat" для Microsoft Visual C++ Версии 6.0: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\Micros~1\vc98\bin\vcvars32.bat" для IBM VisualAge C++ for Windows Версии 3.6: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\ibmcxxw\bin\setenv.bat" для IBM VisualAge C++ for Windows Версии 4: db2set DB2_SQLROUTINE_COMPILER_PATH="c:\ibmcppw40\bin\setenv.bat" Прим.:В этих командах предполагается, что компилятор C++ установлен на диске c:. Если нужно, измените диск или путь, чтобы отразить положение компилятора C++ в вашей системе. В системах на базе UNIX DB2 сгенерирует файл исполняемого сценария $HOME/sqllib/function/routine/sr_cpath (который содержит для переменных среды компилятора значения по умолчанию) при первой компиляции хранимой процедуры. Если значения по умолчанию не подходят для вашего компилятора, этот файл можно отредактировать. Другой вариант - указать в переменной реестра DB2 DB2_SQLROUTINE_COMPILER_PATH полное имя другого исполняемого сценария, где задаются желаемые параметры (смотрите вышеприведенные примеры). 34.4.3 Настройка команды компиляции При установке клиента разработки программ по умолчанию предоставляется команда компиляции, которая работает как минимум для одного из компиляторов, поддерживаемых на каждой платформе: AIX: IBM C Set++ for AIX, Версии 3.6.6 Solaris: SPARCompiler C++ Версия 4.2 и 5.0 HP-UX: HP-UX C++ Версия A.12.00 Linux: GNU/Linux g++ Версия egcs-2.90.27 980315 (выпуск egcs-1.0.2) PTX: ptx/C++ Версия 5.2 OS/2: IBM VisualAge C++ for OS/2 Версия 3 Windows NT и Windows 2000: Microsoft Visual C++ Версия 5.0 и 6.0 Чтобы использовать другие компиляторы или чтобы настроить данную команду по умолчанию, нужно указать в переменной реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND следующую команду: db2set DB2_SQLROUTINE_COMPILE_COMMAND=команда_компиляции где команда_компиляции - команда компиляции C или C++ с опциями и параметрами, требуемыми для создания хранимых процедур. В команде компиляции при помощи ключевого слова SQLROUTINE_FILENAME замените имена файлов для сгенерированных SQC, C, PDB, DEF, EXP, журнала сообщений и файлов совместно используемых библиотек. Только в AIX: при помощи ключевого слова SQLROUTINE_ENTRY измените имя точки входа. Прим.:Для задания значения этой переменной реестра DB2 можно использовать либо команду db2set, либо диалоговое окно Опции построения хранимых процедур SQL. Использование окна Опции построения хранимых процедур позволяет обойтись без физического обращения к серверу баз данных для ввода команды, а также без перезапуска сервера для вступления изменений в силу. Ниже показаны значения по умолчанию для DB2_SQLROUTINE_COMPILE_COMMAND для компиляторов C или C++ на поддерживаемых платформах серверов. AIX Чтобы использовать IBM C for AIX Версии 3.6.6: db2set DB2_SQLROUTINE_COMPILE_COMMAND=xlc -H512 -T512 \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -bE:SQLROUTINE_FILENAME.exp \ -e SQLROUTINE_ENTRY -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2 Чтобы использовать IBM C Set++ for AIX Версии 3.6.6: db2set DB2_SQLROUTINE_COMPILE_COMMAND=xlC -H512 -T512 \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -bE:SQLROUTINE_FILENAME.exp \ -e SQLROUTINE_ENTRY -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2 Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. Прим.:Для компиляции в AIX 64-битных процедур SQL добавьте в показанные выше команды опцию -q64. Чтобы использовать IBM VisualAge C++ for AIX Версии 4: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld" Если после команды vacbld не задан файл конфигурации, DB2 создаст следующий файл конфигурации по умолчанию при первой попытке создания какой-либо процедуры SQL: $HOME/sqllib/function/routine/sqlproc.icc Если нужно использовать другой файл конфигурации, можно задать его при задании переменной реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld %DB2PATH%/function/sqlproc.icc" HP-UX Чтобы использовать компилятор HP C Версии A.11.00.03: db2set DB2_SQLROUTINE_COMPILE_COMMAND=cc +DAportable +ul -Aa +z \ -I$HOME/sqllib/include -c SQLROUTINE_FILENAME.c; \ ld -b -o SQLROUTINE_FILENAME SQLROUTINE_FILENAME.o \ -L$HOME/sqllib/lib -ldb2 Чтобы использовать HP-UX C++ Версии A.12.00: db2set DB2_SQLROUTINE_COMPILE_COMMAND=CC +DAportable +a1 +z -ext \ -I$HOME/sqllib/include -c SQLROUTINE_FILENAME.c; \ ld -b -o SQLROUTINE_FILENAME SQLROUTINE_FILENAME.o \ -L$HOME/sqllib/lib -ldb2 Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. Linux Чтобы использовать GNU/Linux gcc Версии 2.7.2.3: db2set DB2_SQLROUTINE_COMPILE_COMMAND=cc \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -shared -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -ldb2 Чтобы использовать GNU/Linux g++ Версии egcs-2.90.27 980315 (выпуск egcs-1.0.2): db2set DB2_SQLROUTINE_COMPILE_COMMAND=g++ \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -shared -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -ldb2 Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. PTX Чтобы использовать ptx/C Версии 4.5: db2set DB2_SQLROUTINE_COMPILE_COMMAND=cc -KPIC \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -G -o SQLROUTINE_FILENAME.so -L$HOME/sqllib/lib -ldb2 ; \ cp SQLROUTINE_FILENAME.so SQLROUTINE_FILENAME Чтобы использовать ptx/C++ Версии 5.2: db2set DB2_SQLROUTINE_COMPILE_COMMAND=c++ -KPIC \ -D_RWSTD_COMPILE_INSTANTIATE=0 -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -G -o SQLROUTINE_FILENAME.so -L$HOME/sqllib/lib -ldb2 ; \ cp SQLROUTINE_FILENAME.so SQLROUTINE_FILENAME Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. OS/2 Чтобы использовать IBM VisualAge C++ for OS/2 Версии 3: db2set DB2_SQLROUTINE_COMPILE_COMMAND="icc -Ge- -Gm+ -W2 -I%DB2PATH%\include SQLROUTINE_FILENAME.c /B\"/NOFREE /NOI /ST:64000\" SQLROUTINE_FILENAME.def %DB2PATH%\lib\db2api.lib" Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. Чтобы использовать IBM VisualAge C++ for OS/2 Версии 4: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld" Если после команды vacbld не задан файл конфигурации, DB2 создаст следующий файл конфигурации по умолчанию при первой попытке создания какой-либо процедуры SQL: %DB2PATH%\function\routine\sqlproc.icc Если нужно использовать другой файл конфигурации, можно задать его при задании переменной реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld %DB2PATH%\function\sqlproc.icc" Solaris Чтобы использовать SPARCompiler C Версий 4.2 и 5.0: db2set DB2_SQLROUTINE_COMPILE_COMMAND=cc -xarch=v8plusa -Kpic \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -G -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib \ -R$HOME/sqllib/lib -ldb2 Чтобы использовать SPARCompiler C++ Версий 4.2 и 5.0: db2set DB2_SQLROUTINE_COMPILE_COMMAND=CC -xarch=v8plusa -Kpic \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -G -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib \ -R$HOME/sqllib/lib -ldb2 Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. Примечания: В команду компилятора по умолчанию добавлена опция компилятора -xarch=v8plusa. Дополнительную информацию о том, почему была добавлена эта опция, смотрите в разделе 34.8, "Глава 12. Building Solaris Applications". Для компиляции в Solaris 64-битных процедур SQL удалите опцию -xarch=v8plusa и добавьте в показанные выше команды опцию -xarch=v9. Windows NT и Windows 2000 Прим.:В Windows 98 и Windows 95 процедуры SQL не поддерживаются. Чтобы использовать Microsoft Visual C++ Версий 5.0 и 6.0: db2set DB2_SQLROUTINE_COMPILE_COMMAND=cl -Od -W2 /TC -D_X86_=1 -I%DB2PATH%\include SQLROUTINE_FILENAME.c /link -dll -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll %DB2PATH%\lib\db2api.lib Это команда компилятора по умолчанию, используемая, если не задана переменная реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND. Чтобы использовать IBM VisualAge C++ for Windows Версии 3.6: db2set DB2_SQLROUTINE_COMPILE_COMMAND="ilib /GI SQLROUTINE_FILENAME.def &icc -Ti -Ge- -Gm+ -W2 -I%DB2PATH%\include SQLROUTINE_FILENAME.c /B\"/ST:64000 /PM:VIO /DLL\" SQLROUTINE_FILENAME.exp %DB2PATH%\lib\db2api.lib" Чтобы использовать IBM VisualAge C++ for Windows Версии 4: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld" Если после команды vacbld не задан файл конфигурации, DB2 создаст следующий файл конфигурации по умолчанию при первой попытке создания какой-либо процедуры SQL: %DB2PATH%\function\routine\sqlproc.icc Если нужно использовать другой файл конфигурации, можно задать его при задании переменной реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND: db2set DB2_SQLROUTINE_COMPILE_COMMAND="vacbld %DB2PATH%\function\sqlproc.icc" Чтобы вернуться к опциям компилятора по умолчанию, с помощью следующей команды задайте пустое значение для переменной реестра DB2 DB2_SQLROUTINE_COMPILE_COMMAND: db2set DB2_SQLROUTINE_COMPILE_COMMAND= 34.4.4 Удаление промежуточных файлов Необходимо вручную удалить промежуточные файлы, которые могут остаться при неудачном завершении процедуры SQL. Эти файлы находятся в следующих каталогах: UNIX $DB2PATH/function/routine/sqlproc/$DATABASE/$SCHEMA/tmp где $DB2PATH - каталог, в котором был создан этот экземпляр, $DATABASE представляет имя базы данных, а $SCHEMA - имя схемы, с которым были созданы процедуры SQL. OS/2 и Windows %DB2PATH%\function\routine\sqlproc\%DATABASE%\%SCHEMA%\tmp где %DATAPATH% - каталог, в котором был создан этот экземпляр, %DATABASE% - имя базы данных, а %SCHEMA% - имя схемы, с которым были созданы процедуры SQL. 34.4.5 Резервное копирование и восстановление При создании процедуры SQL сгенерированная совместно используемая библиотека DLL сохраняется в таблице каталога, если она меньше 2 Мбайт. При резервном копировании и восстановлении базы данных любая процедура SQL со сгенерированной библиотекой DLL меньше 2 Мбайт будет скопирована и восстановлена вместе с версией, хранимой в этой таблице каталога. Если имеются процедуры SQL со сгенерированной библиотекой DLL больше 2 Мбайт, убедитесь, что вместе с резервным копированием и восстановлением базы данных происходит также копирование и восстановление файловой системы. Если это не так, надо воссоздать совместно используемую библиотеку DLL процедуры SQL вручную, воспользовавшись исходной библиотекой в таблице каталога syscat.procedures. Прим.:Во время восстановления базы данных все выполняемые процедуры SQL в файловой системе, принадлежащей восстанавливаемой базе данных, будут удалены. Если для параметра конфигурации создания индекса (indexrec) задано значение RESTART, все выполняемые процедуры SQL будут извлечены из таблицы каталога и помещены назад в файловую систему при следующем соединении. Иначе выполняемые программы SQL будут извлечены при первом выполнении процедур SQL. Выполняемые программы помещаются назад в следующий каталог: UNIX $DB2PATH/function/routine/sqlproc/$DATABASE где $DB2PATH - каталог, в котором был создан этот экземпляр, а $DATABASE - имя базы данных, с которым были созданы процедуры SQL. OS/2 и Windows %DB2PATH%\function\routine\sqlproc\%DATABASE% где %DB2PATH% - каталог, в котором создавался экземпляр, а %DATABASE% - имя базы данных, с которым создавались процедуры SQL. 34.4.6 Создание процедур SQL При разработке процедур SQL задайте для параметра конфигурации менеджера баз данных KEEPDARI значение 'NO'. Если процедура SQL остается загруженной после выполнения, могут возникнуть проблемы при отбрасывании и создании новой хранимой процедуры с тем же именем, так как нельзя будет обновить библиотеку и удалить выполняемые файлы из файловой системы. Могут также возникнуть проблемы при попытке выполнить откат изменений или отбросить базу данных, так как нельзя будет удалить выполняемые файлы. Дополнительную информацию о задании параметра KEEPDARI смотрите в разделе 'Updating the Database Manager Configuration File' Главы 2 "Setup" руководства 'Application Building Guide'. Прим.:Процедуры SQL не поддерживают для параметров следующие типы данных: LONG VARGRAPHIC Двоичный большой объект (BLOB) Символьный большой объект (CLOB) Двухбайтный символьный большой объект (DBCLOB) 34.4.7 Вызов хранимых процедур Первый абзац в разделе 'Using the CALL Command' должен выглядеть так: Для использования команды CALL нужно ввести имя хранимой процедуры, все параметры IN или INOUT, а также '?' вместо каждого параметра OUT. Подробное описание синтаксиса команды CALL смотрите в разделе 10.14, "CALL". 34.4.8 Распространение скомпилированных процедур SQL Прим.:Чтобы распространить скомпилированные процедуры SQL по серверамDB2 надо выполнить описанные ниже шаги на каждом сервере DB2, который служит как источник или назначение скомпилированной процедуры SQL: Шаг 1. Установите FixPak 3 Шаг 2. Введите команду db2updv7, чтобы разрешить DB2 извлекать и устанавливать скомпилированные процедуры SQL: db2updv7 -d имя_базы_данных Когда вы определяете процедуру SQL, она преобразуется в программу C, прекомпилируется, связывается с базой данных назначения, компилируется и компонуется для создания совместно используемой библиотеки. Для шагов компиляции и компоновки нужно, чтобы на компьютере сервера баз данных был доступен компилятор C или C++. Однако, определив процедуру SQL, вы можете распространить ее в скомпилированной форме на базы данных DB2 той же платформы, не обязательно имеющие доступ к компилятору C или C++. DB2 позволяет пользователю извлекать процедуры SQL в скомпилированной форме из одной базы данных и устанавливать их в другую базу данных. Для извлечения и установки в DB2 есть и интерфейс командной строки, и программный интерфейс. Интерфейс командной строки состоит из двух команд: GET ROUTINE и PUT ROUTINE. Программный интерфейс состоит из двух встроенных хранимых процедур: GET_ROUTINE_SAR и PUT_ROUTINE_SAR. Дополнительную информацию об интерфейсе командной строки смотрите в справочнике Command Reference. Дополнительную информацию о программном интерфейсе смотрите в справочнике SQL Reference. Чтобы распространить скомпилированную процедуру SQL с одного сервера баз данных на другой, выполните следующие действия: Шаг 1. Разработайте программу и определите, как ее часть, процедуры SQL. Шаг 2. Проверив эти процедуры, извлеките скомпилированную версию каждой процедуры в отдельный файл. Дополнительную информацию смотрите в описании команды GET ROUTINE в справочнике Command Reference или хранимой процедуры GET_ROUTINE_SAR в справочнике SQL Reference. Шаг 3. Вставьте скомпилированную версию каждой процедуры на каждый сервер либо при помощи команды PUT ROUTINE, либо вызвав хранимую процедуру PUT_ROUTINE_SAR; используйте файлы, созданные на шаге 2. На каждом сервере баз данных должна быть та же операционная система и тот же уровень DB2. 34.5 Глава 7. Building HP-UX Applications. 34.5.1 HP-UX C В разделе "Multi-threaded Applications" в файле сценария bldmt были изменены опции компиляции. Новая версия находится в каталоге sqllib/samples/c. 34.5.2 HP-UX C++ Для компилятора HP aC++ в сценариях построения переменная компилятора C++ CC была заменена на aCC. Исправленные сценарии построения находятся в каталоге sqllib/samples/cpp. Для построения хранимых процедур и пользовательских функций при помощи компилятора aCC надо использовать опцию компиляции "+u1". Эта опция разрешает обращаться к невыровненным данным. В примеры сценариев построения, поставляемых с DB2 for HP-UX (bldsrv и bldudf), а также в make-файл примера эта опция не внесена. Перед использованием этих примеров это необходимо сделать. Новый шаг компиляции для сценариев bldsrv и bldudf должен выглядеть так: aCC +DAportable +u1 -Aa +z -ext -I$DB2PATH/include -c $1.C В разделе "Multi-threaded Applications" в файле сценария bldmt были изменены опции компиляции. Новая версия находится в каталоге sqllib/samples/cpp. 34.6 Глава 9. Building OS/2 Applications 34.6.1 VisualAge C++ for OS/2 Версии 4.0 В OS/2 и Windows вместо команды export, указанной в этом разделе, используйте команду set. Например, set CLI=tbinfo. В разделе 'DB2 CLI Applications', подраздел 'Building and Running Embedded SQL Applications' для OS/2 и Windows вместо файла cli.icc надо использовать файл cliapi.icc, так как для программ со встроенным SQL библиотека db2api.lib должна быть связана с cliapi.icc. 34.7 Глава 10. Building PTX Applications 34.7.1 ptx/C++ Для построения хранимых процедур и пользовательских функций при компоновке библиотек надо использовать опцию -shared. Необходимо изменить файл makefile, сценарии построения bldsrv и файл bldudf в каталоге sqllib/samples, добавив в них эту опцию, как показано ниже для шага компоновки из bldsrv: c++ -shared -G -o $1 $1.o -L$DB2PATH/lib -ldb2 34.8 Глава 12. Building Solaris Applications 34.8.1 SPARCompiler C++ Ошибки выполнения прикладных программ C/C++ и процедур SQL в Solaris Если при использовании компилятора Sun WorkShop Compiler C/C++ вы столкнулись с проблемами с выполняемыми файлами и получаете сообщения об ошибках такого типа: syntax error at line 1: `(' unexpected ksh: <имя программы>: cannot execute (где имя программы - имя скомпилированного выполняемого файла) возможно, эта ошибка вызвана тем, что компилятор создает неправильные выполняемые файлы при компоновке с libdb2.so. Чтобы исправить эту ошибку, можно добавить следующую опцию компилятора в команды компиляции и компоновки: -xarch=v8plusa Например, при компиляции примера прикладной программы dynamic.sqc: embprep dynamic sample embprep utilemb sample cc -c utilemb.c -xarch=v8plusa -I/export/home/db2inst1/sqllib/include cc -o dynamic dynamic.c utilemb.o -xarch=v8plusa -I/export/home/db2inst1/ sqllib/include \ -L/export/home/db2inst1/sqllib/lib -R/export/home/db2inst1/sqllib/lib -l db2 Примечания: Если в системе Solaris используются процедуры SQL и строка компиляции задается в переменной профиля DB2_SQLROUTINE_COMPILE_COMMAND, в ней должна быть задана указанная выше опция компилятора. Команда компиляции по умолчанию содержит эту опцию: db2set DB2_SQLROUTINE_COMPILE_COMMAND="cc -# -Kpic -xarch=v8plusa -I$HOME/sqllib/include \ SQLROUTINE_FILENAME.c -G -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -R$HOME/sqllib/lib -ldb2 Для компиляции в Solaris 64-битных процедур SQL удалите опцию -xarch=v8plusa и добавьте в показанные выше команды опцию -xarch=v9. 34.9 Глава 13. Building Applications for Windows 32-bit Operating Systems 34.9.1 VisualAge C++ Версии 4.0 В OS/2 и Windows вместо команды export, указанной в этом разделе, используйте команду set. Например, set CLI=tbinfo. В разделе 'DB2 CLI Applications', подраздел 'Building and Running Embedded SQL Applications' для OS/2 и Windows вместо файла cli.icc надо использовать файл cliapi.icc, так как для программ со встроенным SQL библиотека db2api.lib должна быть связана с cliapi.icc. Application Development Guide 35.1 Глава 2. Coding a DB2 Application 35.1.1 Активация встраиваемых модулей проектов и инструментов IBM DB2 Universal Database для Microsoft Visual C++ Перед выполнением команды db2vccmd (шаг 1) убедитесь, что Visual C++ был по крайней мере один раз запущен и остановлен с вашим текущим ID регистрации. При первом запуске Visual C++ для вашего ID пользователя создается профиль; именно он обновляется командой db2vccmd. Если попытаться выполнить команду db2vccmd, не запустив перед этим один раз Visual C++, можно получить сообщение об ошибке такого вида: "Registering DB2 Project add-in ...Failed! (rc = 2)" 35.2 Глава 6. Common DB2 Application Techniques 35.2.1 Генерирование последовательных значений Генерирование последовательных значений - обычная проблема при разработке прикладных программ для баз данных. Наилучшее решение этой проблемы - использовании объектов последовательности и выражений последовательности на языке SQL. Каждый объект последовательности - это объект базы данных с уникальным именем, к которому можно обращаться только с помощью выражений последовательности. Существует два выражения последовательности: выражение PREVVAL и выражение NEXTVAL. Выражение PREVVAL возвращает последнее из сгенерированных для предыдущего оператора значений заданной последовательности. Выражение NEXTVAL увеличивает значение объекта последовательности и возвращает его новое значение. Чтобы создать объект последовательности, выполните оператор CREATE SEQUENCE. Например, чтобы создать объект последовательности под названием id_values с атрибутами по умолчанию, используйте следующий оператор: CREATE SEQUENCE id_values Чтобы вывести текущее значение этого объекта последовательности, выполните оператор VALUES с выражением PREVVAL: VALUES PREVVAL FOR id_values 1 ----------- 1 1 record(s) selected. Текущее значение объекта последовательности можно получать несколько раз, причем возвращаемое значение не изменится, пока не будет выполнено выражение NEXTVAL. В следующем примере выражение PREVVAL возвращает значение 1 до тех пор, пока выражение NEXTVAL не увеличит значение объекта последовательности: VALUES PREVVAL FOR id_values 1 ----------- 1 1 record(s) selected. VALUES PREVVAL FOR id_values 1 ----------- 1 1 record(s) selected. VALUES NEXTVAL FOR id_values 1 ----------- 2 1 record(s) selected. VALUES PREVVAL FOR id_values 1 ----------- 2 1 record(s) selected. Чтобы изменить значение столбца на следующее значение объекта последовательности, включите выражение NEXTVAL в оператор UPDATE, как показано ниже: UPDATE staff SET id = NEXTVAL FOR id_values WHERE id = 350 Чтобы вставить новую строку в таблицу, используя следующее значение объекта последовательности, включите выражение NEXTVAL в оператор INSERT, как показано ниже: INSERT INTO staff (id, name, dept, job) VALUES (NEXTVAL FOR id_values, 'Kandil', 51, 'Mgr') Дополнительную информацию о выражениях PREVVAL и NEXTVAL смотрите в справочнике SQL Reference. 35.2.1.1 Управление поведением последовательности Поведение объектов последовательности можно настроить в соответствии с потребностями вашей прикладной программы. Атрибуты объекта последовательности изменяют операторы CREATE SEQUENCE (создание нового объекта последовательности) и ALTER SEQUENCE (изменение существующего объекта последовательности). Ниже приводятся некоторые из доступных вам атрибутов объекта последовательности: Тип данных Условие AS оператора CREATE SEQUENCE задает числовой тип данных объекта последовательности. Тип данных, как указано в приложении "SQL Limits" справочника SQL Reference, определяет возможные минимальное и максимальное значения объекта последовательности. Тип данных объекта последовательности нельзя изменить; вместо этого надо отбросить объект последовательности при помощи оператора DROP SEQUENCE и выполнить оператор CREATE SEQUENCE с новым типом данных. Начальное значение Условие START WITH оператора CREATE SEQUENCE задает начальное значение объекта последовательности. Условие RESTART WITH оператора ALTER SEQUENCE возвращает значение объекта последовательности к заданному значению. Минимальное значение Условие MINVALUE задает минимальное значение объекта последовательности. Максимальное значение Условие MAXVALUE задает максимальное значение объекта последовательности. Значение приращения Условие INCREMENT BY задает значение, добавляемое к объекту последовательности каждым выражением NEXTVAL. Чтобы значение объекта последовательности уменьшалось, задайте в условии отрицательную величину. Зацикливание последовательности Условие CYCLE заставляет значение объекта последовательности после достижения минимума или максимума вернуться при очередном выражении NEXTVAL к исходному значению. Например, чтобы создать объект последовательности под названием id_values, с начальным значением 0, максимальным значением 1000, увеличением значения на 2 с каждым выражением NEXTVAL и возвращением к начальному значению по достижении максимального, используйте оператор: CREATE SEQUENCE id_values START WITH 0 INCREMENT BY 2 MAXVALUE 1000 CYCLE Дополнительную информацию об операторах CREATE SEQUENCE и ALTER SEQUENCE смотрите в справочнике SQL Reference. 35.2.1.2 Улучшение производительности с помощью объектов последовательности Как и для столбцов идентификации, использование объектов последовательности для генерирования значений в целом улучшает производительность ваших прикладных программ в сравнении с другими подходами. Вместо объектов последовательности можно было бы создать таблицу с одним столбцом, где хранится текущее значение, и увеличивать это значение при помощи триггера или под управлением прикладной программы. В распределенной среде, где программы одновременно обращаются к одностолбцовой таблице, блокировка, необходимая для принудительного последовательного доступа к этой таблице, может серьезно повлиять на производительности. Объекты последовательности позволяют избежать проблем с блокировкой, связанных с использованием одностолбцовой таблицы; можно кэшировать значения в памяти, что улучшает время ответа DB2. Чтобы максимизировать производительность прикладных программ, использующих объекты последовательности, убедитесь, что ваш объект последовательности кэширует достаточное количество значений. Условие CACHE операторов CREATE SEQUENCE и ALTER SEQUENCE задает максимальное количество значений последовательности, которые DB2 генерирует и хранит в памяти. Если ваш объект последовательности должен генерировать упорядоченные значения без разрывов между ними в случае системной ошибки или деактивации базы данных, задайте в операторе CREATE SEQUENCE условия ORDER и NO CACHE. Условие NO CACHE гарантирует отсутствие разрывов между сгенерированными значениями за счет некоторого снижения производительности ваших программ, так как при этом объект последовательности записывает в журнал базы данных информацию о каждом новом сгенерированном значении. 35.2.1.3 Сравнение объектов последовательности и столбцов идентификации Хотя у объектов последовательностей и столбцов идентификации при работе с прикладными программами DB2 имеют сходное назначение, между ними есть ряд существенных различий: Столбец идентификации автоматически генерирует значения для столбца только одной таблицы. Объект последовательности генерирует последовательные значения, которые можно использовать в любом операторе SQL. Столбец идентификации генерирует заведомо уникальные значения. Включение условия CYCLE в операторы CREATE SEQUENCE или ALTER SEQUENCE разрешает объекту последовательности генерировать повторяющиеся значения. 35.3 Глава 7. Stored Procedures 35.3.1 Ошибка типа DECIMAL в Java-процедурах Linux Эта ошибка происходит из-за того, что комплект разработчика IBM для Java не создает связей для своих библиотек в каталоге /usr/lib. Модель защиты для процедур DB2 не разрешает им доступ к библиотекам за пределами стандартных библиотек системы. Чтобы включить в Linux поддержку DECIMAL в Java-процедурах, выполните следующие действия: Создайте символические связи из библиотек комплекта разработчика IBM для Java в /usr/lib/, введя следующую команду с полномочиями root: Для комплекта разработчика IBM для Java 1.1.8: ln -sf /usr/jdk118/lib/linux/native_threads/* /usr/lib/ Для комплекта разработчика IBM для Java 1.3: ln -sf /opt/IBMJava2-13/jre/bin/*.so /usr/lib/ Введите команду ldconfig, чтобы исправить список библиотек уровня системы. 35.3.2 Использование указателей в рекурсивных хранимых процедурах Во избежание ошибок при использовании процедур SQL или хранимых процедур, написанных на встроенном SQL перед использованием рекурсивного оператора CALL закройте все открытые указатели. Например, предположим, что в хранимой процедуре MYPROC содержится следующий фрагмент программного кода: OPEN c1; CALL MYPROC(); CLOSE c1; При вызове MYPROC DB2 возвратит ошибку, поскольку указатель c1 остается открытым, когда MYPROC выполняет рекурсивный оператор CALL. Конкретная ошибка, возвращаемая DB2, зависит от действия, выполняемого MYPROC над указателем. Для успешного вызова MYPROC перепишите ее так, чтобы она закрывала все открытые указатели до вложенного оператора CALL, как показано в следующем примере: OPEN c1; CLOSE c1; CALL MYPROC(); Во избежание ошибки закрывайте все открытые указатели перед использованием встроенного оператора CALL. 35.3.3 Написание хранимых процедур автоматизации OLE В следующем абзаце (второй абзац раздела "Writing OLE automation Stored Procedures") пропущено последнее предложение: Написав код объекта автоматизации OLE, необходимо зарегистрировать методы этого объекта в качестве хранимых процедур при помощи оператора CREATE PROCEDURE. Чтобы зарегистрировать хранимую процедуру автоматизации OLE, используйте оператор CREATE PROCEDURE с условием LANGUAGE OLE. Внешнее имя состоит из ID программы OLE, идентифицирующего этот объект автоматизации OLE, и имени метода, разделенных символом ! (восклицательный знак). Объект автоматизации OLE должен быть реализован как внутрипроцессный сервер (.DLL). 35.4 Глава 12. Working with Complex Objects: User-Defined Structured Types 35.4.1 Вставка в столбцы атрибутов структурированного типа Для встроенных статических операторов SQL применяется следующее правило: Чтобы вставить атрибут пользовательского структурированного типа в столбец того же типа данных, что и этот атрибут, заключите в круглые скобки переменную хоста, представляющую экземпляр этого типа, и после закрывающей скобки добавьте две точки и имя атрибута. Например, рассмотрим такую ситуацию: - PERSON_T - структурированный тип, содержащий атрибут NAME типа VARCHAR(30). - T1 - таблица, содержащая столбец C1 типа VARCHAR(30). - personhv - переменная хоста, объявленная для типа PERSON_T в языке программирования. Правильный синтаксис для вставки атрибута NAME в столбец C1: EXEC SQL INSERT INTO T1 (C1) VALUES ((:personhv)..NAME) 35.5 Глава 13. Using Large Objects (LOBs) 35.5.1 Поддержка больших объектов в системах баз данных объединения DB2 поддерживает три типа больших объектов: символьные большие объекты (CLOB), двухбайтные символьные большие объекты (DBCLOB) и двоичные большие объекты (BLOB). Общую информацию о поддержке больших объектов в DB2 смотрите в следующих книгах по DB2: DB2 Application Development Guide DB2 SQL Reference Руководство администратора DB2: Планирование В системе базы данных объединения вы можете обращаться к большим объектам на удаленных источниках данных и управлять ими. Поскольку объем больших объектов может быть очень велик, передача их с удаленного источника данных может потребовать много времени. База данных объединения DB2 пытается свести к минимуму передачу данных больших объектов с удаленных источников данных, а также по возможности передавать данные больших объектов от источника данных прямо запрашивающей программе, избегая материализации больших объектов на DB2. В этом разделе описывается: Как DB2 получает большие объекты Как программы могут использовать локаторы больших объектов Ограничения больших объектов Отображения типов данных больших объектов и других типов данных Настройка системы 35.5.1.1 Как DB2 получает большие объекты Системы объединения DB2 используют два способа получения больших объектов: потоковую передачу и материализацию. Потоковая передача большого объекта При потоковой передаче большого объекта получение данных большого объекта делится на этапы. DB2 использует потоковую передачу больших объектов для данных в наборах результатов запросов, которые полностью передаются вызывающей программе. Например, рассмотрим такой запрос: SELECT empname, picture FROM orc_emp_table WHERE empno = '01192345' где picture - столбец большого объекта, а orc_emp_table - псевдоним таблицы Oracle с данными о сотрудниках. Процессор запросов DB2 пометит столбец picture для потоковой передачи, если он выберет выполнение запроса целиком на источнике данных Oracle. Во время выполнения, если DB2 видит, что большой объект помечен для потоковой передачи, она запрашивает большой объект у источника данных и передает эти данные в пространство памяти программы. Материализация большого объекта При материализации большого объекта DB2 получает данные удаленного объекта и сохраняет их на сервере объединения. DB2 использует материализацию большого объекта, если: Столбец большого объекта нельзя задерживать или передавать в потоковом режиме. К столбцу большого объекта перед передачей надо применить функцию. Это происходит, когда DB2 выполняет функцию, недоступную на удаленном источнике данных. Например, Microsoft SQL Server не поддерживает функцию SUBSTR для столбцов больших объектов. Поэтому DB2 материализует столбец большого объекта локально и применяет к нему функцию DB2 SUBSTR. 35.5.1.2 Как программы могут использовать локаторы больших объектов Программы могут получать локаторы больших объектов, хранящихся на удаленных источниках данных. Локатор большого объекта - это 4-байтное значение, хранящееся в переменной хоста, которое программа может использовать для обращения к значению большого объекта(или выражению большого объекта), хранимому в системе базы данных. При помощи локатора большого объекта программа может управлять значением большого объекта, как если бы оно хранилось в обычной переменной хоста. Разница в использовании локатора большого объекта заключается в том, что при этом значение большого объекта не требуется передавать с сервера программе (и, возможно, обратно). Дополнительную информацию о локаторах больших объектов смотрите в руководстве DB2 Application Development Guide. DB2 может получать большие объекты от удаленных источников данных, хранить их в DB2 и передавать локатор для сохраненного большого объекта. Локаторы больших объектов освобождаются, когда: Программа выполняет оператор SQL "FREE LOCATOR". Программа выполняет оператор COMMIT. При перезапуске DB2. 35.5.1.3 Ограничения больших объектов При использовании и получении больших объектов примите во внимание следующее: DB2 не может связывать удаленные большие объекты с переменной ссылки на файл. Большие объекты не поддерживаются в прозрачном режиме. 35.5.1.4 Отображения типов данных больших объектов и других типов данных Есть несколько случаев, когда вы можете отобразить тип данных большого объекта DB2 на другой тип данных на источнике данных. Если надо создать отображение между столбцом с типом большого объекта DB2 и соответствующим столбцом на источнике данных, рекомендуется по возможности использовать тип данных большого объекта. Чтобы создать отображение, используйте оператор DDL CREATE TYPE MAPPING. Например: CREATE TYPE MAPPING мой_большой_объект_oracle FROM sysibm.clob TO SERVER TYPE oracle TYPElong где: мой_большой_объект_oracle Имя отображения типа. sysibm.clob Тип данных CLOB DB2. oracle Тип сервера для соединения. long Соответствующий тип данных Oracle. 35.5.2 Настройка системы Если программа при получении больших объектов возвращает сообщение об ошибке, информирующее о нехватке ресурсов системы для обработки оператора, увеличьте значение параметра размера кучи для прикладных программ, APPLHEAPSZ, в файле конфигурации базы данных. Например: DB2 UPDATE DB CFG FOR EMPLOYEE USING APPLHEAPSZ 512 где EMPLOYEE - имя настраиваемой базы данных, а 512 - значение параметра размера кучи для прикладных программ. 35.6 Часть 5. DB2 Programming Considerations 35.6.1 Провайдер OLE DB IBM DB2 Установка в DB2 IBM Версии 7.1 FixPak 1 или более нового устраняет причину следующей ошибки DB2: Тестирование соединения закончилось неудачно из-за ошибки при инициализации провайдера. Провайдер OLE DB IBM в настоящее время недоступен. Дополнительную информацию смотрите в файле readme. Дополнительную информацию о IBM OLE DB Provider for DB2 смотрите по адресу http://www.ibm.com/software/data/db2/udb/ad/v71/oledb.html. 35.7 Глава 20. Programming in C and C++ Информация в следующей таблице дополняет информацию, включенную в главу 7, "Stored Procedures", в главу 15, "Writing User-Defined Functions and Methods" и в главу 20, "Programming in C and C++". В этой таблице перечислены поддерживаемые отображения между типами данных SQL и типами данных C для хранимых процедур, пользовательских функций и методов. 35.7.1 Типы C/C++ для хранимых процедур, пользовательских функций и методов Табл. 11. Типы данных SQL, соответствующие объявлениям C/C++ Тип столбца SQL Тип данных C/C++ Описание типа столбца SQL SMALLINT (500 или 501) sqlint16 16-битное целое со знаком INTEGER (496 или 497) sqlint32 32-битное целое со знаком BIGINT (492 или 493) sqlint64 64-битное целое со знаком REAL (480 или 481) float Число с плавающей точкой, одинарной точности DOUBLE (480 или 481) double Число с плавающей точкой, двойной точности DECIMAL(p, s) (484 или 485) Не поддерживается. Чтобы передать значение типа DECIMAL, задайте для этого параметра тип данных, в который может быть преобразован тип DECIMAL (например, CHAR или DOUBLE), и явно преобразуйте аргумент в этот тип данных. CHAR(n) (452 или 453) char[n+1] где n достаточно велико, чтобы вместить данные 1<=n<=254 Символьная строка фиксированной длины с пустым символом-ограничителем CHAR(n) FOR BIT DATA (452 или 453) char[n+1] где n достаточно велико, чтобы вместить данные 1<=n<=254 Символьная строка фиксированной длины VARCHAR(n) (448 или 449) (460 или 461) char[n+1] где n достаточно велико, чтобы вместить данные 1<=n<=32 672 Строка переменной длины с пустым символом-ограничителем VARCHAR(n) FOR BIT DATA (448 или 449) struct { sqluint16 length; char[n] } 1<=n<=32 672 Символьная строка переменной длины без пустого символа-ограничителя LONG VARCHAR (456 или 457) struct { sqluint16 length; char[n] } 32 673<=n<=32 700 Символьная строка переменной длины без пустого символа-ограничителя CLOB(n) (408 или 409) struct { sqluint32 length; char data[n]; } 1<=n<=2 147 483 647 Символьная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки BLOB(n) (404 или 405) struct { sqluint32 length; char data[n]; } 1<=n<=2 147 483 647 Двоичная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки DATE (384 или 385) char[11] Символьный формат с пустым символом-ограничителем TIME (388 или 389) char[9] Символьный формат с пустым символом-ограничителем TIMESTAMP (392 или 393) char[27] Символьный формат с пустым символом-ограничителем Прим.:Следующие типы данных доступны только в среде DBCS или EUC при прекомпиляции с опцией WCHARTYPE NOCONVERT. GRAPHIC(n) (468 или 469) sqldbchar[n+1] где n достаточно велико, чтобы вместить данные 1<=n<=127 Строка двухбайтных символов фиксированной длины с пустым символом-ограничителем VARGRAPHIC(n) (400 или 401) sqldbchar[n+1] где n достаточно велико, чтобы вместить данные 1<=n<=16 336 Строка двухбайтных символов переменной длины без пустого символа-ограничителя LONG VARGRAPHIC (472 или 473) struct { sqluint16 length; sqldbchar[n] } 16 337<=n<=16 350 Строка двухбайтных символов переменной длины без пустого символа-ограничителя DBCLOB(n) (412 или 413) struct { sqluint32 length; sqldbchar data[n]; } 1<=n<=1 073 741 823 Символьная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки 35.8 Глава 21. Programming in Java 35.8.1 Сигнатура метода Java в процедурах и функциях с PARAMETER STYLE JAVA Если после имени метода Java в условии EXTERNAL NAME оператора CREATE PROCEDURE или CREATE FUNCTION задана сигнатура метода Java, она должна соответствовать отображению типов Java по умолчанию для сигнатуры, заданной после имени процедуры или функции. Например, отображению Java по умолчанию для типа SQL INTEGER - "int", а не "java.lang.Integer". 35.8.2 Соединение с сервером апплетов JDBC Важно, чтобы уровень FixPak файла db2java.zip, используемого апплетом Java, совпадал с уровнем сервера апплетов JDBC. При нормальных условиях db2java.zip загружается с того сервера Web, на котором запущен сервер апплетов JDBC, как показано на рисунке 22 в этой книге. Это гарантирует совпадение уровней. Если же в вашей конфигурации есть апплет Java, загружающий db2java.zip из другого положения, может произойти несовпадение. До FixPak 2 это может вызывать непредвиденные ошибки. После применения FixPak 2 совпадение уровней FixPak для этих двух файлов принудительно проверяется во время соединения. При обнаружении несовпадения соединение не устанавливается, и клиент получает одну из следующих исключительных ситуаций: Если уровень db2java.zip - FixPak 2 или более новый: COM.ibm.db2.jdbc.DB2Exception: [IBM][Драйвер JDBC] CLI0621E Неподдерживаемая конфигурация сервера JDBC. Если уровень db2java.zip раньше, чем FixPak 2: COM.ibm.db2.jdbc.DB2Exception: [IBM][Драйвер JDBC] CLI0601E Неправильный хэндл оператора или оператор закрыт. SQLSTATE=S1000 При несовпадении сервер апплетов JDBC записывает в файл jdbcerr.log одно из следующих сообщений: Если уровень сервера апплетов JDBC - FixPak 2 или более новый: jdbcFSQLConnect: JDBC Версии сервера апплетов и клиента (db2java.zip) не совпадают. Невозможно выполнить соединение., einfo= -111 Если уровень сервера апплетов JDBC раньше, чем FixPak 2: jdbcServiceConnection(): Получено неверное требование., einfo= 0 35.9 Приложение B. Примеры программ В раздел "Object Linking and Embedding Samples" надо добавить: salarycltvc Написанный на Visual C++ пример CLI DB2, вызывающий хранимую процедуру salarysrv, написанную на Visual Basic. SALSVADO Пример хранимой процедуры автоматизации OLE (SALSVADO) SALCLADO и клиента (SALCLADO), реализованного на 32-битном Visual Basic и ADO, который вычисляет средний оклад в таблице staff2. CLI Guide and Reference 36.1 Связывание утилит базы данных при использовании клиента времени выполнения Клиент времени выполнения не может использоваться для связывания утилит базы данных (import, export, reorg, процессор командной строки) или файлов связывания CLI DB2 с базами данных, чтобы они могли использоваться с этими базами данных. Вместо него нужно использовать клиент администратора DB2 или клиент разработки прикладных программ DB2. Прежде чем утилиты базы данных и файлы связывания CLI DB2 можно будет использовать с базой данных, они должны быть связаны с этой базой данных. Если в сетевой среде используется несколько клиентов, работающих в разных операционных системах или имеющих разные уровни версий или служб DB2, необходимо связать утилиты один раз для каждой комбинации операционной системы и версии DB2. 36.2 Использование статического SQL в прикладных программах CLI Дополнительную информацию об использовании статического SQL в прикладных программах CLI смотрите на странице Web по адресу: http://www.ibm.com/software/data/db2/udb/staticcli/ 36.3 Ограничения статического профилирования JDBC/ODBC/CLI Статическое профилирование JDBC/ODBC/CLI в настоящее время предназначено для простых прикладных программ. Оно не предназначено для сложных прикладных программ, состоящих из многих функциональных компонентов и реализующих сложные логические алгоритмы. Чтобы оператор SQL был захвачен в сеанс профилирования, он должен быть успешно выполнен. Динамические операторы, для которых в сеансе поиска совпадающих операторов не будут найдены совпадающие операторы, будут продолжать выполняться как динамические вызовы JDBC/ODBC/CLI. Чтобы оператор SQL был приемлемым кандидатом для совпадения операторов, он должен посимвольно совпадать с захваченным и связанным оператором. Пробелы существенны: например, "COL = 1" не считается совпадающим с "COL=1". Использование маркеров параметров вместо литералов увеличивает вероятность обнаружения совпадения. При выполнении прикладной программы с предварительно связанными статическими операторами SQL динамические регистры, управляющие поведением динамических операторов, не будут влиять на выполнение операторов, преобразованных в статический вид. Если прикладная программа выдает операторы DDL для объектов, используемых в последующих операторах DML, вы обнаружите все эти операторы в файле захвата. Средство связывания статического профилирования JDBC/ODBC/CLI попытается выполнить для них связывание. Эта попытка связывания будет успешной при работе с СУБД, поддерживающими опцию связывания VALIDATE(RUN), и не будет успешной с СУБД, не поддерживающими эту опцию. В этом случае для прикладной программы не следует использовать статическое профилирование. Администратор базы данных может отредактировать файл захвата, чтобы добавить, изменить или удалить операторы SQL в соответствии с требованиями конкретной прикладной программы. 36.4 Преобразования ADT Следующая информация замещает существующую информацию в этой книге. Существует новый тип дескриптора (smallint) SQL_DESC_USER_DEFINED_TYPE_CODE со значениями: SQL_TYPE_BASE 0 (это не USER_DEFINED_TYPE) SQL_TYPE_DISTINCT 1 SQL_TYPE_STRUCTURED 2 Это значение можно запросить с помощью SQLColAttribute или SQLGetDescField (только для IRD). Чтобы получить действительные имена типов, добавлены атрибуты: SQL_DESC_REFERENCE_TYPE SQL_DESC_STRUCTURED_TYPE SQL_DESC_USER_TYPE Указанные выше значения можно запросить с помощью SQLColAttribute или SQLGetDescField (только для IRD). Добавьте тип SQL_DESC_BASE_TYPE, если он требуется в прикладной программе. Например, прикладная программа может не распознавать структурированный тип и использоваться только для его выборки или вставки, оставляя работу с подробностями их структуры другим программным модулям. Добавьте новый атрибут соединения с именем SQL_ATTR_TRANSFORM_GROUP, чтобы позволить прикладной программе задавать группу преобразования (вместо того, чтобы использовать оператор SQL "SET CURRENT DEFAULT TRANSFORM GROUP"). Добавьте новый атрибут оператора/соединения с именем SQL_ATTR_RETURN_USER_DEFINED_TYPES, который можно задать или запросить с помощью SQLSetConnectAttr; если задан этот атрибут, CLI возвращает в качестве допустимого типа SQL значение SQL_DESC_USER_DEFINED_TYPE_CODE. Этот атрибут требуется перед использованием любых преобразований. По умолчанию этот атрибут выключен и в качестве типа SQL возвращается информация о базовом типе. Когда он включен, в качестве SQL_TYPE возвращается SQL_DESC_USER_DEFINED_TYPE_CODE. Прикладная программа будет проверять SQL_DESC_USER_DEFINED_TYPE_CODE и затем получать соответствующее имя типа. Это будет возможно для SQLColAttribute, SQLDescribeCol и SQLGetDescField. Функция SQLBindParameter не вызывает ошибки при связывании SQL_C_DEFAULT, поскольку нет кода, позволяющего SQLBindParameter задавать тип SQL_USER_DEFINED_TYPE. Будут использоваться стандартные типы языка C по умолчанию в соответствии с типом SQL, переданным на сервер. Например: sqlrc = SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 30, 0, &c2, 30, NULL); 36.5 Глава 3. Using Advanced Features 36.5.1 Writing Multi-Threaded Applications В конец раздела "Multi-Threaded Mixed Applications" (Создание многопоточных программ) надо добавить: Прим.:НЕ рекомендуется использовать размер стека по умолчанию; вместо этого лучше увеличить размер по крайней мере до 256 000. При вызове функции DB2 требуется размер стека минимум 256 000. Размер стека надо задать так, чтоб он был достаточным и для вашей программы, и для вызова функции DB2. 36.5.2 Scrollable Cursors В раздел "Scrollable Cursors" (Указатели с возможностью прокрутки) надо добавить следующую информацию: 36.5.2.1 Поддержка указателей с возможностью прокрутки на стороне сервера для OS/390 Клиент UDB для платформ Unix, Windows и OS/2 при применении к базе данных OS/390 Версии 7 поддерживает указатели с возможностью изменения и прокрутки на стороне сервера. Для обращения к указателю OS/390 с возможностью прокрутки в трехуровневой среде на клиенте и на шлюзе должны работать с DB2 UDB Версии 7.1, FixPak 3 или новее. Существует два программных интерфейса программ, обеспечивающих доступ к указателям с возможностью прокрутки: ODBC и JDBC. Интерфейс JDBC позволяет обращаться только к статическим указателям с прокруткой; интерфейс ODBC позволяет обращаться как к статическим, так и к управляемым клавиатурой указателям с прокруткой на стороне сервера. Атрибуты указателя В следующей таблице приведены значения по умолчанию атрибутов указателей OS/390 Версии 7 в ODBC. Табл. 12. Атрибуты по умолчанию для указателей OS/390 в ODBC Тип указателя Чувствит. указателя Возможность изменения указателя Одноврем. указателя Возможность прокрутки указателя только-впередa не задается без возможности изменения одноврем. только для чтения без возможности прокрутки статический нечувствит. без возможности изменения одноврем. только для чтения с возможностью прокрутки управляемый чувствит. с возможностью изменения одноврем. значений с возможностью прокрутки a Только-вперед - это поведение по умолчанию указателя с прокруткой без условия FOR UPDATE. Если для указателя только-вперед задать FOR UPDATE, будет создан указатель с возможностью изменения, одновременностью блокировок, без возможности прокрутки. Поддерживаемые направления выборки Все направления выборки ODBC поддерживаются с помощью интерфейсов SQLFetchScroll или SQLExtendedFetch. Изменение управляемого указателя Управляемый указатель - это указатель с возможностью изменения. Драйвер CLI добавляет условие FOR UPDATE к запросу, кроме случаев, когда запрос введен как запрос SELECT ... FOR READ ONLY или условие FOR UPDATE уже есть. Реализованный в DB2 для OS/390 управляемый указатель - это указатель одновременности значений. Указатель одновременности значений выражается в оптимистичной блокировке, то есть блокировка не производится, пока не будет предпринята попытка произвести изменение или удаление. При попытке произвести изменение или удаление сервер базы данных сравнивает предыдущие значения, извлеченные программой, с текущими значениями в основной таблице. Если эти значения совпадают - изменение или удаление успешно выполняется. Если значения не совпадают - операция завершается неудачно. Если происходит ошибка, программа должна опять запросить значения и, если нужно, повторить операцию изменения или удаления. Программа может изменять управляемый указатель двумя способами: Выполнить оператор UPDATE WHERE CURRENT OF "<имя указателя>" или DELETE WHERE CURRENT OF "<имя указателя>", используя SQLPrepare() с SQLExecute() или SQLExecDirect(). Использовать SQLSetPos() или SQLBulkOperations(), чтобы изменить, удалить или добавить строку набора результатов. Прим.:Строки, добавленные в набор результатов с помощью SQLSetPos() или SQLBulkOperations(), вставляются в таблицу на сервере, но не добавляются в набор результатов сервера. Поэтому эти строки не могут изменяться и нечувствительны к изменениям, произведенным другими транзакциями. Однако вставленные строки будут частью набора результатов, так как они кэшируются на клиенте. Любые триггеры, применяемые к вставленным строкам, для программы будут выглядеть так, как будто они не применялись. Чтобы вставляемые строки были изменяемыми, чувствительными, и был виден результат соответствующих триггеров, программа должна повторить запрос, чтобы повторно сгенерировать набор результатов. Устранение неисправностей в программах, созданных до появления поддержки указателей с возможностью прокрутки Так как поддержка указателей с возможностью прокрутки появилась недавно, у некоторых прикладных программ ODBC, работавших с предыдущими версиями UDB для OS/390 или UDB для Unix, Windows, и OS/2 может измениться поведение или производительность. Это происходит из-за того, что до появления поддержки указателей с прокруткой, программы, требовавшие такой указатель, получали указатель только-вперед. Чтобы восстановить поведение программы до появления поддержки указателей с прокруткой, задайте следующие ключевые слова конфигурации в файле db2cli.ini: Табл. 13. Значения ключевых слов конфигурации, восстанавливающие поведение программ до появления поддержки указателей с возможностью прокрутки Задание ключевого слова конфигурации Описание PATCH2=6 Возвращает сообщение, что указатели с возможностью прокрутки (как управляемые, так и статические) не поддерживаются. CLI автоматически заменяет требование указателя с прокруткой на требование указателя только-вперед. DisableKeysetCursor=1 Запрещает управляемые указатели с прокруткой с обеих сторон - сервера и клиента. Можно использовать, чтобы драйвер CLI предоставлял программе статический указатель, когда затребован управляемый указатель. UseServerKeysetCursor=0 Запрещает управляемые указатели на стороне сервера для программ, использующих библиотеку управляемых указателей клиентской стороны, чтобы симулировать управляемый указатель. Используйте эту возможность, только если возникли проблемы с управляемым указателем на стороне сервера, так как указатель на стороне клиента приводит к значительным издержкам и обычно имеет худшую производительность, чем указатель на стороне сервера. 36.5.3 Using Compound SQL В этой книге пропущен следующий комментарий: Все операторы SQL, которые могут быть подготовлены динамически и не являются запросами, могут выполняться как операторы внутри составного оператора. Примечание: Внутри составного оператора Atomic Compound SQL не разрешены также операторы SQL savepoint, release savepoint и rollback to savepoint. И наоборот, оператор Atomic Compound SQL нельзя использовать в точке сохранения. 36.5.4 Using Stored Procedures 36.5.4.1 Написание хранимой процедуры в CLI Недокументированное ограничение на хранимые процедуры CLI: Выполняя вызовы нескольких хранимых процедур CLI, прикладная программа должна закрыть открытые указатели, полученные от одной хранимой процедуры, перед вызовом другой хранимой процедуры. Это значит, что первый набор открытых указателей должен быть закрыт прежде, чем следующая хранимая процедура попытается открыть указатель. 36.5.4.2 Хранимые процедуры и автоматическое связывание CLI Следующая информация дополняет приведенную в книге: Драйвер CLI/ODBC в норме будет автоматически связывать пакеты CLI при первом выполнении прикладной программой CLI/ODBC SQL для базы данных при условии, что у пользователя есть надлежащие привилегия или авторизация. Автоматическое связывание пакетов CLI не может быть выполнено из хранимой процедуры и поэтому не произойдет, если самым первым действием прикладной программы будет вызов хранимой процедуры CLI. Перед запуском прикладной программы CLI, вызывающей хранимую процедуру CLI для новой базы данных DB2, необходимо один раз связать пакеты CLI при помощи следующей команды: UNIX db2 bind /@db2cli.lst blocking all Windows и OS/2 db2bind "%DB2PATH%\bnd\@db2cli.lst" blocking Во избежание автоматического связывания во время выполнения рекомендуется всегда связывать эти пакеты во время создания базы данных. Автоматическое связывание может закончиться неудачно, если у пользователя нет привилегии или если в это же самое время пытается автоматически связаться другая программа. 36.6 Глава 4. Configuring CLI/ODBC and Running Sample Applications 36.6.1 Ключевые слова конфигурации Пропустите последний параграф в описании ключевого слова CURRENTFUNCTIONPATH. Правильная информация: Это ключевое слово применяется при разрешении неспецифицированных обращений к функциям и хранимым процедурам, для которых могло быть задано имя схемы, отличное от схемы текущего пользователя. Порядок имен схем задает порядок, в котором будут разрешаться имена функций и процедур. Подробности о разрешении функций и процедур смотрите в справочнике SQL Reference. 36.7 Глава 5. DB2 CLI Functions 36.7.1 Параметр SQLBindFileToParam - Связать ссылку файла большого объекта с большим объектом Последний параметр функции CLI SQLBindFileToParam() - IndicatorValue - описан как "output (deferred)". На самом деле он "input (deferred)". 36.7.2 SQLNextResult - Связать следующий набор результатов с другим хэндлом оператора К Главе 5 "DB2 CLI Functions" надо добавить следующий текст: 36.7.2.1 Назначение Спецификация: DB2 CLI 7.x 36.7.2.2 Синтаксис SQLRETURN SQLNextResult (SQLHSTMT StatementHandle1 SQLHSTMT StatementHandle2); 36.7.2.3 Аргументы функции Табл. 14. Аргументы SQLNextResult Тип данных Аргумент Использование Описание SQLHSTMT StatementHandle входной Хэндл оператора. SQLHSTMT StatementHandle входной Хэндл оператора. 36.7.2.4 Использование Хранимая процедура возвращает несколько наборов результатов, оставляя после выхода один или несколько указателей открытыми. Доступ к первому набору результатов всегда осуществляется путем использования хэндла оператора, вызвавшего хранимую процедуру. Если возвращается несколько наборов результатов, для описания и считывания набора результатов можно использовать либо SQLMoreResults(), либо SQLNextResult(). SQLMoreResults() используется для закрытия указателя для первого набора результатов и позволяет обработку следующего набора результатов, а SQLNextResult() перемещает следующий набор результатов в StatementHandle2 без закрытия указателя при StatementHandle1. Обе функции возвращают SQL_NO_DATA_FOUND, если нет считываемых наборов результатов. Использование SQLNextResult() позволяет обрабатывать наборы результатов в любом порядке после того, как они были перенесены на другие хэндлы операторов. Смешанные вызовы SQLMoreResults() и SQLNextResult() разрешены до тех пор, пока не исчерпаются указатели (открытые наборы результатов) на StatementHandle1. Когда SQLNextResult() возвращает SQL_SUCCESS, следующий набор результатов больше не связан с StatementHandle1. Вместо этого следующий набор результатов связывается с StatementHandle2, как если бы SQLExecDirect() только что успешно обработала запрос к StatementHandle2. Поэтому указатель может быть описан с использованием SQLNumResultSets(), SQLDescribeCol() или SQLColAttribute(). После того как была вызвана SQLNextResult(), набор результатов, теперь связанный с StatementHandle2, удаляется из цепочки оставшихся результатов и не может быть снова использован ни в SQLNextResult(), ни в SQLMoreResults(). Это означает, что для 'n' наборов результатов SQLNextResult() может быть вызвана успешно максимум 'n-1' раз. Если SQLFreeStmt() вызывается с опцией SQL_CLOSE или SQLFreeHandle() вызывается с установленным для HandleType SQL_HANDLE_STMT, все находящиеся в состоянии ожидания на этом хэндле наборы результатов отбрасываются. SQLNextResult() возвращает SQL_ERROR, если у StatementHandle2 есть открытый указатель или если StatementHandle1 и StatementHandle2 не находятся на одном и том же соединении. Если возвращаются ошибки или предупреждения, SQLError() должна всегда вызываться с StatementHandle1. Прим.:SQLMoreResults() работает также с параметризованным запросом с массивом значений входных параметров, заданным при помощи SQLParamOptions() и SQLBindParameter(). Однако SQLNextResult() не поддерживает такой способ. 36.7.2.5 Коды возврата SQL_SUCCESS SQL_SUCCESS_WITH_INFO SQL_STILL_EXECUTING SQL_ERROR SQL_INVALID_HANDLE SQL_NO_DATA_FOUND 36.7.2.6 Диагностика Табл. 15. SQLSTATE для SQLNextResult SQLSTATE Описание Объяснение 40003 08S01 Ошибка связи. Ошибка связи между прикладной программой и источником данных до выполнения функции. 58004 Непредвиденная системная ошибка. Неисправимая системная ошибка. HY001 Ошибка выделения памяти. DB2 CLI не в состоянии выделить память, необходимую для выполнения или завершения функции. HY010 Ошибочная последовательность вызова функций. Функция была вызвана во время операции обработки данных (SQLParamData(), SQLPutData()). У StatementHandle2 есть открытый связанный с ним указатель. Функция была вызвана из операции SQL, ограниченной BEGIN COMPOUND и END COMPOUND. HY013 Непредвиденная ошибка при работе с памятью. CLI DB2 не сумел получить доступ к памяти, необходимой для выполнения или завершения функции. HYT00 Истек срок ожидания. Истек срок ожидания возврата набора результатов источником данных. Истечение времени поддерживается только в системах без многозадачности, таких как Windows 3.1 и Macintosh System 7. Срок ожидания задается при помощи атрибута SQL_ATTR_QUERY_TIMEOUT для SQLSetConnectAttr(). 36.7.2.7 Ограничения Для параметризованных запросов можно использовать только SQLMoreResults(). 36.7.2.8 Ссылки "SQLMoreResults - Determine If There Are More Result Sets" на странице 535 "Returning Result Sets from Stored Procedures" на странице 120 36.8 Приложение D. Extended Scalar Functions 36.8.1 Date and Time Functions Следующие функции пропущены в разделе Date and Time Functions приложения D "Extended Scalar Functions": DAYOFWEEK_ISO( date_exp ) Возвращает день недели в date_exp как целое значение в диапазоне от 1 до 7, где 1 соответствует понедельнику. Обратите внимание на разницу между этой функцией и функцией DAYOFWEEK(), где 1 соответствует воскресенью. WEEK_ISO( date_exp ) Возвращает неделю года в date_exp как целое значение в диапазоне от 1 до 53. Неделя 1 определена как первая неделя года, содержащая четверг. Таким образом, Week1 эквивалентно неделе, содержащей 4 января, поскольку первым днем недели считается понедельник. Обратите внимание на отличие WEEK_ISO() от текущего определения WEEK(), которая возвращает значения до 54. Для функции WEEK() первая неделя - неделя содержащая первую субботу. Это эквивалентно неделе, содержащей 1 января, даже если эта неделя состоит всего из одного дня. DAYOFWEEK_ISO() и WEEK_ISO() автоматически доступны в любой базе данных, созданной в версии 7. Если база данных создана до версии 7, эти функции могут быть недоступны. Чтобы сделать функции DAYOFWEEK_ISO() и WEEK_ISO() доступными в такой базе данных, используйте системную команду db2updb. Дополнительную информацию об db2updb смотрите в разделе "Command Reference" данных Замечаний по выпуску. 36.9 Приложение K. Using the DB2 CLI/ODBC/JDBC Trace Facility Некоторые разделы этого приложения были обновлены. Самую свежую информацию об этом средстве трассировки смотрите в главе "Traces" руководства Troubleshooting Guide. Справочник по сообщениям 37.1 Получение справки по сообщению и SQLSTATE Справка, доступная из процессора командной строки, содержит новый и исправленный текст для сообщения и значений SQLSTATE, которого нет в книге Справочник по сообщениям. Чтобы получить справку для сообщения из процессора командной строки, введите в командной строке операционной системы команду: db2 "? XXXnnnnn" где XXX - префикс сообщения, а nnnnn - его номер. Например, db2 "? SQL30081" выводит справку по сообщению SQL30081. Чтобы получить текст о SQLSTATE из процессора командной строки, введите в командной строке операционной системы команду: db2 "? XXXXX" где XXXXX - значение SQLSTATE. Например, db2 "? 428F1" выводит текст для SQLSTATE 428F1. 37.2 Изменение отображения SQLCODE в DB2 Connect Отображение SQLCODE по умолчанию для DB2 Connect в Версии 7.2 изменено. Когда база данных хоста возвращает значение SQLCODE -567, DB2 Connect теперь заменяет это значение на -551 перед возвратом значения SQLCODE клиенту DB2. 37.3 Новые и измененные сообщения Приведенный ниже список содержит номера сообщений, которые были изменены с момента публикации Справочника по сообщениям для DB2 Версии 7.1. Если вы получите одно из этих сообщений при работе с DB2, это будет правильное новое сообщение; однако одно не будет соответствовать информации в Справочнике по сообщениям. 37.3.1 Сообщения интерфейса уровня вызовов (CLI) CLI0645E CLI0646E CLI0647E 37.3.2 Сообщения DB2 DB21086I DB210060E DB210061E DB210062E DB210113E DB210114E DB210115E DB210116E DB210117E DB210118E DB210120E DB210121E DB210200I DB210201I 37.3.3 Сообщения DBI DBI1172E DBI1793W DBI1794E DBI1795E DBI1796W DBI1797I 37.3.4 Сообщения Центра хранилищ данных (DWC) DWC0000I DWC03504E DWC08900E DWC08901E DWC08902E DWC08903E DWC08904E DWC08907C DWC08908C DWC08909C DWC08910E DWC08911E DWC08912E DWC08913E DWC08914E DWC08915E DWC08917E DWC08919I DWC08930E DWC08931E DWC08932E DWC08933E DWC08934E DWC08935E DWC08936W DWC08937I DWC08938I DWC08939I DWC08940I DWC08941I DWC08960I DWC08961I DWC08962I DWC08963I DWC08964I DWC08965I DWC08966E DWC08967E DWC08968E DWC13239E DWC13300E DWC13301E DWC13302E DWC13304E DWC13603E DWC13700E DWC13701E DWC13702E DWC13703E DWC13705E DWC13706E DWC13707E 37.3.5 Сообщения SQL SQL0017N SQL0056N SQL0057N SQL0058N SQL0097N SQL0224N SQL0225N SQL0227N SQL0228N SQL0231W SQL0243N SQL0244N SQL0270N SQL0301N SQL0303N SQL0336N SQL0348N SQL0349N SQL0357N SQL0358N SQL0368N SQL0408N SQL0423N SQL0590N SQL0670N SQL0845N SQL0846N SQL1179W SQL1186N SQL1550N SQL1551N SQL1552N SQL1553N SQL1704N SQL2077W SQL2078N SQL2417N SQL2426N SQL2571N SQL2572N SQL2573N SQL2574N SQL2575N SQL2576N SQL4942N SQL5012N SQL6583N SQL20005N SQL20117N SQL20121N SQL20133N SQL20134N SQL20135N SQL20143N SQL20144N SQL20145N SQL20146N SQL20147N SQL20148N SQL20153N SQL21000N 37.4 Измененные SQLSTATES Табл. 16. 42630 Переменная SQLSTATE или SQLCODE недопустима в данном контексте. 42631 В операторе RETURN функции SQL должно быть указано выражение. 42632 В методе или функции SQL должен быть оператор RETURN. 428F2 В операторе RETURN процедуры SQL должно быть указано целое выражение. 560B7 Для многострочного оператора INSERT использование выражения последовательности NEXTVAL должно быть одинаковым для каждой строки. SQL Reference 38.1 Справочник SQL поставляется в виде одного файла PDF В приложении "Использование библиотеки DB2" в каждой книге указано, что Справочник SQL доступен в формате PDF в виде двух отдельных томов. Это неверно. Хотя в печатном виде книга состоит из двух томов и два соответствующих номера форм правильны, существует только один файл PDF, содержащий оба тома. Имя этого файла PDF - db2s0x70. 38.2 Глава 3. Language Elements (Элементы языка) 38.2.1 Правила именования и неявные спецификаторы имен объектов В этот раздел главы 3 добавьте следующее примечание: В следующих именах в контексте процедур SQL можно использовать только символы, разрешенные в обычных идентификаторах, даже если эти имена введены в ограничителях: - имя-условия - метка - имя-параметра - имя-процедуры - имя-переменной-SQL - имя-оператора 38.2.2 DATALINK Assignments Абзац в этом разделе изменен на следующий: Учтите, что размер параметра URL или результата функции совпадает с размером входных или выходных параметров и ограничен длиной столбца DATALINK. Однако в некоторых случаях с возвращаемым значением URL передается элемент доступа. В случаях, когда это возможно, выходная переменная должна иметь достаточный размер, чтобы вместить элемент доступа и длину столбца DATALINK. Поэтому задаваемая на входе действительная длина комментария и URL в полной форме не должна превосходить размер выходного параметра. Если она превосходит эту длину, возникает ошибка. 38.2.3 Expressions (Выражения) 38.2.3.1 Синтаксическая диаграмма Синтаксическая диаграмма была изменена на: .-операция-----------------------------------------. V | >>----+-----+---+-функция--------------------------+--+-------->< +- + -+ +-(выражение)----------------------+ '- - -' +-константа------------------------+ +-имя-столбца----------------------+ +-переменная-хоста-----------------+ +-специальный-регистр--------------+ +-(скалярная-полная-выборка)-------+ +-временной-интервал---------------+ +-выражение-case-------------------+ +-спецификация-преобразования-типа-+ +-операция-ссылки------------------+ +-функция-OLAP---------------------+ +-вызов-метода---------------------+ +-интерпретация-подтипа------------+ '-ссылка-на-последовательность-----' операция (1) |---+-CONCAT------+---------------------------------------------| +- / ---------+ +- * ---------+ +- + ---------+ '- - ---------' Примечания: В качестве синонима CONCAT можно использовать ||. 38.2.3.2 Функции OLAP Следующее исправление надо внести в подраздел "OLAP Functions" раздела "Expressions" Главы 3. aggregation-function |--функция-столбца--OVER---(--+---------------------------+-----> '-| условие-раздела-окна |--' >----+----------------------------------------------------------------------+> '-| условие-порядка-окна |--+---------------------------------------+--' '-| условие-группы-суммирования-окна |--' >---------------------------------------------------------------| условие-порядка-окна .-,-------------------------------------------------. V .-| опция ASC |---. | |---ORDER BY-----выражение-ключа-сортировки--+-----------------+--+-> '-| опция DESC |--' >---------------------------------------------------------------| опция ASC .-NULLS LAST--. |---ASC--+-------------+----------------------------------------| '-NULLS FIRST-' опция DESC .-NULLS FIRST--. |---DESC--+--------------+--------------------------------------| '-NULLS LAST---' условие-группы-суммирования-окна |---+-ROWS--+---+-| начало-группы |-+---------------------------| '-RANGE-' +-| группа-между |--+ '-| конец-группы |--' конец-группы |---+-UNBOUNDED FOLLOWING-------------+-------------------------| '-константа-без-знака--FOLLOWING--' В описании условия-порядка-окна: NULLS FIRST При упорядочении окна пустые значения считаются идущими в порядке сортировки перед всеми непустыми значениями. NULLS LAST При упорядочении окна пустые значения считаются идущими в порядке сортировки после всех непустых значений. В описании условия-группы-суммирования-окна: условие-группы-суммирования-окна Группа суммирования строки R - это набор строк, определяемых относительно R в упорядочении строк раздела R. Это условие задает группу суммирования. Если это условие не задано, по умолчанию используется условие RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, генерирующее результат суммирования с накоплением. ROWS Указывает, что группа суммирования определяется через число строк. RANGE Указывает, что группа суммирования определяется через расстояние от ключа сортировки. начало-группы Задает начальную точку для группы суммирования. Конец группы суммирования - текущая строка. Условие начало-группы эквивалентно условию группа-между типа "BETWEEN начало-группы AND CURRENT ROW". группа-между Задает начало и конец группы суммирования в виде ROWS или RANGE. конец-группы Задает конечную точку для группы суммирования. Начало группы суммирования - текущая строка. Условие конец-группы эквивалентно условию группа-между типа "BETWEEN CURRENT ROW AND конец-группы". UNBOUNDED PRECEDING Включить весь раздел до текущей строки. Это условие можно задать с ROWS или с RANGE. Его можно также задать с несколькими выражениями-ключей-сортировки в условии-порядка-окна. UNBOUNDED FOLLOWING Включить весь раздел после текущей строки. Это условие можно задать с ROWS или с RANGE. Его можно также задать с несколькими выражениями-ключей-сортировки в условии-порядка-окна. CURRENT ROW Задает начало или конец группы суммирования на основе текущей строки. Если задано условие ROWS, границей группы суммирования будет текущая строка. Если задано условие RANGE, граница группы суммирования будет включать набор строк с теми же значениями выражений-ключей-сортировки, что и текущая строка. Это условие нельзя задавать в границе-группы-2, если в границе-группы-1 задано значение FOLLOWING. значение PRECEDING Задает диапазон или число строк, идущих перед текущей строкой. Если задано условие ROWS, значение - это положительное целое число, обозначающее число строк. Если задано условие RANGE, тип данных значения должен быть совместим с типом данных выражения-ключа-сортировки условия-порядка-окна. Может быть только одно выражение-ключа-сортировки и тип данных этого выражения-ключа-сортировки должен допускать вычитание. Это условие нельзя задавать в границе-группы-2, если в границе-группы-1 задано CURRENT ROW или значение FOLLOWING. значение FOLLOWING Задает диапазон или число строк, идущих после текущей строки. Если задано условие ROWS, значение - это положительное целое число, обозначающее число строк. Если задано условие RANGE, тип данных значения должен быть совместим с типом данных выражения-ключа-сортировки условия-порядка-окна. Может быть только одно выражение-ключа-сортировки и тип данных этого выражения-ключа-сортировки должен допускать сложение. 38.2.3.3 Справочник по последовательностям В конец раздела Expressions (Выражения) после "Subtype Treatment" (Использование подтипа) надо добавить следующую информацию. ссылка-на-последовательность |--+-| выражение-nextval |-+------------------------------------| '-| выражение-prevval |-' выражение-nextval |---NEXTVAL FOR--имя-последовательности-------------------------| выражение-prevval |---PREVVAL FOR--имя-последовательности-------------------------| NEXTVAL FOR имя-последовательности Выражение NEXTVAL возвращает следующее значение для последовательности, задаваемой именем-последовательности. PREVVAL FOR имя-последовательности Выражение PREVVAL возвращает самое последнее значение для заданной последовательности, сгенерированное для предыдущего оператора в текущем сеансе. К этому значению можно повторно обращаться с помощью выражений PREVVAL, задавая имя последовательности. В одном операторе может быть несколько экземпляров выражений PREVVAL с тем же именем последовательности; все они вернут одно и то же значение. Выражение PREVVAL можно использовать, только если выражение NEXTVAL с тем же именем последовательности уже было использовано в текущем сеансе пользователя (в текущей или одной из предыдущих транзакций) (SQLSTATE 51035). Прим.:Когда имя последовательности задано в выражении NEXTVAL, для нее генерируется новое значение. Однако если в запросе есть несколько экземпляров выражения NEXTVAL с тем же именем последовательности, счетчик последовательности увеличивается только один раз для каждой строки результата. К самому последнему сгенерированному значению последовательности можно повторно обращаться с помощью выражения PREVVAL с именем этой последовательности. В одном операторе может быть несколько экземпляров выражений PREVVAL с тем же именем последовательности. Одно и то же значение последовательности может использоваться в качестве уникального ключа в двух различных таблицах - получите значение последовательности для первой строки с помощью выражения NEXTVAL (при этом будет сгенерировано новое значение последовательности) и используйте выражение PREVVAL для другой строки (этот экземпляр PREVVAL возвращает значение последовательности, сгенерированное предыдущим выражением NEXTVAL), как показано ниже: INSERT INTO order(orderno, custno) VALUES (NEXTVAL FOR order_seq, 123456); INSERT INTO line_item (orderno, partno, quantity) VALUES (PREVVAL FOR order_seq, 987654, 1); Примеры мест, где могут быть заданы выражения NEXTVAL и PREVVAL: оператор-выборки или оператор SELECT INTO: внутри условия-выборки, если оператор не содержит ключевого слова DISTINCT, условия GROUP BY, условия ORDER BY, ключевого слова UNION, ключевого слова INTERSECT или ключевого слова EXCEPT оператор INSERT: в условии VALUES оператор INSERT: внутри условия-выборки в полной выборке оператор UPDATE: внутри условия-выборки в полной выборке в выражении в условии SET (оператор UPDATE с поиском или с указанием позиции) оператор VALUES INTO: внутри условия-выборки в полной выборке в выражении Примеры мест, где нельзя задавать выражения NEXTVAL и PREVVAL (SQLSTATE 428F9): условие JOIN полного внешнего объединения значение DEFAULT для столбца в операторе CREATE TABLE или ALTER TABLE определение генерируемого столбца в операторе CREATE TABLE или ALTER TABLE условие проверочного ограничения оператор CREATE TRIGGER оператор CREATE VIEW оператор CREATE METHOD оператор CREATE FUNCTION. Кроме того, выражение NEXTVAL нельзя задавать (SQLSTATE 428F9) в: выражении CASE списке параметров функции сводки подзапросе операторе SELECT, который содержит операцию DISTINCT условии JOIN объединения условии GROUP BY оператора SELECT операторе SELECT, который объединен с другим оператором SELECT с помощью оператора множества UNION, INTERSECT или EXCEPT вложенном табличном выражении списке параметров табличной функции условии WHERE оператора SELECT, DELETE или UPDATE условии ORDER BY списке параметров оператора CALL. Когда для последовательности генерируется значение, это значение используется; затем, когда значение требуется в следующий раз, генерируется новое значение. Это так, даже если оператор, содержащий выражение NEXTVAL, завершается с ошибкой. Если оператор INSERT содержит выражение NEXTVAL в списке VALUES для столбца и при выполнении этого оператора в некоторый момент возникла ошибка (это может быть ошибка генерации следующего значения последовательности или ошибка, связанная со значением для другого столбца), операция вставки будет неудачной, но значение, сгенерированное для этой последовательности будет считаться использованным. В некоторых случаях повторное выполнение того же оператора INSERT может быть успешным. Например, предположим, что ошибка вызвана тем, что для столбца, для которого используется NEXTVAL, существует индекс уникальности, и сгенерированное значение последовательности уже существует в этом индексе. Возможно, что следующего сгенерированного для последовательности значения еще не будет в этом индексе и поэтому повторное выполнение операции INSERT будет успешным. Если при генерации значения для последовательности превышено максимальное значение для этой последовательности (или минимальное значение для убывающей последовательности) и циклическая генерация не разрешена, возникнет ошибка (SQLSTATE 23522). В этом случае пользователь должен использовать оператор ALTER для этой последовательности, чтобы изменить ее и расширить диапазон допустимых значений или разрешить циклическую генерацию, или отбросить (DROP) эту последовательность и создать (CREATE) новую, с другим типом данных, имеющим больший диапазон значений. Например, последовательность может быть определена с типом данных SMALLINT; со временем она исчерпает все возможные значения. Чтобы переопределить эту последовательность как INTEGER, нужно отбросить и заново создать эту последовательность с новым определением. Ссылка на PREVVAL в операторе SELECT для указателя дает значение, сгенерированное для заданной последовательности до открытия указателя. Однако закрытие указателя может повлиять на значения, возвращаемые PREVVAL для заданной последовательности в последующих операторах и даже в том же самом операторе, если указатель открывается повторно. Такая ситуация возникает, если оператор SELECT для указателя содержит ссылку на NEXTVAL с тем же именем последовательности. Примеры: В этих примерах подразумевается, что существуют таблица с именем "order" и последовательность с именем "order_seq", созданная следующим образом: CREATE SEQUENCE order_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 24 Некоторые примеры, как при помощи выражения NEXTVAL генерировать значения созданной выше последовательности "order_seq": INSERT INTO order(orderno, custno) VALUES (NEXTVAL FOR order_seq, 123456); или UPDATE order SET orderno = NEXTVAL FOR order_seq WHERE custno = 123456; или VALUES NEXTVAL FOR order_seq INTO :hv_seq; 38.3 Глава 4. Functions (Функции) 38.3.1 Включение новых функций и процедур В пакетах FixPak Версии 7 появились новые встроенные скалярные функции SQL. Описание этих функций смотрите в обновлениях справочника SQL Reference. Новые функции не включаются автоматически в каждой базе данных при обновлении кода сервера базы данных до нового уровня. Чтобы включить эти новые функции, системный администратор должен выполнить команду db2updv7, указав каждую базу данных на сервере. Эта команда создает в базе данных запись, гарантирующую, что никакой объект базы данных, созданный до выполнения этой команды, не использует существующую функцию с сигнатурой, которая может совпасть с сигнатурой новой функции. Информацию о включении функций MQSeries (определяемых в схеме MQDB2) смотрите в разделе MQSeries. 38.3.2 Скалярные функции 38.3.2.1 ABS или ABSVAL >>-+-ABS----+--(выражение)------------------------------------->< '-ABSVAL-' Схема - SYSIBM. Эта функция впервые стала доступна в FixPak 2 Версии 7.1. Прим.:Версия SYSFUN функции ABS (или ABSVAL) по-прежнему доступна. Возвращает абсолютную величину аргумента. Аргументом является выражение, возвращающее значение любого встроенного числового типа данных. У результата функции такой же тип данных и атрибут длины, как у аргумента. Если значение аргумента может быть пустым или если в конфигурации базы данных для параметра DFT_SQLMATHWARN задано значение YES, значение результата может быть пустым; если значение аргумента - пустое, то и значение результата - пустое. Например: ABS(-51234) возвращает INTEGER со значением 51234. 38.3.2.2 DECRYPT_BIN и DECRYPT_CHAR >>-+-DECRYPT_BIN--+---------------------------------------------> '-DECRYPT_CHAR-' >----(--шифрованные-данные--+-----------------------------+---)-->< '-,--выражение-строки-пароля--' Схема - SYSIBM. Эта функция впервые стала доступна в FixPak 3 Версии 7.1. Функции DECRYPT_BIN и DECRYPT_CHAR возвращают значение, полученное в результате дешифрования шифрованных-данных. Используемый для дешифрования пароль - это или значение выражения-строки-пароля, или значение ENCRYPTION PASSWORD (заданное с помощью оператора SET ENCRYPTION PASSWORD). Функции DECRYPT_BIN и DECRYPT_CHAR могут дешифровать только значения, зашифрованные функцией ENCRYPT (SQLSTATE 428FE). шифрованные-данные Выражение, возвращающее значение CHAR FOR BIT DATA или VARCHAR FOR BIT DATA - полная строка шифрованных данных, созданная функцией ENCRYPT. выражение-строки-пароля Выражение, возвращающее значение типа CHAR или VARCHAR длиной не менее 6 и не более 127 байт (SQLSTATE 428FC). Это должен быть тот же пароль, который использовался для шифрования данных, иначе возникнет ошибка дешифрования (SQLSTATE 428FD). Если аргумент пароля не задан или имеет пустое значение, для дешифрования данных используется значение ENCRYPTION PASSWORD, заданное для этого сеанса (SQLSTATE 51039). Результат функции DECRYPT_BIN имеет тип VARCHAR FOR BIT DATA. Результат функции DECRYPT_CHAR имеет тип VARCHAR. Если шифрованные-данные содержат подсказку, эта функция не возвращает подсказку. Атрибут длины результата равен атрибуту длины типа данных шифрованных-данных минус 8 байт. Реальная длина возвращаемого функцией значения будет совпадать с длиной исходной строки, которая была зашифрована. Если шифрованные-данные содержат дополнительные байты после шифрованной строки, эти байты не возвращаются этой функцией. Если значение первого аргумента может быть пустым, значение результата может быть пустым; если первый аргумент имеет пустое значение, то и результат будет иметь пустое значение. Если данные дешифруются в другой системе, использующей кодовую страницу, отличающуюся от кодовой страницы, в которой выполнялось шифрование, длина дешифрованного значения при преобразовании его в кодовую страницу базы данных может увеличиться. В таких ситуациях значение шифрованные-данные должно быть преобразовано в строку VARCHAR с большим числом байт. Дополнительную информацию об использовании этой функции смотрите в разделах 38.3.2.3, ENCRYPT и 38.3.2.4, GETHINT. Примеры: Пример 1: В этом примере для хранения пароля шифрования используется значение ENCRYPTION PASSWORD. SET ENCRYPTION PASSWORD = 'Ben123'; INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832'); SELECT DECRYPT_CHAR(SSN) FROM SSN; Возвращается значение '289-46-8832'. Пример 2: В этом примере пароль шифрования задается явно. SELECT DECRYPT_CHAR(SSN,'Ben123') FROM SSN; Возвращается значение '289-46-8832'. 38.3.2.3 ENCRYPT >>-ENCRYPT------------------------------------------------------> >----(--выражение-строки-данных--+-----------------------------------------------------------------+---)-> '-,--выражение-строки-пароля--+--------------------------------+--' '-,--выражение-строки-подсказки--' >-------------------------------------------------------------->< Схема - SYSIBM. Эта функция впервые стала доступна в FixPak 3 Версии 7.1. Функция ENCRYPT возвращает значение, полученное в результате шифрования выражения-строки-данных. Используемый для шифрования пароль - это или значение выражения-строки-пароля, или значение ENCRYPTION PASSWORD (заданное с помощью оператора SET ENCRYPTION PASSWORD). выражение-строки-данных Выражение, возвращающее значение типа CHAR или VARCHAR, которое должно быть зашифровано. Атрибут длины для типа данных выражение-строки-данных не должен превосходить 32663, если аргумент выражение-строки-подсказки не задан, и 32631, если аргумент выражение-строки-подсказки задан (SQLSTATE 42815). выражение-строки-пароля Выражение, возвращающее значение типа CHAR или VARCHAR длиной не менее 6 и не более 127 байт (SQLSTATE 428FC). Это значение представляет собой пароль, используемый для шифрования выражение-строки-данных. Если аргумент пароля не задан или имеет пустое значение, для шифрования данных используется значение ENCRYPTION PASSWORD, заданное для этого сеанса (SQLSTATE 51039). выражение-строки-подсказки Выражение, возвращающее значение типа CHAR или VARCHAR длиной до 32 байт, помогающее владельцу данных вспомнить пароль (например, 'океан') в качестве подсказки для пароля ('Тихий'). Если задано значение подсказки, подсказка включается в результат и ее можно получить с помощью функции GETHINT. Если этот аргумент не задан или имеет пустое значение, подсказка не включается в результат. Тип данных результата этой функции - VARCHAR FOR BIT DATA. Атрибут длины результата: Если задан необязательный параметр подсказки, атрибут длины нешифрованных данных + 8 байт + число байт до следующей 8-байтной границы + 32 байта для подсказки. Если подсказка не задана, атрибут длины нешифрованных данных + 8 байт + число байт до следующей 8-байтной границы. Если значение первого аргумента может быть пустым, значение результата может быть пустым; если первый аргумент имеет пустое значение, то и результат будет иметь пустое значение. Учтите, что шифрованный результат имеет большую длину, чем значение выражение-строки-данных. Поэтому присваивая шифрованные значения, убедитесь, что размер места назначения достаточен, чтобы вместить все шифрованное значения. Примечания: Алгоритм шифрования: Внутренний алгоритм шифрования использует блочный шифр RC2 с дополнением, 128-битный секретный ключ строится на основе пароля с помощью алгоритма хэширования MD2. Пароли шифрования и данные: За поддержку паролей отвечает пользователь. После того как данные зашифрованы, для их дешифрования можно использовать только пароль, с которым они были зашифрованы (SQLSTATE 428FD). Будьте осторожны при использовании переменных CHAR для задания значений пароля, так как они могут быть дополнены пробелами. Результат шифрования может содержать пустой символ-ограничитель и другие специальные символы. Определение столбца таблицы: При определении столбцов и типов данных, которые будут содержать зашифрованные данные, всегда вычисляйте атрибут длины, как указано ниже. Для шифрованных данных без подсказки: Длина столбца шифрованных данных = максимальная длина нешифрованных данных + 8 байт + число байт до следующей 8-байтной границы. Для шифрованных данных с подсказкой: Длина столбца шифрованных данных = максимальная длина нешифрованных данных + 8 байт + число байт до следующей 8-байтной границы + 32 байта для подсказки. Все операции присваивания или преобразования в тип меньшей длины, чем указанная выше, могут привести в результате к невозможности расшифровать данные и к потере данных. Пробелы (возможные значения зашифрованных данных) могут быть усечены при сохранении данных в слишком коротком столбце. Пример вычислений длины столбца Максимальная длина нешифрованных данных 6 байт 8 байт 8 байт Число байт до следующей 8-байтной границы 2 байта --------- Длина столбца шифрованных данных 16 байт Максимальная длина нешифрованных данных 32 байта 8 байт 8 байт Число байт до следующей 8-байтной границы 8 байт --------- Длина столбца шифрованных данных 48 байт Управление шифрованными данными: Шифрованные данные могут быть дешифрованы только на серверах, которые поддерживают функции дешифрования, соответствующие функции ENCRYPT. Поэтому репликацию столбцов, содержащих шифрованные данные, следует производить только на серверы, поддерживающие функцию DECRYPT_BIN или DECRYPT_CHAR. Дополнительную информацию об использовании этой функции смотрите в разделах 38.3.2.2, DECRYPT_BIN и DECRYPT_CHAR и 38.3.2.4, GETHINT. Примеры: Пример 1: В этом примере для хранения пароля шифрования используется значение ENCRYPTION PASSWORD. SET ENCRYPTION PASSWORD = 'Ben123'; INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832'); Пример 2: В этом примере пароль шифрования задается явно. INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832','Ben123',''); Пример 3: Сохраняется подсказка 'океан', помогающая пользователю вспомнить пароль шифрования 'Тихий'. INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832','Тихий','океан'); 38.3.2.4 GETHINT >>-GETHINT--(--шифрованные-данные--)--------------------------->< Схема - SYSIBM. Эта функция впервые стала доступна в FixPak 3 Версии 7.1. Функция GETHINT возвращает подсказку пароля, если она содержится в шифрованных-данных. Подсказка пароля - это фраза, помогающая владельцу данных вспомнить пароль (например, 'океан' в качестве подсказки для пароля 'Тихий'). шифрованные-данные Выражение, возвращающее значение CHAR FOR BIT DATA или VARCHAR FOR BIT DATA - полная строка шифрованных данных, созданная функцией ENCRYPT (SQLSTATE 428FE). Результат функции имеет тип VARCHAR(32). Значение результата может быть пустым; если параметр подсказки не добавлен в шифрованные-данные функцией ENCRYPT или если первый аргумент имеет пустое значение, результат будет иметь пустое значение. Дополнительную информацию об использовании этой функции смотрите в разделах 38.3.2.2, DECRYPT_BIN и DECRYPT_CHAR и 38.3.2.3, ENCRYPT. Пример: В этом примере сохраняется подсказка 'океан', помогающая пользователю вспомнить пароль шифрования 'Тихий'. INSERT INTO EMP (SSN) VALUES ENCRYPT('289-46-8832', 'Тихий','океан'); SELECT GETHINT(SSN) FROM EMP; Возвращается значение 'океан'. 38.3.2.5 IDENTITY_VAL_LOCAL >>-IDENTITY_VAL_LOCAL--(--)------------------------------------>< Схема - SYSIBM. Эта процедура впервые стала доступна в FixPak 3 Версии 7.1. Функция IDENTITY_VAL_LOCAL - это недетерминированная функция, возвращающая самое последнее значение, присвоенное столбцу идентификации в результате выполнения оператора вставки одной строки (INSERT) с условием VALUES. У этой функции нет входных параметров. Тип данных результата - DECIMAL(31,0), независимо от типа данных соответствующего столбца идентификации. Возвращаемое этой функцией значение - это значение, присвоенное столбцу идентификации таблицы, указанной в самом последнем операторе вставки одной строки INSERT. В этом операторе INSERT должно использоваться условие VALUES для таблицы, содержащей столбец идентификации. Кроме того, этот оператор INSERT должен быть выдан на том же уровне обработки 1 ; это значит, что это значение доступно локально на том уровне обработки, на котором оно было присвоено, пока оно не будет замещено новым присвоенным значением. Присвоенное значение - это или значение, заданное пользователем (если этот столбец идентификации определен как GENERATED BY DEFAULT), или значение идентификации, сгенерированное DB2. В следующих ситуациях эта функция возвращает пустое значение: Если на текущем уровне обработки не был выполнен оператор вставки одной строки INSERT с условием VALUES для таблицы со столбцом идентификации. Если после выполнения последнего присвоившего значение оператора INSERT была выполнена операция COMMIT или ROLLBACK единицы работы 2 . На результат этой функции не влияют: Оператор вставки одной строки INSERT с условием VALUES для таблицы, не содержащей столбцов идентификации. Оператор вставки нескольких строк INSERT с условием VALUES. Оператор INSERT с полной выборкой. Оператор ROLLBACK TO SAVEPOINT. Примечания: Выражения в условии VALUES оператора INSERT вычисляются перед присваиванием значений столбцам назначения этого оператора INSERT. Поэтому вызов функции IDENTITY_VAL_LOCAL в условии VALUES оператора INSERT возвращает самое последнее значение столбца идентификации, присвоенное в предыдущем операторе INSERT. Функция вернет пустое значение, если на том же уровне обработки, на котором вызвана функция IDENTITY_VAL_LOCAL, не было выполнено предыдущих операторов вставки одной строки (INSERT) с условием VALUES для таблицы со столбцом идентификации. Значение столбца идентификации для таблицы, для которой определен триггер, можно узнать внутри триггера, используя временную переходную переменную триггера для столбца идентификации. При вызове функции IDENTITY_VAL_LOCAL внутри условия триггера операции вставки она возвращает пустое значение. Для таблицы может существовать несколько триггеров BEFORE или AFTER для операций вставки. В этих случаях каждый триггер выполняется отдельно и значения идентификации, присваиваемые одним действием триггера, не могут быть получены в других действиях триггеров при помощи функции IDENTITY_VAL_LOCAL. Это верно, даже если несколько действий триггеров по смыслу определены на одном уровне. В общем случае не рекомендуется использовать функцию IDENTITY_VAL_LOCAL в теле триггера BEFORE операции вставки. При вызове функции IDENTITY_VAL_LOCAL внутри действия триггера BEFORE операции вставки она возвращает пустое значение. Значение для столбца идентификации таблицы, для которой определен триггер, нельзя получить с помощью вызова функции IDENTITY_VAL_LOCAL внутри действия триггера BEFORE операции вставки. Однако значение столбца идентификации можно узнать внутри действия триггера, используя переходную переменную триггера для столбца идентификации. При вызове функции IDENTITY_VAL_LOCAL внутри действия триггера AFTER операции вставки 3 она возвращает значение, присвоенное столбцу идентификации таблицы, указанной в самом последнем вызванном в том же действии триггера операторе вставки одной строки INSERT с условием VALUES для таблицы, содержащей столбец идентификации. Если в том же действии триггера перед вызовом функции IDENTITY_VAL_LOCAL не были выполнены операторы вставки одной строки INSERT с условием VALUES для таблицы со столбцом идентификации, функция IDENTITY_VAL_LOCAL вернет пустое значение. Поскольку результаты функции IDENTITY_VAL_LOCAL не детерминированы, результат вызова этой функции в операторе SELECT указателя может быть другим для каждого оператора FETCH. Присвоенное значение - это значение, действительно присвоенное столбцу идентификации (то есть это значение, которое возвращает последующий оператор SELECT). Это значение не обязательно должно совпадать со значением, заданным в условии VALUES оператора INSERT или со значением, сгенерированным DB2. Присвоенное значение может быть значением, заданным в теле триггера BEFORE для операции вставки в операторе задания временной переменной (SET) для временной переменной триггера, связанной со столбцом идентификации. После возникновения ошибки выполнения оператора вставки одной строки INSERT с условием VALUES для таблицы со столбцом идентификации эта функция возвращает непредсказуемый результат. Возвращаемое значение может быть значением, которое вернула бы эта функция при вызове ее перед ошибочным оператором INSERT, или это может быть значение, которое было бы присвоено оператором INSERT в случае его успешного выполнения. Действительное возвращаемое значение зависит от места возникновения ошибки и поэтому непредсказуемо. Примеры: Пример 1: Присваивает переменной IVAR значение, присвоенное столбцу идентификации в таблице EMPLOYEE. Если это была первая операция вставки в таблицу EMPLOYEE, переменная IVAR должна иметь значение 1. CREATE TABLE EMPLOYEE (EMPNO INTEGER GENERATED ALWAYS AS IDENTITY, NAME CHAR(30), SALARY DECIMAL(5,2), DEPTNO SMALLINT) Пример 2: Функция IDENTITY_VAL_LOCAL, вызванная в операторе INSERT, возвращает значение, присвоенное предыдущим оператором вставки одной строки INSERT с условием VALUES для таблицы со столбцом идентификации. Для этого примера предположим, что есть две таблицы - T1 и T2. Обе эти таблицы содержат столбец идентификации с именем C1. DB2 генерирует для столбца C1 таблицы T1 последовательные значения, начиная с 1, а для столбца C2 таблицы T2 - последовательные значения, начиная с 10. CREATE TABLE T1 (C1 INTEGER GENERATED ALWAYS AS IDENTITY, C2 INTEGER), CREATE TABLE T2 (C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10), C2 INTEGER), INSERT INTO T1 (C2) VALUES (5), INSERT INTO T1 (C2) VALUES (6), SELECT * FROM T1 Это дает такой результат: C1 C2 ----------- ---------- 1 5 2 6 Теперь объявим функцию для переменной IVAR: VALUES IDENTITY_VAL_LOCAL() INTO :IVAR В этот момент функция IDENTITY_VAL_LOCAL вернет в переменную IVAR значение 2, поскольку это самое последнее значение, присвоенное DB2. Следующий оператор INSERT вставляет одну строку в таблицу T2; при этом столбцу C2 присваивается значение 2, возвращенное функцией IDENTITY_VAL_LOCAL. INSERT INTO T2 (C2) VALUES (IDENTITY_VAL_LOCAL()); SELECT * FROM T2 WHERE C1 = DECIMAL(IDENTITY_VAL_LOCAL(),15,0) Это дает такой результат: C1 C2 ----------------- ---------- 10. 2 Если вызвать функцию IDENTITY_VAL_LOCAL после этой операции вставки, она вернет значение 10, сгенерированное DB2 для столбца C1 таблицы T2. В среде с вложенными уровнями обработки, содержащей триггеры, функция IDENTITY_VAL_LOCAL используется для получения значения идентификации, присвоенного на конкретном уровне, хотя при этом могут также существовать значения, присвоенные на более низких уровнях. Допустим, существуют три таблицы EMPLOYEE, EMP_ACT и ACCT_LOG. Для операций вставки таблицы EMPLOYEE определен триггер AFTER, который выполняет дополнительные операции вставки в таблицы EMP_ACT и ACCT_LOG. CREATE TABLE EMPLOYEE (EMPNO SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1000), NAME CHAR(30), SALARY DECIMAL(5,2), DEPTNO SMALLINT); CREATE TABLE EMP_ACT (ACNT_NUM SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1), EMPNO SMALLINT); CREATE TABLE ACCT_LOG (ID SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 100), ACNT_NUM SMALLINT, EMPNO SMALLINT); CREATE TRIGGER NEW_HIRE AFTER INSERT ON EMPLOYEE REFERENCING NEW AS NEW_EMP FOR EACH ROW MODE DB2SQL BEGIN ATOMIC INSERT INTO EMP_ACT (EMPNO) VALUES (NEW_EMP.EMPNO); INSERT INTO ACCT_LOG (ACNT_NUM EMPNO) VALUES (IDENTITY_VAL_LOCAL(), NEW_EMP.EMPNO); END Первый оператор INSERT триггера вставляет строку в таблицу EMP_ACT. Чтобы задать, что значение идентификации для столбца EMPNO таблицы EMPLOYEE должно быть скопировано в столбец EMPNO таблицы EMP_ACT, в этом операторе INSERT используется переходная переменная триггера для столбца EMPNO таблицы EMPLOYEE. Для получения значения, присвоенного столбцу EMPNO таблицы EMPLOYEE, нельзя использовать функцию IDENTITY_VAL_LOCAL. Это связано с тем, что на этом же уровне обработки не был вызван оператор INSERT и поэтому, если вызвать функцию IDENTITY_VAL_LOCAL в условии VALUES оператора INSERT для таблицы EMP_ACT, эта функция вернет пустое значение. Этот оператор INSERT для таблицы EMP_ACT также генерирует новое значение столбца идентификации для столбца ACNT_NUM. Второй оператор INSERT триггера вставляет строку в таблицу ACCT_LOG. Чтобы задать, что значение идентификации, присвоенное столбцу ACNT_NUM таблицы EMP_ACT предыдущим оператором INSERT действия триггера, должно быть скопировано в столбец ACNT_NUM таблицы ACCT_LOG, в этом операторе INSERT используется вызов функции IDENTITY_VAL_LOCAL. Столбцу EMPNO присваивается то же значение, что и столбцу EMPNO таблицы EMPLOYEE. В вызывающей программе (то есть на уровне, на котором выдается оператор INSERT для таблицы EMPLOYEE) присвоим переменной IVAR значение, присвоенное столбцу EMPNO таблицы EMPLOYEE исходным оператором INSERT. INSERT INTO EMPLOYEE (NAME, SALARY, DEPTNO) VALUES ('Rupert', 989.99, 50); Содержимое этих трех таблиц после выполнения этого исходного оператора INSERT и всех действий триггеров будет таким: SELECT EMPNO, SUBSTR(NAME,10) AS NAME, SALARY, DEPTNO FROM EMPLOYEE; EMPNO NAME SALARY DEPTNO ----------- ----------- ---------------------------------- ----------- 1000 Rupert 989.99 50 SELECT ACNT_NUM, EMPNO FROM EMP_ACT; ACNT_NUM EMPNO ----------- ----------- 1 1000 SELECT * FROM ACCT_LOG; ID ACNT_NUM EMPNO ----------- ----------- ----------- 100 1 1000 Функция IDENTITY_VAL_LOCAL возвращает в качестве результата самое последнее значение, присвоенное столбцу идентификации на том же уровне обработки. После выполнения этого исходного оператора INSERT и всех действий триггеров функция IDENTITY_VAL_LOCAL вернет значение 1000, так как это значение, присвоенное столбцу EMPNO таблицы EMPLOYEE. Следующий оператор VALUES присваивает переменной IVAR значение 1000. Операция вставки в таблицу EMP_ACT (которая выполнялась позже операции вставки в таблицу EMPLOYEE, но на другом уровне вложенности) не влияет на результат вызова функции IDENTITY_VAL_LOCAL. VALUES IDENTITY_VAL_LOCAL() INTO :IVAR; 38.3.2.6 LCASE и UCASE (Unicode) В базе данных Unicode весь набор символов Unicode переводится в верхний (или в нижний) регистр в зависимости от значения свойств Unicode этих символов. Версии символов ASCII двойной ширины и римские цифры теперь преобразуются правильным образом. 38.3.2.7 MQPUBLISH >>-MQPUBLISH---(------------------------------------------------> >-----+---------------------------------------------+-----------> '-служба-издателя--,--+--------------------+--' '-правила-службы--,--' >----данные-сообщения-------------------------------------------> >-----+--------------------------------------+--)-------------->< '-,--тема--+------------------------+--' | (1) | '-,--id-корреляции-------' Примечания: Нельзя задать id-корреляции, если ранее не заданы служба и правила. Схема - MQDB2. Функция MQPUBLISH публикует данные в MQSeries. Эта функция требует установки либо MQSeries Publish/Subscribe, либо MQSeries Integrator. Дальнейшие подробности смотрите на странице www.ibm.com/software/MQSeries. Функция MQPUBLISH публикует данные, содержащиеся в данных-сообщения, через издатель MQSeries, заданный службой-издателя, с качеством обслуживания (QoS), заданным правилами-службы. Можно задать необязательные параметры - тему сообщения и пользовательские ID корреляции сообщения. Функция возвращает значение '1' при успешном выполнении и '0' при неудаче. служба-издателя Строка, содержащая логическое назначение MQSeries для отправки сообщения. Служба-издателя, если она задана, должна указывать точку службы издателя, определенную в файле хранилища AMT.XML. Точка службы - это логическая конечная точка отправки или получения сообщения. В число определений точек службы входит имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-издателя не задана, используется DB2.DEFAULT.PUBLISHER. Максимальный размер службы-издателя - 48 символов. правила-службы Строка, содержащая правила службы MQSeries AMI, используемую для обработки этого сообщения. Правила-службы, если они заданы, должны указывать правила, определенные в файле хранилища AMT.XML. Правила службы определяет набор опций QoS (качества обслуживания), используемых для этой операции с сообщениями. Эти опции включают приоритет сообщения и срок действия сообщения. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если правила-службы не заданы, используется DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. данные-сообщения Строковое выражение, содержащее данные для отправки через MQSeries. Максимальный размер - 4000 символов. тема Строковое выражение, содержащее тему публикуемого сообщения. Если тема не задана, с сообщением не будет связана тема. Максимальный размер темы - 40 символов. Можно задать в одной строке несколько тем (длиной до 40 символов). Темы должны отделяться друг от друга двоеточиями. Например, "t1:t2:третья тема" указывает, что у сообщения будет три темы: t1, t2 и "третья тема". id-корреляции Необязательное строковое выражение, содержащее идентификатор корреляции сообщения. id-корреляции часто задается в сценариях запросов и ответов, чтобы связать запросы с ответами. Если идентификатор корреляции не задан, для сообщения не добавляется идентификатор корреляции. Максимальный размер id-корреляции - 24 символа. Примеры Пример 1: Этот пример публикует строку "Проверка 123" через службу издателя по умолчанию (DB2.DEFAULT.PUBLISHER) с использованием правил по умолчанию (DB2.DEFAULT.POLICY). Идентификатор корреляции и тема сообщения не задаются. VALUES MQPUBLISH('Проверка 123') Пример 2: Этот пример публикует строку "Проверка 345" через службу издателя "MYPUBLISHER" с темой "ИСПЫТАНИЯ". Используются правила по умолчанию, идентификатор корреляции не задается. VALUES MQPUBLISH('MYPUBLISHER','Проверка 345', 'ИСПЫТАНИЯ') Пример 3: Этот пример публикует строку "Проверка 678" через службу издателя "MYPUBLISHER" с правилами "MYPOLICY" и идентификатором корреляции "TEST1". Сообщение публикуется с темой "ИСПЫТАНИЯ". VALUES MQPUBLISH('MYPUBLISHER','MYPOLICY','Проверка 678','ИСПЫТАНИЯ','TEST1') Пример 4: Этот пример публикует строку "Проверка 901" через службу издателя "MYPUBLISHER" с темой "ИСПЫТАНИЯ" с использованием правил по умолчанию (DB2.DEFAULT.POLICY) и без идентификатора корреляции. VALUES MQPUBLISH('Проверка 901','ИСПЫТАНИЯ') Во всех примерах при успешном выполнении возвращается значение '1'. 38.3.2.8 MQREAD >>-MQREAD---(----+----------------------------------------+--)-->< '-служба-приема--+--------------------+--' '-,--правила-службы--' Схема - MQDB2. Функция MQREAD возвращает сообщение из положения MQSeries, заданного службой-приема, с использованием правил качества обслуживания (QoS), заданных правилами-службы. Выполнение этой операции не удаляет сообщение из очереди, связанной со службой-приема, а возвращает сообщение в начало очереди. Возвращаемое значение имеет тип VARCHAR(4000) и содержит сообщение. Если нет доступных сообщений, возвращается пустое значение. служба-приема Строка, содержащая логическое назначение MQSeries, откуда должно быть принято сообщение. Служба-приема, если она задана, должна указывать точку службы, определенную в файле хранилища AMT.XML. Точка службы - это логическая конечная точка отправки или приема сообщения. Определения точек службы включают имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-приема не задана, используется DB2.DEFAULT.SERVICE. Максимальный размер службы-приема - 48 символов. правила-службы Строка, содержащая правила службы MQSeries AMI для обработки этого сообщения. Правила-службы, если они заданы, должны указывать правила, определенные в файле хранилища AMT.XML. Правила службы определяет набор опций QoS (качества обслуживания), используемых для этой операции с сообщениями. Эти опции включают приоритет сообщения и срок действия сообщения. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если правила-службы не заданы, используется DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. Примеры: Пример 1: Этот пример читает сообщение из начала очереди, заданной службой по умолчанию (DB2.DEFAULT.SERVICE), с использованием правил по умолчанию (DB2.DEFAULT.POLICY). VALUES MQREAD() Пример 2: Этот пример читает сообщение из начала очереди, заданной службой "MYSERVICE" с использованием правил по умолчанию (DB2.DEFAULT.POLICY). VALUES MQREAD('MYSERVICE') Пример 3: Этот пример читает сообщение из начала очереди, заданной службой "MYSERVICE" с использованием правил "MYPOLICY". VALUES MQREAD('MYSERVICE','MYPOLICY') Все эти примеры при успешном выполнении возвращают содержимое сообщения в виде VARCHAR(4000). Если нет доступных сообщений, возвращается пустое значение. 38.3.2.9 MQRECEIVE >>-MQRECEIVE----------------------------------------------------> >----(--+---------------------------------------------------------------+---)-> '-служба-приема--+-------------------------------------------+--' '-,--правила-службы--+-------------------+--' '-,--id-корреляции--' >-------------------------------------------------------------->< Схема - MQDB2. Функция MQRECEIVE возвращает сообщение из положения MQSeries, заданного службой-приема, с использованием правил качества обслуживания (QoS), заданных правилами-службы. Выполнение этой операции удаляет сообщение из очереди, связанной со службой-приема. Если задан id-корреляции, возвращается первое сообщение с совпадающим идентификатором корреляции. Если id-корреляции не задан, возвращается сообщение из начала очереди. Возвращаемое значение имеет тип VARCHAR(4000) и содержит сообщение. Если нет доступных сообщений, возвращается пустое значение. служба-приема Строка, содержащая логическое назначение MQSeries, откуда принимается сообщение. Служба-приема, если она задана, должна указывать точку службы, определенную в файле хранилища AMT.XML. Точка службы - это логическая конечная точка отправки или приема сообщения. Определения точек службы включают имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-приема не задана, используется DB2.DEFAULT.SERVICE. Максимальный размер службы-приема - 48 символов. правила-службы Строка, содержащая правила службы MQSeries AMI для обработки этого сообщения. Правила-службы, если они заданы, должны указывать правила, определенные в файле хранилища AMT.XML 4 . Если правила-службы не заданы, используются DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. id-корреляции Строка, содержащая идентификатор корреляции сообщения. id-корреляции часто задается в сценариях запросов и ответов, чтобы связать запросы с ответами. Если этот параметр не задан, идентификатор корреляции не будет использоваться. Максимальный размер id-корреляции - 24 символа. Примеры: Пример 1: Этот пример получает сообщение из начала очереди, заданной службой по умолчанию (DB2.DEFAULT.SERVICE), с использованием правил по умолчанию (DB2.DEFAULT.POLICY). VALUES MQRECEIVE() Пример 2: Этот пример получает сообщение из начала очереди, заданной службой "MYSERVICE", с использованием правил по умолчанию (DB2.DEFAULT.POLICY). VALUES MQRECEIVE('MYSERVICE') Пример 3: Этот пример получает сообщение из начала очереди, заданной службой "MYSERVICE", с использованием правил "MYPOLICY". VALUES MQRECEIVE('MYSERVICE','MYPOLICY') Пример 4: Этот пример получает первое сообщение с идентификатором корреляции '1234', из начала очереди, заданной службой "MYSERVICE", с использованием правил "MYPOLICY". VALUES MQRECEIVE('MYSERVICE',MYPOLICY','1234') Все эти примеры при успешном выполнении возвращают содержимое сообщения в виде VARCHAR(4000). Если нет доступных сообщений, возвращается пустое значение. 38.3.2.10 MQSEND >>-MQSEND---(---------------------------------------------------> >-----+---------------------------------------------+-----------> '-служба-отправки--,--+--------------------+--' '-правила-службы--,--' >----данные-сообщения----+------------------------+--)--------->< | (1) | '-,--id-корреляции-------' Примечания: Нельзя задать id-корреляции, если ранее не заданы служба и правила. Схема - MQDB2. Функция MQSEND отправляет данные данные-сообщения, в положение MQSeries, заданное службой-отправки, используя правила качества обслуживания (QoS), заданные правилами-службы. Необязательный параметр id-корреляции позволяет задать произвольный идентификатор корреляции сообщения. Функция возвращает значение '1' при успешном выполнении и '0' при неудаче. данные-сообщения Строковое выражение, содержащее данные для отправки через MQSeries. Максимальный размер - 4000 символов. служба-отправки Строка, содержащая логическое назначение MQSeries для отправки сообщения. Служба-отправки, если она задана, указывает точку службы, определенную в файле хранилища AMT.XML. Точка службы - это логическая конечная точка для отправки или приема сообщения. В число определений точек службы входит имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-отправки не задана, используется значение DB2.DEFAULT.SERVICE. Максимальный размер службы-отправки - 48 символов. правила-службы Строка, содержащая правила службы MQSeries AMI для обработки этого сообщения. Правила-службы, если они заданы, должны указывать правила обслуживания, определенные в файле хранилища AMT.XML. Правила службы определяет набор опций QoS (качества обслуживания), используемых для этой операции с сообщениями. Эти опции включают приоритет сообщения и срок действия сообщения. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если правила-службы не заданы, используется значение по умолчанию DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. id-корреляции Необязательная строка, содержащая идентификатор корреляции сообщения. id-корреляции часто задается в сценариях запросов и ответов, чтобы связать запросы с ответами. Если идентификатор корреляции не задан, сообщение будет отправлено без идентификатора корреляции. Максимальный размер id-корреляции - 24 символа. Примеры: Пример 1: Этот пример отправляет строку "Проверка 123" на службу по умолчанию (DB2.DEFAULT.SERVICE), используя правила по умолчанию (DB2.DEFAULT.POLICY), без идентификатора корреляции. VALUES MQSEND('Проверка 123') Пример 2: Этот пример отправляет строку "Проверка 345" на службу "MYSERVICE", используя правила "MYPOLICY", без идентификатора корреляции. VALUES MQSEND('MYSERVICE','MYPOLICY','Проверка 345') Пример 3: Этот пример отправляет строку "Проверка 678" на службу "MYSERVICE", используя правила "MYPOLICY", с идентификатором корреляции "TEST3". VALUES MQSEND('MYSERVICE','MYPOLICY','Проверка 678','TEST3') Пример 4: Этот пример отправляет строку "Проверка 901" на службу "MYSERVICE", используя правила по умолчанию (DB2.DEFAULT.POLICY) без идентификатора корреляции. VALUES MQSEND('MYSERVICE','Проверка 901') Каждый из примеров возвращает скалярное значение '1' в случае успешного выполнения. 38.3.2.11 MQSUBSCRIBE >>-MQSUBSCRIBE---(----------------------------------------------> >-----+-----------------------------------------------+--тема---> '-служба-подписчика--,--+--------------------+--' '-правила-службы--,--' >----)--------------------------------------------------------->< Схема - MQDB2. Функция MQSUBSCRIBE служит для регистрации заинтересованности в сообщениях MQSeries, публикуемых по заданной теме. Служба-подписчика задает логическое назначение для сообщений, отвечающих заданной теме. Сообщения с подходящей темой помещаются в очередь, определенную службой-подписчика, и могут быть прочитаны или получены при помощи последующего вызова MQREAD, MQRECEIVE, MQREADALL или MQRECEIVEALL. Эта функция требует установки и конфигурирования системы публикации и подписки на основе MQSeries, например MQSeries Integrator или MQSeries Publish/Subscribe. Дальнейшие подробности смотрите на странице www.ibm.com/software/MQSeries. Функция возвращает значение '1' при успешном выполнении и '0' при неудаче. При успешном выполнении этой функции сервер публикации и подписки направит сообщения, отвечающие заданной теме, в точку службы, заданную службой-подписчика. служба-подписчика Строка, содержащая логическую точку подписки MQSeries для отправки сообщений, отвечающих заданной теме. Служба-подписчика, если она задана, должна указывать точку службы подписчиков, определенную в файле хранилища AMT.XML. Определения точек службы включают имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-подписчика не задана, используется DB2.DEFAULT.SUBSCRIBER. Максимальный размер службы-подписчика - 48 символов. правила-службы Строка, содержащая правила службы MQSeries AMI для обработки сообщения. Правила-службы, если они заданы, должны указывать правила, определенные в файле хранилища AMT.XML. Правила службы определяет набор опций качества обслуживания (QoS), используемых при этой операции с сообщениями. Эти опции включают приоритет сообщения и срок действия сообщения. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если правила-службы не заданы, используются DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. тема Строка, определяющая типы принимаемых сообщений. Для данной подписки будут приниматься только те сообщения, которые публикуются с заданными темами. Может сосуществовать одновременно несколько подписок. Максимальный размер темы - 40 символов. Можно задать в одной строке несколько тем (длиной до 40 символов). Темы должны отделяться друг от друга двоеточиями. Например, "t1:t2:третья тема" указывает, что у сообщения будет три темы: t1, t2 и "третья тема". Примеры: Пример 1: Этот пример регистрирует заинтересованность в сообщениях по теме "Погода". В качестве подписчика регистрируется служба-подписчика по умолчанию (DB2.DEFAULT.SUBSCRIBER), а качество обслуживания задается правилами обслуживания по умолчанию (DB2.DEFAULT.POLICY). VALUES MQSUBSCRIBE('Погода') Пример 2: В этом примере подписчик регистрирует заинтересованность в сообщениях по теме "Акции". Подписчик регистрируется как "PORTFOLIO-UPDATES" с правилами "BASIC-POLICY". VALUES MQSUBSCRIBE('PORTFOLIO-UPDATES','BASIC-POLICY','Акции') Каждый из примеров возвращает скалярное значение '1' при успешном выполнении. 38.3.2.12 MQUNSUBSCRIBE >>-MQUNSUBSCRIBE---(--------------------------------------------> >-----+-----------------------------------------------+--тема---> '-служба-подписчика--,--+--------------------+--' '-правила-службы--,--' >----)--------------------------------------------------------->< Схема - MQDB2. Функция MQUNSUBSCRIBE служит для отмены существующей подписки на сообщения. Для задания отменяемой подписки служат параметры служба-подписчика, правила-службы и тема. Эта функция требует установки и конфигурирования системы публикации и подписки на основе MQSeries, например MQSeries Integrator или MQSeries Publish/Subscribe. Дальнейшие подробности смотрите на странице www.ibm.com/software/MQSeries. Функция возвращает значение '1' при успешном выполнении и '0' при неудаче. В результате успешного выполнения этой функции сервер публикации и подписки удалит подписку, определяемую данными параметрами. Сообщения с данной темой больше не будут посылаться в логическое назначение, определяемое службой-подписчика. служба-подписчика Служба-подписчика, если она задана, должна указывать точку службы подписчиков, определенную в файле хранилища AMT.XML. В число определений точек службы входит имя менеджера очередей MQSeries и очередь. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если служба-подписчика не задана, используется DB2.DEFAULT.SUBSCRIBER. Максимальный размер службы-подписчика - 48 символов. правила-службы Правила-службы, если они заданы, должны указывать правила, определенные в файле хранилища AMT.XML. Правила службы определяет набор опций качества обслуживания (QoS), используемых при этой операции с сообщениями. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. Если правила-службы не заданы, используются DB2.DEFAULT.POLICY. Максимальный размер правил-службы - 48 символов. тема Строка, задающая тему сообщений, которые более не следует получать. Максимальный размер темы - 40 символов. Можно задать в одной строке несколько тем (длиной до 40 символов). Темы должны отделяться друг от друга двоеточиями. Например, "t1:t2:третья тема" указывает, что у сообщения будет три темы: t1, t2 и "третья тема". Примеры: Пример 1: Этот пример отменяет регистрацию заинтересованности в сообщениях, содержащих тему "Погода". В качестве отменяемого подписчика регистрируется служба-подписчика по умолчанию (DB2.DEFAULT.SUBSCRIBER), а качество обслуживания задается правилами-обслуживания по умолчанию (DB2.DEFAULT.POLICY). VALUES MQUNSUBSCRIBE('Погода') Пример 2: В этом примере подписчик отменяет регистрацию заинтересованности в сообщениях, содержащих "Акции". Подписчик зарегистрирован как "PORTFOLIO-UPDATES" с правилами "BASIC-POLICY". VALUES MQUNSUBSCRIBE('PORTFOLIO-UPDATES','BASIC-POLICY','Акции') Эти примеры возвращают скалярное значение '1' при успешном выполнении и '0' при неудаче. 38.3.2.13 MULTIPLY_ALT >>-MULTIPLY_ALT-------------------------------------------------> >----(точное-числовое-выражение;точное-числовое-выражение)----->< Схема - SYSIBM. Эта функция впервые стала доступна в FixPak 2 Версии 7.1. Скалярная функция MULTIPLY_ALT возвращает десятичное значение произведения двух аргументов. Это альтернатива операции умножения, особенно когда сумма точностей аргументов превосходит 31. Аргументы могут быть любого встроенного точного числового типа (DECIMAL, BIGINT, INTEGER или SMALLINT). Тип результата функции - DECIMAL. Точность и масштаб результата определяются так (p и s означают точность и масштаб первого аргумента, а p' и s' - точность и масштаб второго аргумента). Точность - MIN(31, p + p') Масштаб: 0, если масштаб обеих аргументов - 0 MIN(31, s+s'), если p+p' не больше 31 MAX(MIN(3, s+s'), 31-(p-s+p'-s') ), если p+p' больше 31. Значение результата может быть пустым, если значение хотя бы одного из аргументов может быть пустым, или если в конфигурации базы данных для параметра DFT_SQLMATHWARN задано значение yes; значение результата пусто, если значение одного из аргументов пусто. Если выполняются десятичные расчеты с масштабом хотя бы 3 и сумма точностей превосходит 31, функция MULTIPLY_ALT предпочтительнее операции умножения. В этом случае внутренние вычисления выполняются так, чтобы избежать переполнений. Потом окончательный результат приводится к типу результата, используя, если нужно, усечение, чтобы соответствовать масштабу. Обратите внимание на то, что если масштаб - 3, переполнение окончательного результата все же возможно. Ниже приведен пример, сравнивающий типы результата функции MULTIPLY_ALT и операции умножения. Тип аргумента 1 Тип аргумента 2 Результат функции MULTIPLY_ALT Результат операции умножения DECIMAL(31,3) DECIMAL(15,8) DECIMAL(31,3) DECIMAL(31,11) DECIMAL(26,23) DECIMAL(10,1) DECIMAL(31,19) DECIMAL(31,24) DECIMAL(18,17) DECIMAL(20,19) DECIMAL(31,29) DECIMAL(31,31) DECIMAL(16,3) DECIMAL(17,8) DECIMAL(31,9) DECIMAL(31,11) DECIMAL(26,5) DECIMAL(11,0) DECIMAL(31,3) DECIMAL(31,5) DECIMAL(21,1) DECIMAL(15,1) DECIMAL(31,2) DECIMAL(31,2) Пример: Перемножаем два значения, тип данных первого аргумента - DECIMAL(26,3), второго - DECIMAL(9,8). Тип данных результата - DECIMAL(31,7). values multiply_alt(98765432109876543210987,654;5,43210987) 1 --------------------------------- 536504678578875294857887,5277415 Обратите внимание на то, что полное произведение этих двух чисел - 536504678578875294857887,52774154498, но последние 4 цифры были отброшены, чтобы соответствовать масштабу типа данных результата. Использование с теми же значениями операции умножения приведет к арифметическому переполнению, так как тип данных результата - DECIMAL(31,11) - поддерживает только 20 знаков слева от десятичной точки, а у значения результата - 24 знака. 38.3.2.14 REC2XML >>-REC2XML---(--десятичная-константа---,--строка-формата--------> >----,--строка-тега-строки-таблицы------------------------------> >-----+------------------------+--)---------------------------->< | .------------------. | | V | | '----,--имя-столбца---+--' Схема - SYSIBM. Функция REC2XML возвращает строковое значение, форматированное при помощи тегов XML и содержащее имена столбцов и значения столбцов. десятичная-константа Коэффициент растяжения при замене символов значения столбца. Десятичное значение должно быть больше 0,0 и меньше или равно 6,0 (SQLSTATE 42820). Значение десятичной-константы используется для вычисления длины результата функции. Для каждого столбца с символьным типом данных атрибут длины столбца умножается на этот коэффициент растяжения перед прибавлением к длине результата. Если растяжение не нужно, используйте значение 1,0. Значения меньше 1,0 уменьшают вычисляемую длину результата. Если фактическая длина строки результата превысит вычисленную длину результата функции, возникнет ошибка (SQLSTATE 22001). строка-формата Строковая константа, задающая формат для выполнения функции. Строка-формата регистрозависима, и приведенные ниже значения во избежание ошибки следует вводить в верхнем регистре. COLATTVAL или COLATTVAL_XML Эти форматы возвращают строку со столбцами в виде значений атрибута. >>-<--строка-тега-строки-таблицы-->-----------------------------> .------------------------------------------------------------------------------. V | >--------<--имя-столбца--=--"имя-столбца"--+->--значение-столбца----+--+> '-null="true"------------------------------->< Имена столбцов могут быть или не быть допустимыми значениями атрибутов XML. Если имя столбца не является допустимыми значениями атрибутов XML, перед включением в строку результата выполняется замена символов. Значения столбцов могут быть или не быть допустимыми значениями элементов XML. Если задана строка-формата COLATTVAL, для значений столбцов, не являющихся допустимыми значениями элементов XML, перед включением в строку результата выполняется замена символов. Если задана строка-формата COLATTVAL_XML, замена символов в значениях столбцов не производится (однако замена символов все же производится в именах столбцов). строка-тега-строки-таблицы Строковая константа, задающая тег, используемый в каждой строке таблицы. Если задана пустая строка, используется значение 'row'. Если задана строка из одного или нескольких пробелов, в строке результата не будет ни начальных, ни конечных строк-тега-строки-таблицы (включая разделяющие угловые скобки). имя-столбца Имя столбца таблицы, со спецификаторами или без них. Столбец может иметь один из следующих типов данных (SQLSTATE 42815): числовой (SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, DOUBLE) символьная строка (CHAR, VARCHAR) 5 дата-время (DATE, TIME, TIMESTAMP) пользовательский тип, основанный на одном из приведенных выше типов Задаваемые имена столбцов не должны повторяться (SQLSTATE 42734). Тип результата функции - VARCHAR. Максимальная длина 32672 байта (SQLSTATE 54006). Рассмотрим следующий вызов: REC2XML (dc, fs, rt, c1, c2, ..., cn) Если значение fs - "COLATTVAL" или "COLATTVAL_XML", результат совпадает со следующим выражением: '<' CONCAT rt CONCAT '>' CONCAT y1 CONCAT y2 CONCAT ... CONCAT yn CONCAT '' где yn эквивалентен формуле: '<имя столбца="' CONCAT xvcn CONCAT vn а vn эквивалентен формуле: '">' CONCAT rn CONCAT '' если значение столбца непусто, и '" null="true"/>' если значение столбца пусто. xvcn эквивалентно строковому представлению имени столбца для cn, где всякий символ из Табл. 18 заменен соответствующим представлением. Благодаря этому строка результата будет допустимым значением атрибута или элемента XML. r n эквивалентно строковому представлению согласно Табл. 17. Значения столбцов результата: В зависимости от типа данных столбца и заданной строки-формата значения столбцов таблицы могут преобразовываться перед включением в строку результата. В следующей таблице показаны преобразования для значений столбцов. Табл. 17. Значения столбцов в строке результата Тип данных в cn rn CHAR, VARCHAR Это значение - строка. Если строка-формата не оканчивается символами "_XML", каждый символ в cn заменяется на соответствующую подстановку из Табл. 18. Атрибут длины: dc * длина атрибута cn. SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, DOUBLE Это значение - LTRIM(RTRIM(CHAR(cn))). Длина атрибута равна длине результата функции CHAR(cn). Десятичный разделитель - всегда точка. DATE Это значение - CHAR(cn, ISO). Длина атрибута равна длине результата функции CHAR(cn, ISO). TIME Это значение - CHAR(cn, JIS). Длина атрибута равна длине результата функции CHAR(cn, JIS) TIMESTAMP Это значение - CHAR(cn). Длина атрибута равна длине результата функции CHAR(cn). Замена символов: В зависимости от заданного значения строки-формата некоторые символы в именах столбцов и значениях столбцов заменяются, чтобы имена столбцов были допустимыми значения атрибутов XML, а значения столбцов - допустимыми значения элементов XML. Табл. 18. Замена символов для значений атрибутов и элементов XML < заменяется на < > заменяется на > " заменяется на " & заменяется на & ' заменяется на ' Примеры: Используя таблицу DEPARTMENT, отформатировать строку таблицы отдела, кроме столбцов DEPTNAME и LOCATION, для отдела 'D01', получив допустимую строку XML. Поскольку данные не содержат никаких символов, требующих замены, коэффициент расширения будет равен 1,0 (без расширения). Обратите также внимание на то, что значение MGRNO для этой строки таблицы - пустое. SELECT REC2XML (1.0, 'COLATTVAL', '', DEPTNO, MGRNO, ADMRDEPT) FROM DEPARTMENT WHERE DEPTNO = 'D01' Этот пример вернет следующую строку VARCHAR(117): D01 A00 Прим.:REC2XML не вставляет в вывод символы перевода строки. Приведенный выше пример вывода отформатирован для удобства чтения. В университетском расписании на пятидневку занятие под именем '&43' и '', 21 уйдет на имена столбцов, 75 на '', '' и двойные кавычки, 7 на данные CLASS_CODE, 6 на данные DAY и 8 на данные STARTING). Поскольку символы '&' и '<' будут заменены, коэффициента расширения 1,0 недостаточно. Атрибут длины для этой функции должен будет поддержать увеличение с 7 до 14 символов для нового формата данных CLASS_CODE. Однако поскольку известно, что значение DAY никогда не превысит длины в 1 цифру, 5 из добавленных символов никогда не будут использованы. Таким образом, растяжение должно обеспечить увеличение длины всего на 2. Поскольку единственной символьной строкой в списке аргументов является CLASS_CODE, это единственное значение столбца, на которое действует коэффициент расширения. Чтобы достичь увеличения длины на 2, коэффициент расширения должен быть равен 9/7 (примерно 1,2857). Будет использован коэффициент расширения 1,3. SELECT REC2XML (1.3, 'COLATTVAL', 'record', CLASS_CODE, DAY, STARTING) FROM CL_SCHED WHERE CLASS_CODE = '&43 &43<FIE 5 06:45:00 Прим.:REC2XML не вставляет в вывод символы перевода строки. Приведенный выше пример вывода отформатирован для удобства чтения. В этом примере показана замена символов в имени столбца. SELECT REC2XML (1.3,'COLATTVAL', '', Class, "time &43<FIE >-GET_ROUTINE_SAR----------------------------------------------> >----(--sarblob--,--тип--,--строка-имени-подпрограммы--)------->< Схема - SYSFUN. Эта процедура впервые стала доступна в FixPak 3 Версии 7.1. Процедура GET_ROUTINE_SAR получает информацию, необходимую для установки той же подпрограммы на другом сервере баз данных, работающем в том же уровне той же операционной системы. Информация получается в виде одной строки BLOB, представляющей файл архива SQL. Вызывающий процедуру GET_ROUTINE_SAR должен обладать полномочиями DBADM. sarblob Выходной аргумент типа BLOB(3M), в котором возвращается содержимое файла SAR для этой подпрограммы. тип Входной аргумент типа CHAR(2), задающий тип подпрограммы; используется одно из следующих значений: P для процедуры. SP для конкретного имени процедуры. строка-имени-подпрограммы Входной аргумент типа VARCHAR(257), задающий полное имя подпрограммы. Если схема не задана, для подпрограммы по умолчанию используется схема CURRENT SCHEMA. Прим.:Строка-имени-подпрограммы не должна содержать символ двойной кавычки ("). Полное имя подпрограммы используется для определения подпрограммы, информацию для которой нужно получить. Найденная подпрограмма должна быть подпрограммой SQL, иначе возникнет ошибка (SQLSTATE 428F7). Если не используется конкретное имя, может быть найдено несколько подпрограмм и возникнет ошибка (SQLSTATE 42725). В этом случае для получения информации для подпрограммы нужно использовать ее конкретное имя. Файл SAR должен содержать файл связывания, который может быть недоступен на сервере. Если файл связывания не удалось найти и сохранить в файле SAR, возникает ошибка (SQLSTATE 55045). 38.3.4.2 PUT_ROUTINE_SAR >>-PUT_ROUTINE_SAR----------------------------------------------> >----(--sarblob--+-----------------------------------------------------+> '-,--новый_владелец--,--флаг_использования_регистров--' >----)--------------------------------------------------------->< Схема - SYSFUN. Эта процедура впервые стала доступна в FixPak 3 Версии 7.1. Процедура PUT_ROUTINE_SAR передает на сервер необходимый файл для создания на нем подпрограммы SQL и затем определяет эту подпрограмму. Вызывающий процедуру PUT_ROUTINE_SAR должен обладать полномочиями DBADM. sarblob Входной аргумент типа BLOB(3M), в котором передается содержимое файла SAR для этой подпрограммы. новый_владелец Входной аргумент типа VARCHAR(128), задающий имя авторизации, используемое для проверки полномочий подпрограммы. Новый_владелец должен обладать привилегиями, необходимыми для определяемой подпрограммы. Если новый_владелец не задан, используется имя владельца исходной подпрограммы. флаг_использования_регистров Входной аргумент типа INTEGER, указывающий, используются ли для определения подпрограммы специальные регистры CURRENT SCHEMA и CURRENT PATH. Если эти специальные регистры не используются, в качестве значений схемы по умолчанию и пути SQL используются те же значения, что и при определении исходной подпрограммы. Возможные значения аргумента флага_использования_регистров: 0 Не использовать специальные регистры текущей среды 1 Использовать специальные регистры CURRENT SCHEMA и CURRENT PATH. Если задано значение 1, специальный регистр CURRENT SCHEMA используется для неспецифицированных имен объектов в определении подпрограммы (включая имя самой подпрограммы), а специальный регистр CURRENT PATH - для неспецифицированных имен подпрограмм и типов данных в определении этой подпрограммы. Если флаг_использования_регистров не задан, предполагается значение 0. Для находящейся в sarblob информации идентификации выполняется проверка соответствия входных данных среде; если это не так, выдается ошибка (SQLSTATE 55046). Затем процедура PUT_ROUTINE_SAR использует содержимое sarblob, чтобы определить нужную подпрограмму на сервере. Содержимое аргумента sarblob выделяется в отдельные файлы, составлявшие файл архива SQL. Совместно используемая библиотека и файлы связывания записываются в файлы во временном каталоге. Затем среда настраивается таким образом, чтобы выполняющийся оператор определения подпрограммы знал, что компиляция и связывание не требуются и что доступны положения совместно используемой библиотеки и файлов связывания. Затем содержимое файла DDL используется для динамического выполнения оператора определения подпрограммы. Прим.:В данной схеме можно одновременно устанавливать только одну процедуру. При выполнении этого оператора могут возникнуть ошибки, как и при выполнении оператора определения подпрограммы через другие интерфейсы. В процессе определения подпрограммы отмечается наличие совместно используемой библиотеки и файлов связывания и пропускаются шаги прекомпиляции, компиляции и компоновки. Файлы связывания используются при выполнении связывания и содержимое обоих файлов копируется в обычный каталог для подпрограмм SQL. Прим.:При возникновении ошибок выполнения операций GET ROUTINE или PUT ROUTINE (или соответствующих им процедур) всегда возвращается код ошибки (SQLSTATE 38000) и текст диагностики, содержащий информацию о причине ошибки. Например, если заданное для GET ROUTINE имя процедуры не соответствует ни одной из процедур SQL, возвращается текст диагностики "100, 02000", где "100" и "02000" - соответственно SQLCODE и SQLSTATE, чем указывается причина ошибки. SQLCODE и SQLSTATE в этом примере указывают, что для заданного имени процедуры не найдена строка в таблицах каталога. 38.4 Глава 5. Queries (Запросы) 38.4.1 оператор select/синтаксическая диаграмма Синтаксическая диаграмма заменена на следующую: >>-+-----------------------------------------+--полная-выборка--> | .-,----------------------------. | | V | | '-WITH-----общее-табличное-выражение---+--' >----+------------------+--+---------------------+--------------> '-условие-order-by-' '-условие-fetch-first-' >----*--+----------------------+--------------------------------> +-условие-read-only----+ | (1) | '-условие-update-------' >----*--+----------------------+--*----+---------------+------->< '-условие-optimize-for-' '-WITH--+-RR-+--' +-RS-+ +-CS-+ '-UR-' Примечания: Условия UPDATE и ORDER BY нельзя задавать вместе в одном операторе SELECT. К описанию под синтаксической диаграммой добавьте следующий абзац: Необязательное условие WITH задает уровень изоляции, с которым выполняется оператор SELECT. RR - многократное чтение RS - стабильность чтения CS - стабильность на уровне указателя UR - чтение непринятого По умолчанию уровень изоляции оператора - это уровень изоляции пакета, в котором связан этот оператор. 38.4.2 оператор select/условие fetch-first Последний абзац описания условия-выбрать-первым: Specification of the fetch-first-clause in a select-statement makes the cursor not deletable (read-only). This clause cannot be specified with the FOR UPDATE clause. является неверным; его нужно удалить. 38.5 Глава 6. SQL Statements (Операторы SQL) 38.5.1 Теперь поддерживается возможность изменения ключа разделения Теперь поддерживается изменение ключа разделения. В Главе 6 перечисленные ниже утверждения не касаются случая, когда DB2_UPDATE_PART_KEY=ON: Прим.:Если DB2_UPDATE_PART_KEY=OFF, эти ограничения остаются в силе. 38.5.1.1 Оператор: ALTER TABLE Правила Столбец ключа разделения таблицы не может быть изменен (SQLSTATE 42997). Допускающий пустые значения столбец ключа разделения не может быть включен в качестве столбца внешнего ключа, если отношение определено с условием ON DELETE SET NULL (SQLSTATE 42997). 38.5.1.2 Оператор: CREATE TABLE Правила Столбец ключа разделения таблицы не может быть изменен (SQLSTATE 42997). Допускающий пустые значения столбец ключа разделения не может быть включен в качестве столбца внешнего ключа, если отношение определено с условием ON DELETE SET NULL (SQLSTATE 42997). 38.5.1.3 Оператор: DECLARE GLOBAL TEMPORARY TABLE PARTITIONING KEY (имя-столбца,...) Прим.:Столбец ключа разделения таблицы не может быть изменен (SQLSTATE 42997). 38.5.1.4 Оператор: UPDATE Сноски 108 Столбец ключа разделения не может быть изменен (SQLSTATE 42997). Чтобы изменить ключ разделения, необходимо удалить строку данных и вставить ее снова. 38.5.2 Длинные ключи индекса для баз данных Unicode 38.5.2.1 ALTER TABLE Если при определении индекса переменная реестра DB2_INDEX_2BYTEVARLEN имеет значение ON, длина столбцов переменной длины, входящих в этот индекс, включая первичные ключи и ключи уникальности, может быть изменена на значение более 255 байт. Реально длина столбца переменной длины, входящего во внешний ключ, теперь может быть изменена на длину более 255 байт независимо от значения этой переменной реестра. Однако данные длиной более 255 байт можно вставить в таблицу, только если столбец соответствующего первичного ключа имеет длину более 255 байт, что возможно, только если этот первичный ключ создан, когда эта переменная реестра имела значение ON. 38.5.2.2 CREATE INDEX Индексы могут быть определены на столбцах переменной длины, размер которых больше 255 байт, если переменная реестра DB2_INDEX_2BYTEVARLEN имеет значение ON. 38.5.2.3 CREATE TABLE Первичные ключи и ключи уникальности, в которые входят столбцы переменной длины, могут иметь размер больше 255, если переменная реестра DB2_INDEX_2BYTEVARLEN имеет значение ON. Внешние ключи могут быть определены на столбцах переменной длины, размер которых больше 255 байт. 38.5.3 ALTER SEQUENCE ALTER SEQUENCE Оператор ALTER SEQUENCE изменяет атрибуты последовательности: Перезапуская последовательность Изменяя приращение между последующими значениями последовательности Задавая новые минимальные или максимальные значения Изменяя число значений последовательности, сохраняемых в кэше Задавая, должна ли последовательность генерироваться циклически или нет Задавая, должны ли значения последовательности генерироваться в порядке запросов Коды возврата Этот оператор может быть встроен в прикладную программу или выполняться как динамический оператор SQL. Это выполняемый оператор, который можно подготовить динамически. Но если применяется опция связывания DYNAMICRULES BIND, этот оператор нельзя подготовить динамически (SQLSTATE 42509). Авторизация Привилегии ID авторизации этого оператора, должны включать, как минимум, одну из следующих привилегий: Привилегии определившего эту последовательность Привилегия ALTERIN для неявно или явно заданной схемы Полномочия SYSADM или DBADM Внутреннее представление >>-ALTER SEQUENCE--имя-последовательности-----------------------> .---------------------------------------------. V | >-------+-RESTART--+---------------------------+-+--+---------->< | '-WITH--числовая-константа--' | +-INCREMENT BY--числовая-константа-------+ +-+-MINVALUE--числовая-константа--+------+ | '-NO MINVALUE-------------------' | +-+-MAXVALUE--числовая-константа--+------+ | '-NO MAXVALUE-------------------' | +-+-CYCLE----+---------------------------+ | '-NO CYCLE-' | +-+-CACHE--целая-константа--+------------+ | '-NO CACHE----------------' | '-+-ORDER----+---------------------------' '-NO ORDER-' Описание имя-последовательности Задает конкретную последовательность. Комбинация этого имени и неявно или явно заданного имени схемы должна задавать существующую последовательность на текущем сервере. Если в явно или неявно заданной схеме нет последовательности с таким именем, возникает ошибка (SQLSTATE 42704). RESTART Перезапускает последовательность. Если числовая-константа не задана, последовательность перезапускается со значения, заданного неявно или явно в качестве начального значения в операторе CREATE SEQUENCE, которым была создана эта последовательность. WITH числовая-константа Перезапускает последовательность с конкретного значения. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820); справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 42894). INCREMENT BY Задает интервал между соседними значениями последовательности. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820) и которое не превосходит значения константы large integer (SQLSTATE 42815), и справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA). Если это отрицательное значение, последовательность значений будет убывающей. Если это положительное значение, последовательность значений будет возрастающей. Если это значение равно 0 или если оно выходит за диапазон, определяемый значениями MINVALUE и MAXVALUE, будет генерироваться одно и то же значение, но последовательность все равно будет считаться возрастающей последовательностью. MINVALUE или NO MINVALUE Задает минимальное значение, по достижении которого для убывающей последовательности прекращается генерация значений или начинается следующий цикл генерации значений; для возрастающей последовательности это значение, с которого начинается следующий цикл генерации после достижения максимального значения. MINVALUE числовая-константа Задает числовую константу, определяющую минимальное значение. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820), но справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA) и это значение должно быть меньше или равно максимальному значению (SQLSTATE 42815). NO MINVALUE Для возрастающей последовательности минимальное значение будет равно значению START WITH или 1, если значение START WITH не задано. Для убывающей последовательности минимальное значение будет равно минимальному значению типа данных, связанного с этой последовательностью. Эта опция принимается по умолчанию. MAXVALUE или NO MAXVALUE Задает максимальное значение, по достижении которого для возрастающей последовательности прекращается генерация значений или начинается следующий цикл генерации значений; для убывающей последовательности это значение, с которого начинается следующий цикл генерации после достижения минимального значения. MAXVALUE числовая-константа Задает числовую константу, определяющую максимальное значение. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820), но справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA) и это значение должно быть больше или равно минимальному значению (SQLSTATE 42815). NO MAXVALUE Для возрастающей последовательности максимальное значение будет равно максимальному значению типа данных, связанного с этой последовательностью. Для убывающей последовательности максимальное значение будет равно значению START WITH или -1, если значение START WITH не задано. Эта опция принимается по умолчанию. CYCLE или NOCYCLE Задает, нужно ли продолжать генерировать значения последовательности после достижения максимального или минимального значения последовательности. Граница последовательности может быть достигнута, либо когда следующее значение достигнет в точности граничного условия, либо превзойдет границу; в этом случае следующее значение будет найдено путем возврата к значению START WITH, если циклы разрешены. CYCLE Задает, что после достижения максимального или минимального значения генерация значений должна быть продолжена. Если используется эта опция, для возрастающей последовательности после достижения ее максимального значения генерируется ее минимальное значение, а для убывающей последовательности после достижения ее минимального значения генерируется ее максимальное значение. Минимальное и максимальное значения для последовательности определяют диапазон, используемый для циклической генерации значений. Если задан параметр CYCLE, для последовательности могут быть сгенерированы повторяющиеся значения. NO CYCLE Задает, что после достижения максимального или минимального значения генерация значений будет прекращена. Эта опция принимается по умолчанию. CACHE или NO CACHE Задает, нужно ли для ускорения доступа хранить в памяти некоторое число заранее вычисленных значений. Это опция влияет на производительность и настройку. CACHE целая-константа Задает максимальное число значений последовательности, которые заранее вычисляются и хранятся в памяти. Предварительное размещение и хранение значение в кэше сокращает синхронный ввод-вывод в журнал при генерации значений последовательности. При возникновении системной ошибки все хранящиеся в кэше и еще неиспользованные в принятых операторах значения последовательности будут потеряны (то есть вообще не будут использованы). Заданное в опции CACHE значение - это максимальное число значений последовательности, которые могут быть потеряны в случае системной ошибки. Минимальное значение - 2 (SQLSTATE 42815). Значение по умолчанию - CACHE 20. NO CACHE Задает, что значения последовательности не будут вычисляться заранее. Это гарантирует, что никакие значения не будут потеряны в случае системной ошибки, перезагрузки или деактивации базы данных. Если задана эта опция, значения последовательности не хранятся в кэше. В этом случае при каждом запросе нового значения последовательности будет выполняться операция синхронного ввода-вывода в журнал. NO ORDER или ORDER Задает, нужно ли генерировать значения последовательности в порядке запросов. ORDER Задает, что значения последовательности должны генерироваться в порядке запросов. NO ORDER Задает, что значения последовательности не нужно генерировать в порядке запросов. Эта опция принимается по умолчанию. После перезапуска последовательности или задании опции CYCLE, значения последовательности могут совпадать со значениями, генерируемыми этой последовательностью ранее. Версия Оператор ALTER SEQUENCE влияет только на будущие значения последовательности. Тип данных последовательности нельзя изменить. Вместо этого отбросьте последовательность и заново создайте ее, задав для новой последовательности требуемый тип данных. При изменении последовательности все ее значения в кэше будут потеряны. Примеры Пример 1: Причиной задания RESTART без числового значения может быть необходимость перезапустить последовательность со значения START WITH. В этом примере целью является генерация чисел с 1 до числа строк в таблице и затем вставка этих чисел в столбец, добавленный в таблицу с помощью временных таблиц. Другой вариант использования - получение результата с перенумерованными строками: ALTER SEQUENCE org_seq RESTART SELECT NEXTVAL for org_seq, org.* FROM org 38.5.4 ALTER TABLE Изменения во фрагментах синтаксиса: изменение-столбца |--имя-столбца--------------------------------------------------> >-----+-SET--+-DATA TYPE--+-VARCHAR-----------+---(--целое--)--+-------------+> | | +-CHARACTER VARYING-+ | | | | '-CHAR VARYING------' | | | '-EXPRESSION AS--(--выражение-генерации--)--------' | +-ADD SCOPE--+-имя-типизированной-таблицы-------------+----------------+ | '-имя-типизированной-производной-таблицы-' | '-+-| изменение-идентификации |--------------------------------------+-' '-SET GENERATED--+-ALWAYS-----+---+------------------------------+-' '-BY DEFAULT-' '-| изменение-идентификации |--' >---------------------------------------------------------------| изменение-идентификации |---+-RESTART--+----------------------------+-+-----------------| | '-WITH--числовая-константа---' | +-SET INCREMENT BY--числовая-константа----+ | (1) | +-SET--+-NO MINVALUE-------------------+--+ | '-MINVALUE--числовая-константа--' | +-SET--+-NO MAXVALUE-------------------+--+ | '-MAXVALUE--числовая-константа--' | +-SET--+-CYCLE----+-----------------------+ | '-NO CYCLE-' | +-SET--+-NO CACHE----------------+--------+ | '-CACHE--целая-константа--' | '-SET--+-NO ORDER-+-----------------------' '-ORDER----' Примечания: Эти параметры можно задавать без пробелов: NOMINVALUE, NOMAXVALUE, NOCYCLE, NOCACHE и NOORDER. Все эти версии из одного слова - допустимые альтернативы для версий из двух слов. Добавьте следующие параметры: SET GENERATED Задает, должны ли значения для столбца генерироваться всегда или только когда требуется значение по умолчанию. ALWAYS При вставке строки в таблицу для этого столбца всегда будет генерироваться значение. Столбец должен быть уже определен как генерируемый столбец (SQLSTATE 42837). BY DEFAULT При вставке строки в таблицу для этого столбца будет генерироваться значение, если значение не задано. Столбец должен быть уже определен как генерируемый столбец (SQLSTATE 42837). RESTART или RESTART WITH числовая-константа Перезадает последовательность, связанную со столбцом идентификации. Если не задано условие WITH числовая-константа, последовательность значений для столбца идентификации перезапускается со значения, которое было явно или неявно задано в качестве начального значения при создании этого столбца идентфикации. Числовая-константа - это точная числовая константа, она может принимать любое положительное или отрицательное значение, которое можно присваивать этому столбцу (SQLSTATE 42820); справа от десятичной точки не должно быть ненулевых знаков (SQLSTATE 42894). Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). Значение числовой-константы будет использовано в качестве следующего значения столбца идентификации. SET INCREMENT BY числовая-константа Задает разность между последовательными значениями столбца идентификации. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). Это значение - любое положительное или отрицательное значение, которое можно присваивать этому столбцу (SQLSTATE 42820) и которое не превышает значения большой целой константы (SQLSTATE 42815); справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 42894). Если это отрицательное значение, последовательность значений для этого столбца идентификации будет убывающей. Если это положительное значение, последовательность значений для этого столбца идентификации будет возрастающей. Если это значение равно 0 или если оно выходит за диапазон, определяемый значениями MINVALUE и MAXVALUE, DB2 будет генерировать одно и то же значение, но последовательность все равно будет считаться возрастающей. SET MINVALUE числовая-константа или NO MINVALUE Задает минимальное значение, по достижении которого для убывающего столбца идентификации прекращается генерация значений или начинается следующий цикл генерации значений, а для возрастающего столбца идентификации - это значение, с которого начинается следующий цикл генерации после достижения максимального значения. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). MINVALUE числовая-константа Задает минимальное значение. Оно может быть любым положительным или отрицательным значением, которое можно присваивать этому столбцу (SQLSTATE 42820); справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 42894); это значение должно быть меньше максимального значения (SQLSTATE 42815). NO MINVALUE Для возрастающей последовательности минимальное значение будет равно значению START WITH или 1, если значение START WITH не задано. Для убывающей последовательности минимальное значение будет равно минимальному значению типа данных этого столбца. SET MAXVALUE числовая-константа или NO MAXVALUE Задает максимальное значение, по достижении которого для возрастающего столбца идентификации прекращается генерация значений или начинается следующий цикл генерации значений; для убывающего столбца идентификации это значение, с которого начинается следующий цикл генерации после достижения минимального значения. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). MAXVALUE числовая-константа Задает числовую константу, определяющую максимальное значение. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать этому столбцу (SQLSTATE 42820); справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 42894); это значение должно быть больше минимального значения (SQLSTATE 42815). NO MAXVALUE Для возрастающей последовательности максимальное значение будет равно максимальному значению типа данных этого столбца. Для убывающей последовательности максимальное значение будет равно значению START WITH или -1, если значение START WITH не задано. SET CYCLE или NO CYCLE Задает, нужно ли продолжать генерировать значения столбца идентификации после генерации максимального или минимального значения. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). CYCLE Задает, что после достижения максимального или минимального значения генерация значений этого столбца должна быть продолжена. Если используется эта опция, для возрастающего столбца идентификации после достижения его максимального значения генерируется его минимальное значение, а для убывающего столбца идентификации после достижения его минимального значения генерируется его максимальное значение. Минимальное и максимальное значения для столбца идентификации определяют диапазон, используемый для циклической генерации значений. Если задан параметр CYCLE, для столбца идентификации могут быть сгенерированы повторяющиеся значения. Хотя это не обязательное требование, но если нужны уникальные значения, для обеспечения уникальности значений используйте определенный для этого столбца идентификации индекс уникальности с одним столбцом. Если для столбца идентификации существует такой индекс и генерируется неуникальное значение, возникает ошибка (SQLSTATE 23505). NO CYCLE Задает, что после достижения максимального или минимального значения генерация значений столбца идентификации будет прекращена. SET CACHE целая-константа или NO CACHE Задает, нужно ли для ускорения доступа хранить в памяти некоторое число заранее вычисленных значений. Это опция влияет на производительность и настройку. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). CACHE целая-константа Задает максимальное число значений последовательности идентификации, которые заранее вычисляются и хранятся в памяти. Если при генерации значений столбца идентификации эти значения вычисляются заранее и хранятся в кэше, это уменьшает затраты на операции синхронного ввода-вывода в журнал. Если для столбца идентификации требуется новое значение, но в кэше нет неиспользованных значений, для получения этого значения может потребоваться ожидание выполнения операций ввода-вывода в журнал. Однако если для столбца идентификации требуется новое значение и в кэше есть неиспользованное значение, это значение будет получено быстрее, так как не будут выполняться операции ввода-вывода в журнал. При остановке менеджера баз данных (например, при деактивации базы данных, при возникновении системной ошибки или завершении работы системы) все хранящиеся в кэше и еще неиспользованные в принятых операторах значения последовательности будут потеряны (то есть вообще не будут использованы). Заданное в опции CACHE значение - это максимальное число значений для столбца идентификации, которые могут быть потеряны в случае системной ошибки. Минимальное значение - 2 (SQLSTATE 42615). NO CACHE Задает, что значения для столбца идентификации не будут вычисляться заранее. Если задана эта опция, значения столбца идентификации не хранятся в кэше. В этом случае при каждом запросе нового значения столбца идентификации будет выполняться операция синхронного ввода-вывода в журнал. SET ORDER или NO ORDER Задает, нужно ли генерировать значения столбца идентификации в порядке запросов. Этот столбец должен быть уже определен с атрибутом IDENTITY (SQLSTATE 42837). ORDER Задает, что значения столбца идентификации должны генерироваться в порядке запросов. NO ORDER Задает, что значения столбца идентификации не нужно генерировать в порядке запросов. 38.5.5 Compound SQL (Embedded) (Составной SQL - встроенный) В составном операторе SQL ATOMIC не разрешен подготовленный оператор COMMIT. 38.5.6 Составной оператор (динамический) Составной оператор (динамический) Составной оператор объединяет вместе другие операторы в один выполняемый блок. Внутри динамически подготовленного составного оператора ATOMIC можно объявлять переменные SQL. Коды возврата Этот оператор может быть вставлен в триггер, функцию SQL или метод SQL или выполняться как динамический оператор SQL. Это исполняемый оператор, который может быть подготовлен динамически. Авторизация Для запуска динамических составных операторов не требуются привилегии. Однако ID авторизации составного оператора должен иметь привилегии, необходимые для вызова входящих в него операторов SQL. Внутреннее представление динамический-составной-оператор >>-+--------------+-- BEGIN ATOMIC----------------------------> | (1) | '-метка:-------' >-----+------------------------------------------------+--------> | .------------------------------------------. | | V | | '-----+-| объявление-переменной-SQL |-+---;---+--' '-| объявление-условия |--------' .-,----------------------------. V | >--------оператор-процедуры-SQL--;---+---END--+--------+------->< '-метка--' объявление-переменной-SQL .-,---------------------. V | |---DECLARE-------имя-переменной-SQL---+--тип-данных------------> .-DEFAULT NULL--------------------. >-----+---------------------------------+-----------------------| '-DEFAULT--значения-по-умолчанию--' объявление-условия |---DECLARE--имя-условия--CONDITION--FOR------------------------> .-VALUE-. .-SQLSTATE--+-------+---. >----+-----------------------+---строчная-константа-------------| Примечания: Метка может быть задана, только если этот оператор находится в определении функции, метода или триггера. Описание метка Задает метку для этого блока кода. Если задана метка начала, ее можно использовать в качестве спецификатора для переменных SQL, объявленных в этом динамическом составном операторе; ее можно также использовать в операторе LEAVE. Если задана метка конца, она должна совпадать с меткой начала. ATOMIC Ключевое слово ATOMIC указывает, что при возникновении ошибки в этом составном операторе будет выполнен откат для всех выполненных в этом составном операторе операторов SQL, а оставшиеся в этом составном операторе операторы SQL не будут выполняться. оператор-процедуры-SQL Внутри динамического составного оператора можно использовать следующие управляющие-операторы-SQL: оператор FOR оператор GET DIAGNOSTICS оператор IF оператор ITERATE оператор LEAVE оператор SIGNAL оператор WHILE Операторы SQL, которые могут быть вызваны: полная выборка 6 UPDATE с поиском DELETE с поиском INSERT оператор SET переменная объявление-переменной-SQL Объявляет переменную, локальную для этого динамического составного оператора. имя-переменной-SQL Задает имя локальной переменной. DB2 преобразует все имена переменных SQL в верхний регистр. Это имя не может: Совпадать с именем другой переменной SQL в том же составном операторе. Совпадать с именем параметра. Совпадать с именем столбца. Если оператор SQL содержит идентификатор, совпадающий и с именем переменной SQL, и с именем столбца, DB2 интерпретирует этот идентификатор как имя столбца. тип-данных Задает тип данных этой переменной. DEFAULT значения-по-умолчанию или NULL Задает значение по умолчанию для этой переменной SQL. Переменная инициализируется при вызове этого динамического составного оператора. Если значение по умолчанию не задано, переменная инициализируется значением NULL. объявление-условия Объявляет имя условия и соответствующее значение SQLSTATE. имя-условия Задает имя условия. Имя условия должно быть уникальным в теле процедуры; на него можно ссылаться только внутри составного оператора, в котором оно определено. FOR SQLSTATE строчная-константа Задает SQLSTATE для этого условия. Строчная-константа должна представлять собой пять символов, заключенных в простые кавычки; она не может быть равна '00000'. Версия Динамический составной оператор компилируется системой DB2 как один оператор. Такой оператор эффективен для коротких алгоритмов, содержащих небольшое число управляющих конструкций, но обрабатывающих значительное число данных. Для более сложных алгоритмов, содержащих сложные вложенные управляющие конструкции, лучше использовать процедуры SQL. 38.5.7 Функция CREATE (источник или шаблон) Синтаксическая диаграмма изменена на следующую >>-CREATE FUNCTION--имя-функции---------------------------------> >----(--+------------------------------------------+---)---*----> | .-,----------------------------------. | | V | | '----+----------------+---тип-данных1---+--' '-имя-параметра--' >----RETURNS--тип-данных2---*----+-----------------------+--*---> '-SPECIFIC--особое-имя--' >-----+-SOURCE--+-имя-функции---------------------------------+-------------------+> | +-SPECIFIC--особое-имя------------------------+ | | '-имя-функции--(--+--------------------+---)--' | | | .-,------------. | | | | V | | | | '----тип-данных---+--' | | .-NOT DETERMINISTIC--. .-EXTERNAL ACTION----. | '-AS TEMPLATE--*----+--------------------+--*----+--------------------+--*--' '-DETERMINISTIC------' '-NO EXTERNAL ACTION-' >----*--------------------------------------------------------->< Добавьте следующий текст в раздел "Description" (Описание): DETERMINISTIC или NOT DETERMINISTIC Это необязательное условие указывает, будет ли функция всегда возвращать одинаковый результат для данных значений аргументов (DETERMINISTIC) или же на результат функции влияют какие-то значения состояния (NOT DETERMINISTIC). Функция типа DETERMINISTIC при последовательных вызовах ее с одними и теми же входными данными должна всегда возвращать одну и ту же таблицу. Если задано условие NOT DETERMINISTIC, не будут выполняться оптимизации, использующие преимущества того, что для одинаковых входных данных всегда получается один и тот же результат. Условие NOT DETERMINISTIC должно быть задано (явно или неявно), если функция обращается к специальному регистру или вызывает другую недетерминированную функцию (SQLSTATE 428C2). NO EXTERNAL ACTION или EXTERNAL ACTION Это необязательное условие указывает, выполняет ли эта функция действия, изменяющие состояние объектов, которыми не управляет менеджер баз данных. Если задано условие NO EXTERNAL ACTION, система может использовать определенные оптимизации, исходя из того, что эта функция не влияет на внешние объекты. Условие EXTERNAL ACTION должно быть задано (явно или неявно), если функция вызывает другую функцию с внешним действием (SQLSTATE 428C2). 38.5.8 Функция CREATE (скалярная SQL, табличная или строчная) Синтаксическая диаграмма заменена на следующую: >>-CREATE FUNCTION--имя-функции---------------------------------> >----(--+------------------------------------+---)---*----------> | .-,----------------------------. | | V | | '----имя-параметра--тип-данных1---+--' >----RETURNS--+-тип-данных2-----------------------+--*----------> '--+-ROW---+---| список-столбцов |--' '-TABLE-' .-LANGUAGE SQL--. >-----+-----------------------+--*----+---------------+--*------> '-SPECIFIC--особое-имя--' .-NOT DETERMINISTIC--. .-EXTERNAL ACTION----. >-----+--------------------+--*----+--------------------+--*----> '-DETERMINISTIC------' '-NO EXTERNAL ACTION-' .-READS SQL DATA--. .-STATIC DISPATCH--. >-----+-----------------+--*----+------------------+--*---------> '-CONTAINS SQL----' (1) .-CALLED ON NULL INPUT-------. >-----+----------------------------+--*-------------------------> >-----+----------------------------------------------------+----> | (2) | '-PREDICATES--(--| спецификация-предиката |--)-------' >----| тело-функции-SQL |-------------------------------------->< список-столбцов .-,---------------------------. V | |---(-----имя-столбца--тип-данных3---+---)----------------------| тело-функции-SQL |---+-оператор RETURN-----------------+-------------------------| '-динамический-составной-оператор-' Примечания: Вместо условия CALLED ON NULL INPUT можно задать NULL CALL Допустимо, только если в RETURNS задан скалярный результат (тип-данных2) Измените следующие параметры: LANGUAGE SQL Указывает, что функция написана на языке SQL. Этот блок параметров заменяет блок параметров "RETURN expression, NULL, WITH common-table-expression, fullselect". тело-функции-SQL Задает тело функции. В теле-функции-SQL можно использовать имена параметров. Чтобы избежать неоднозначности, можно добавить к именам параметров в качестве спецификатора имя функции. Если тело-функции-SQL представляет собой динамический составной оператор, оно должно содержать по крайней мере один оператор RETURN, который должен быть выполнен при вызове функции (SQLSTATE 42632). Если это табличная функция или строчная функция, она может содержать только один оператор RETURN, который должен быть последним оператором динамического составного оператора (SQLSTATE 429BD). Дополнительную информацию смотрите в разделах Составной оператор (динамический) и RETURN. 38.5.9 CREATE METHOD Синтаксическая диаграмма заменена на следующую: CREATE METHOD Внутреннее представление >>-CREATE-------------------------------------------------------> >-----+-METHOD--+-имя-метода-----------+---FOR--имя-типа--+-----> | '-| сигнатура-метода |-' | '-SPECIFIC METHOD--особое-имя-----------------------' >-----+-*----EXTERNAL--+--------------------------+--*----+------------------------------+--*--+> | '-NAME--+-'строка'------+--' '-TRANSFORM GROUP--имя-группы--' | | '-идентификатор-' | '-| тело-метода-SQL |--------------------------------------------------------------------' >-------------------------------------------------------------->< сигнатура-метода |---имя-метода--(--+---------------------------------------------------------+---)--> | .-,--------------------------------------------------. | | V | | '----+----------------+---тип-данных1--+-------------+--+-' '-имя-параметра--' '-AS LOCATOR--' >----+--------------------------------------------------------------------+-> '-RETURNS--+-тип-данных2--+-------------+-------------------------+--' | '-AS LOCATOR--' | '-тип-данных3--CAST FROM--тип-данных4--+-------------+-' '-AS LOCATOR--' >---------------------------------------------------------------| тело-метода-SQL |---+-оператор RETURN-----------------+-------------------------| '-динамический-составной-оператор-' Раздел "RETURN scalar-expression or NULL" заменен на следующий: тело-метода-SQL Тело-метода-SQL определяет, как реализован метод, если в CREATE TYPE для него задано LANGUAGE SQL. Тело-метода-SQL должно соответствовать следующим частям объявления метода: DETERMINISTIC или NOT DETERMINISTIC (SQLSTATE 428C2) EXTERNAL ACTION или NO EXTERNAL ACTION (SQLSTATE 428C2) CONTAINS SQL или READS SQL DATA (SQLSTATE 42985) В теле-метода-SQL можно использовать имена параметров. Объект метода передается реализации метода как неявный первый параметр с именем SELF. Дополнительную информацию смотрите в разделах Составной оператор (динамический) и RETURN. 38.5.10 CREATE SEQUENCE CREATE SEQUENCE Оператор CREATE SEQUENCE создает последовательность на сервере прикладных программ. Коды возврата Этот оператор может быть встроен в прикладную программу или выполняться как динамический оператор SQL. Это выполняемый оператор, который можно подготовить динамически. Но если применяется опция связывания DYNAMICRULES BIND, этот оператор нельзя подготовить динамически (SQLSTATE 42509). Авторизация Привилегии ID авторизации этого оператора, должны содержать, как минимум, одну из следующих привилегий: Привилегию CREATEIN для неявно или явно заданной схемы Полномочия SYSADM или DBADM Внутреннее представление >>-CREATE SEQUENCE--имя-последовательности---*------------------> .-AS INTEGER------. >-----+-----------------+--*------------------------------------> '-AS--тип-данных--' >-----+---------------------------------+--*--------------------> '-START WITH--числовая-константа--' .-INCREMENT BY 1--------------------. >-----+-----------------------------------+--*------------------> '-INCREMENT BY--числовая-константа--' (1) .-NO MINVALUE-------------------. >-----+-------------------------------+--*----------------------> '-MINVALUE--числовая-константа--' .-NO MAXVALUE-------------------. .-NO CYCLE--. >-----+-------------------------------+--*----+-----------+--*--> '-MAXVALUE--числовая-константа--' '-CYCLE-----' .-CACHE 20----------------. .-NO ORDER--. >-----+-------------------------+--*----+-----------+--*------->< +-CACHE--целая-константа--+ '-ORDER-----' '-NO CACHE----------------' Примечания: Эти параметры можно задавать без пробелов: NOMINVALUE, NOMAXVALUE, NOCYCLE, NOCACHE и NOORDER. Все эти версии из одного слова - допустимые альтернативы для версий из двух слов. Описание имя-последовательности Имя последовательности. Сочетание имени и неявно или явно заданного имени схемы не должно указывать на существующую последовательность на текущем сервере (SQLSTATE 42710). Имя-последовательности без спецификатора - это идентификатор SQL. Имя со спецификатором - это спецификатор, после которого идут точка и идентификатор SQL. Спецификатор - это имя схемы. Если для имени последовательности явно задано имя схемы, это имя схемы не может начинаться с 'SYS'; в противном случае возникает ошибка (SQLSTATE 42939). AS тип-данных Задает тип данных, который должен использоваться для значения последовательности. Этот тип данных может быть любым точным числовым типом (SMALLINT, INTEGER, BIGINT или DECIMAL) с масштабом 0 или пользовательским особым типом, исходным типом которого является точный числовой тип с масштабом 0 (SQLSTATE 42815). Тип по умолчанию - INTEGER. START WITH числовая-константа Задает первое значение для этой последовательности. Оно может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820); справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA). Значение по умолчанию - MINVALUE для возрастающих последовательностей и MAXVALUE для убывающих последовательностей. При достижении последовательностью ее максимального или минимального циклическая генерация не обязательно будет продолжена с этого начального значения. Условие START WITH может использоваться для запуска последовательности со значения, выходящего за границы цикла генерации. Диапазон циклической генерации определяется значениями MINVALUE и MAXVALUE. INCREMENT BY числовая-константа Задает интервал между соседними значениями последовательности. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820) и которое не превосходит значения константы large integer (SQLSTATE 42815), и справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA). Если это отрицательное значение, последовательность значений будет убывающей. Если это положительное значение, последовательность значений будет возрастающей. Если это значение равно 0 или если оно выходит за диапазон, определяемый значениями MINVALUE и MAXVALUE, будет генерироваться одно и то же значение, но последовательность все равно будет считаться возрастающей последовательностью. Значение по умолчанию - 1. MINVALUE или NO MINVALUE Задает минимальное значение, по достижении которого для убывающей последовательности прекращается генерация значений или начинается следующий цикл генерации значений; для возрастающей последовательности это значение, с которого начинается следующий цикл генерации после достижения максимального значения. MINVALUE числовая-константа Задает числовую константу, определяющую минимальное значение. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820), но справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA) и это значение должно быть меньше или равно максимальному значению (SQLSTATE 42815). NO MINVALUE Для возрастающей последовательности минимальное значение будет равно значению START WITH или 1, если значение START WITH не задано. Для убывающей последовательности минимальное значение будет равно минимальному значению типа данных, связанного с этой последовательностью. Эта опция принимается по умолчанию. MAXVALUE или NO MAXVALUE Задает максимальное значение, по достижении которого для возрастающей последовательности прекращается генерация значений или начинается следующий цикл генерации значений; для убывающей последовательности это значение, с которого начинается следующий цикл генерации после достижения минимального значения. MAXVALUE числовая-константа Задает числовую константу, определяющую максимальное значение. Это значение может быть любым положительным или отрицательным значением, которое можно присваивать столбцу типа данных, связанного с этой последовательностью (SQLSTATE 42820), но справа от разделителя целой и дробной части не должно быть ненулевых знаков (SQLSTATE 428FA) и это значение должно быть больше или равно минимальному значению (SQLSTATE 42815). NO MAXVALUE Для возрастающей последовательности максимальное значение будет равно максимальному значению типа данных, связанного с этой последовательностью. Для убывающей последовательности максимальное значение будет равно значению START WITH или -1, если значение START WITH не задано. Эта опция принимается по умолчанию. CYCLE или NO CYCLE Задает, нужно ли продолжать генерировать значения последовательности после достижения максимального или минимального значения последовательности. Граница последовательности может быть достигнута, либо когда следующее значение достигнет в точности граничного условия, либо превзойдет границу. CYCLE Задает, что после достижения максимального или минимального значения генерация значений должна быть продолжена. Если используется эта опция, для возрастающей последовательности после достижения ее максимального значения генерируется ее минимальное значение, а для убывающей последовательности после достижения ее минимального значения генерируется ее максимальное значение. Минимальное и максимальное значения для последовательности определяют диапазон, используемый для циклической генерации значений. Если задан параметр CYCLE, для последовательности могут быть сгенерированы повторяющиеся значения. NO CYCLE Задает, что после достижения максимального или минимального значения генерация значений будет прекращена. Эта опция принимается по умолчанию. CACHE или NO CACHE Задает, нужно ли для ускорения доступа хранить в памяти некоторое число заранее вычисленных значений. Это опция влияет на производительность и настройку. CACHE целая-константа Задает максимальное число значений последовательности, которые заранее вычисляются и хранятся в памяти. Предварительное размещение и хранение значение в кэше сокращает синхронный ввод-вывод в журнал при генерации значений последовательности. При возникновении системной ошибки все хранящиеся в кэше и еще неиспользованные в принятых операторах значения последовательности будут потеряны (то есть вообще не будут использованы). Заданное в опции CACHE значение - это максимальное число значений последовательности, которые могут быть потеряны в случае системной ошибки. Минимальное значение - 2 (SQLSTATE 42815). Значение по умолчанию - CACHE 20. NO CACHE Задает, что значения последовательности не будут вычисляться заранее. Это гарантирует, что никакие значения не будут потеряны в случае системной ошибки, перезагрузки или деактивации базы данных. Если задана эта опция, значения последовательности не хранятся в кэше. В этом случае при каждом запросе нового значения последовательности будет выполняться операция синхронного ввода-вывода в журнал. NO ORDER или ORDER Задает, нужно ли генерировать значения последовательности в порядке запросов. ORDER Задает, что значения последовательности должны генерироваться в порядке запросов. NO ORDER Задает, что значения последовательности не нужно генерировать в порядке запросов. Эта опция принимается по умолчанию. Версия Можно определить последовательность, содержащую одинаковые значения, то есть всегда возвращающую одно и то же значение. Для этого можно задать одинаковые значения MINVALUE и MAXVALUE или задать нулевое значение INCREMENT. В любом случае чтобы разрешить NEXTVAL генерировать несколько раз одно и то же значение, необходимо задать опцию CYCLE. Последовательность с одинаковыми значениями может использоваться в качестве числовой глобальной переменной. Для изменения значения, генерируемого последовательностью с одинаковыми значениями, можно использовать оператор ALTER SEQUENCE. С помощью оператора ALTER SEQUENCE можно вручную сделать последовательность циклической. Если явно или неявно задана опция NO CYCLE, последовательность можно перезапустить или расширить, используя оператор ALTER SEQUENCE, чтобы вызвать продолжение генерации значений после того, как было достигнуто максимальное или минимальное значение для этой последовательности. При кэшировании значений последовательности некоторое число ее значений может храниться в памяти для быстрого доступа. Когда прикладная программа обращается к последовательности, для которой следующее значение может быть взято из кэша, это значение будет получено быстро. Однако если прикладная программа обращается к последовательности, следующее значение которой не может быть взято из кэша, для получения этого значения может потребоваться ожидание выполнения операций ввода-вывода для всей области хранения значений. При выборе значения опции CACHE нужно выбирать между производительностью и потребностями прикладной программы. Владелец новой последовательности обладает для нее привилегиями ALTER и USAGE. Владелец последовательности может предоставлять для нее только привилегию USAGE и только всем пользователям (PUBLIC). Поддерживается также следующий синтаксис: NOMINVALUE, NOMAXVALUE, NOCYCLE, NOCACHE и NOORDER. Примеры Пример 1: Создать последовательность с именем org_seq: CREATE SEQUENCE org_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 24 38.5.11 CREATE TRIGGER CREATE TRIGGER Внутреннее представление >>-CREATE TRIGGER--имя-триггера----+-NO CASCADE BEFORE-+--------> '-AFTER-------------' >-----+-INSERT-----------------------------+--ON--имя-таблицы---> +-DELETE-----------------------------+ '-UPDATE--+------------------------+-' | .-,--------------. | | V | | '-OF----имя-столбца---+--' >-----+---------------------------------------------------------------------------+> | .---------------------------------------------------------. | | V (1) (2) .-AS-. | | '-REFERENCING-------------------+-OLD--+----+--внутриоператорное-имя--+--+--' | .-AS-. | +-NEW-+----+--внутриоператорное-имя---+ | .-AS-. | +-OLD_TABLE-+----+--идентификатор-----+ | .-AS-. | '-NEW_TABLE-+----+--идентификатор-----' >-----+-FOR EACH ROW---------------+-- MODE DB2SQL-------------> | (3) | '--------FOR EACH STATEMENT--' >-----| действие-триггера |------------------------------------>< действие-триггера |--+------------------------------+--оператор-процедуры-SQL-----| '-WHEN--(--критерий-поиска--)--' Примечания: Каждое из условий OLD и NEW можно задавать только один раз. Каждое из условий OLD_TABLE и NEW_TABLE можно задавать только один раз и только для триггеров AFTER. Условие FOR EACH STATEMENT нельзя задавать для триггеров BEFORE. Описание "triggered-action" ("действия-триггера") замените на следующее: действие-триггера Задает действие, выполняемое при активации триггера. Это действие состоит из оператора-процедуры-SQL и необязательного условия для выполнения этого оператора. WHEN (критерий-поиска) Задает критерий, который может принимать значения true, false или unknown. критерий-поиска позволяет определить, нужно ли выполнять действие триггера в конкретном случае. Действие триггера выполняется только в том случае, когда заданный критерий поиска имеет значение true. Если условие WHEN не задано, связанный с ним оператор-процедуры-SQL будет выполняться во всех случаях. оператор-процедуры-SQL Оператор-процедуры-SQL может содержать динамический составной оператор или любой из управляющих операторов SQL, перечисленных в разделе Составной оператор (динамический). Если это триггер BEFORE, оператор-процедуры-SQL может также содержать полную выборку или оператор SET переменная (SQLSTATE 42987). Если это триггер AFTER, оператор-процедуры-SQL может также содержать один из следующих операторов (SQLSTATE 42987): оператор SQL INSERT оператор SQL UPDATE с поиском оператор SQL DELETE с поиском оператор SET переменная полную выборку 7 В операторе-процедуры-SQL нельзя использовать неопределенные переходные переменные (SQLSTATE 42703) или объявленные временные таблицы (SQLSTATE 42995). В операторе-процедуры-SQL триггера BEFORE нельзя использовать таблицу сводки, определенную с условием REFRESH IMMEDIATE (SQLSTATE 42997). В операторе-процедуры-SQL триггера BEFORE нельзя использовать генерируемые столбцы (кроме столбца идентификации) в новой переходной переменной (SQLSTATE 42989). Раздел Notes (Примечания) изменен следующим образом: Результат полной выборки, заданной в операторе-процедуры-SQL не доступен внутри и вне триггера. Неработоспособные триггеры: Неработоспособный триггер - это триггер, который более недоступен и поэтому никогда не активируется. Триггеры становятся неработоспособными, если: Создатель триггера был лишен привилегии, необходимой для выполнения триггера. Отброшен объект (такой как таблица, производная таблица или алиас), от которого зависит действие триггера. Производная таблица, от которой зависит действие триггера, стала неработоспособной. Отброшен алиас, представляющий рабочую таблицу триггера. Практически неработоспособный триггер - это триггер, определение которого было отброшено в результате последовательного применения правил для операторов DROP или REVOKE. Например, если отброшена производная таблица, все триггеры, в определении оператора-процедуры-SQL которых используется эта производная таблица, становятся неработоспособными. Если триггер стал неработоспособными, все пакеты с операторами, выполняющими действия, которые активировали этот триггер, отмечаются как дефектные. При повторном связывании пакета (явном или неявном) неработоспособный триггер полностью игнорируется. Аналогично, прикладные программы с динамическими операторами SQL, выполняющие действия, которые активировали этот триггер, также будут полностью игнорировать все неработоспособные триггеры. Имя такого триггера все еще можно задавать в операторах DROP TRIGGER и COMMENT ON TRIGGER. Неработоспособный триггер можно создать заново с помощью оператора CREATE TRIGGER, используя текст определения этого неработоспособного триггера. Текст этого определения триггера хранится с столбце TEXT таблицы SYSCAT.TRIGGERS. Обратите внимание на то, что не нужно явно отбрасывать неработоспособный триггер, чтобы создать его заново. Если введен оператор CREATE TRIGGER с тем же именем-триггера, что и неработоспособный триггер, этот неработоспособный триггер будет заменен и будет выдано предупреждение (SQLSTATE 01595). Неработоспособные триггеры обозначаются символом X в столбце VALID производной таблицы каталога SYSCAT.TRIGGERS. Ошибки при выполнении триггеров: Если при выполнении оператора SQL триггера возникли ошибки, которые не считаются серьезными, возвращается SQLSTATE 09000. Если возникла серьезная ошибка, возвращается SQLSTATE этой ошибки. Для ошибок, не считающихся серьезными, поле SQLERRMC области SQLCA будет содержать имя триггера, SQLCODE, SQLSTATE и все уместившиеся в нем элементы сообщения об ошибке. Оператор-процедуры-SQL может содержать оператор SIGNAL SQLSTATE или функцию RAISE_ERROR. В обоих этих случаях возвращается SQLSTATE, заданный в операторе SIGNAL SQLSTATE или условии RAISE_ERROR. 38.5.12 CREATE WRAPPER В Linux используются библиотеки LIBDRDA.SO и LIBSQLNET.SO, а не LIBDRDA.A и LIBSQLNET.A. 38.5.13 DECLARE CURSOR В операторе "DECLARE CURSOR" ближе к концу раздела Примечания предложение: An ambiguous cursor is considered read-only if the BLOCKING bind option is ALL, otherwise it is considered deletable. надо заменить на: Неоднозначный указатель считается неизменяемым, если опция связывания BLOCKING=ALL; в противном случае он может быть изменен. Изменение состоит в замене слова "deletable" (может быть удален) на "updatable" (может быть изменен). 38.5.14 DELETE Синтаксическая диаграмма оператора DELETE с поиском изменена на следующую: >>-DELETE FROM----+-имя-таблицы-------------------------------+-> +-имя-производной-таблицы-------------------+ '-ONLY--(--+-имя-таблицы-------------+---)--' '-имя-производной-таблицы-' >-----+--------------------------------+------------------------> | .-AS-. | '-+----+--внутриоператорное-имя--' >-----+-------------------------+---+---------------+---------->< '-WHERE--критерий-поиска--' '-WITH--+-RR-+--' +-RS-+ +-CS-+ '-UR-' DELETE с указанием позиции: >>-DELETE FROM----+-имя-таблицы-------------------------------+-> +-имя-производной-таблицы-------------------+ '-ONLY--(--+-имя-таблицы-------------+---)--' '-имя-производной-таблицы-' >----WHERE CURRENT OF--имя-указателя--------------------------->< Добавьте следующий текст в раздел описания: WITH Задает уровень изоляции, используемый при поиске удаляемых строк. RR Многократное чтение RS Стабильность чтения CS Стабильность на уровне указателя UR Чтение непринятого По умолчанию уровень изоляции оператора - это уровень изоляции пакета, в котором связан этот оператор. 38.5.15 DROP Добавьте следующую опцию: >>-SEQUENCE--имя-последовательности--RESTRICT------------------>< Добавьте следующие параметры: SEQUENCE имя-последовательности RESTRICT Указывает конкретную последовательность, которую нужно отбросить. Имя-последовательности вместе с неявно или явно заданным именем схемы должно задавать существующую последовательность на текущем сервере. Если в явно или неявно заданной схеме нет последовательности с таким именем, возникает ошибка (SQLSTATE 42704). Ключевое слово RESTRICT запрещает отбрасывать последовательность, если она используется в определении какого-либо столбца таблицы (для столбца IDENTITY). Прим.:Созданные системой последовательности для столбцов IDENTITY нельзя отбросить с помощью команды DROP последовательность. При отбрасывании последовательности отбрасываются также все привилегии для этой последовательности. Таблицу, в которой показаны зависимости объектов друг от друга (Таблица 27), нужно изменить так: Новая строка: DROP SEQUENCE. Элемент таблицы на пересечении этой новой строки "DROP SEQUENCE" и столбца "PACKAGE" будет содержать "A". Остальные элементы в этой новой строке будут содержать "-". 38.5.16 GRANT (привилегии для последовательности) GRANT (привилегии для последовательности) Эта форма оператора GRANT предоставляет привилегии для пользовательской последовательности. Коды возврата Этот оператор может быть встроен в прикладную программу или выполняться как динамический оператор SQL. Это выполняемый оператор, который можно подготовить динамически. Но если применяется опция связывания DYNAMICRULES BIND, этот оператор нельзя подготовить динамически (SQLSTATE 42509). Авторизация Привилегии ID авторизации этого оператора, должны включать, как минимум, одну из следующих привилегий: Привилегии владельца последовательности Полномочия SYSADM или DBADM Внутреннее представление >>-GRANT--USAGE--ON SEQUENCE--имя-последовательности--TO PUBLIC--> >-------------------------------------------------------------->< Описание USAGE Предоставляет привилегию USAGE для последовательности. ON SEQUENCE имя-последовательности Задает последовательность, для которой нужно предоставить привилегию USAGE. Имя-последовательности вместе с неявно или явно заданным именем схемы, должно однозначно задавать существующую последовательность на текущем сервере. Если в заданной схеме нет последовательности с таким именем, возникает ошибка (SQLSTATE 42704). TO PUBLIC Предоставить привилегию USAGE всем пользователям. Примеры Пример 1: Предоставляет всем пользователям привилегию для последовательности с именем MYNUM GRANT USAGE ON SEQUENCE MYNUM TO PUBLIC 38.5.17 INSERT Синтаксическая диаграмма изменена на: >>-INSERT INTO----+-имя-таблицы-------------+-------------------> '-имя-производной-таблицы-' >-----+----------------------------+----------------------------> | .-,--------------. | | V | | '-(-----имя-столбца---+---)--' .-,-----------------------------------. V | >-----+-VALUES------+-+-выражение-+----------------+--+---------------+> | | +-NULL------+ | | | | '-DEFAULT---' | | | | .-,----------------. | | | | V | | | | '-(------+-выражение-+--+---)--' | | +-NULL------+ | | '-DEFAULT---' | '-+-----------------------------------------+---полная-выборка--' | .-,----------------------------. | | V | | '-WITH-----общее-табличное-выражение---+--' >-----+---------------+---------------------------------------->< '-WITH--+-RR-+--' +-RS-+ +-CS-+ '-UR-' Добавьте следующий текст в раздел описания: WITH Задает уровень изоляции, используемый при выполнении полной выборки. RR Многократное чтение RS Стабильность чтения CS Стабильность на уровне указателя UR Чтение непринятого По умолчанию уровень изоляции оператора - это уровень изоляции пакета, в котором связан этот оператор. 38.5.18 SELECT INTO Синтаксическая диаграмма заменена на следующую: .-,-------------------. V | >>-условие-select--INTO-------переменная-хоста---+--------------> >----условие-from-----------------------------------------------> >----+---------------+--+------------------+--+----------------+-> '-условие-where-' '-условие-group-by-' '-условие-having-' >-----+---------------+---------------------------------------->< '-WITH--+-RR-+--' +-RS-+ +-CS-+ '-UR-' Добавьте следующий текст в раздел описания: WITH Задает уровень изоляции, используемый при выполнении оператора SELECT INTO. RR Многократное чтение RS Стабильность чтения CS Стабильность на уровне указателя UR Чтение непринятого По умолчанию уровень изоляции оператора - это уровень изоляции пакета, в котором связан этот оператор. 38.5.19 SET ENCRYPTION PASSWORD SET ENCRYPTION PASSWORD Оператор SET ENCRYPTION PASSWORD задает пароль, который будет использоваться функциями шифрования и дешифрования. Этот пароль не связан с аутентификацией DB2, он используется только для шифрования данных. Этот оператор не контролируется программой управления транзакциями. Коды возврата Этот оператор может быть включен в прикладную программу или задаваться интерактивно. Это исполняемый оператор, который может быть подготовлен динамически. Авторизация Для выполнения этого оператора не требуются полномочия. Внутреннее представление .-=-. >>-SET--ENCRYPTION PASSWORD--+---+--+-переменная-хоста---+----->< '-строчная-константа-' Описание Параметр ENCRYPTION PASSWORD может использоваться встроенными функциями ENCRYPT, DECRYPT_BIN и DECRYPT_CHAR для шифрования на основе пароля. Пароль может иметь длину от 6 до 127 байт, включительно. Все символы должны задаваться в нужном регистре, так как их преобразование в верхний регистр не производится. переменная-хоста Переменная типа CHAR или VARCHAR. Длина содержимого этой переменной хоста должна быть от 6 до 127 байт включительно (SQLSTATE 428FC). Для нее нельзя задать пустое значение. Все символы должны задаваться в нужном регистре, так как их преобразование в верхний регистр не производится. строчная-константа Константа типа символьная строка. Ее длина должна быть от 6 до 127 байт включительно (SQLSTATE 428FC). Правила Исходное значение ENCRYPTION PASSWORD - пустая строка (''). Эта переменная-хоста или строчная-константа передается серверу баз данных с помощью обычных механизмов DB2. Версия Дополнительную информацию об использовании этого оператора смотрите в разделах 38.3.2.3, ENCRYPT и 38.3.2.2, DECRYPT_BIN и DECRYPT_CHAR. Примеры Пример 1: Следующий оператор задает ENCRYPTION PASSWORD. SET ENCRYPTION PASSWORD = 'bubbalu' 38.5.20 SET переходная-переменная Этот раздел изменен следующим образом: SET переменная Оператор SET переменная присваивает значения локальным переменным или новым переходным переменным. Он контролируется программой управления транзакциями. Коды возврата Это оператор можно использовать только как оператор SQL в динамических составных операторах, триггерах, функциях SQL или методах SQL. Авторизация Чтобы можно было использовать переходные переменные, привилегии ID авторизации создателя триггера, должны включать, как минимум, одну из следующих привилегий: Привилегии UPDATE для столбцов, указанных в левой части присваивания, и SELECT для всех столбцов, указанных в правой части присваивания. Привилегию CONTROL для таблицы (рабочей таблицы триггера) Полномочия SYSADM или DBADM. Чтобы выполнять этот оператор с полной-выборкой-строк в правой части присваивания, привилегии ID авторизации создателя триггера или владельца динамического составного оператора, должны также включать по крайней мере одну из следующих привилегий для каждой используемой в операторе таблицы или производной таблицы: Привилегия SELECT Привилегия CONTROL Полномочия SYSADM или DBADM. Внутреннее представление >>-SET----------------------------------------------------------> .-,--------------------------------------------------------------------------------------. V | >--------+-| переменная-назначения |--=--+-выражение-+--------------------------------------+--+> | +-NULL------+ | | '-DEFAULT---' | | .-,----------------------------. .-,-------------------. | | V | V (1) | | '-(-----| переменная-назначения |---+---)--=--(--+----+-выражение------+--+-+---)--' | +-NULL-----------+ | | '-DEFAULT--------' | | (2) | '-полная-выборка-----------' >-------------------------------------------------------------->< переменная-назначения |---+-имя-переменной-SQL--------+---+------------------------+--| '-имя-переходной-переменной-' | .------------------. | | V | | '----..имя-атрибута---+--' Примечания: Число выражений и ключевых слов NULL и DEFAULT должно совпадать с числом переменных-назначения. Число столбцов в списке столбцов выборки должно совпадать с числом переменных-назначения. Описание переменная-назначения Задает переменную назначения для присваивания. Переменную-назначения, представляющую одну и ту же переменную, нельзя задавать несколько раз (SQLSTATE 42701). имя-переменной-SQL Задает переменную SQL - назначение присваивания. Переменные SQL должны быть объявлены до их использования. Переменные SQL могут быть определены в динамическом составном операторе. имя-переходной-переменной Задает столбец, который нужно изменить в переходной строке. Имя-переходной-переменной должно задавать столбец в рабочей таблице триггера; в качестве необязательного спецификатора можно задать внутриоператорное имя, указывающее на новое значение (SQLSTATE 42703). ..имя-атрибута Задает атрибут структурированного типа, для которого задается значение (указанный в присваивании атрибутов). Заданное имя-переменной-SQL или имя-переходной-переменной должно быть определено с пользовательским структурированным типом (SQLSTATE 428DP). Имя-атрибута должно быть атрибутом этого структурированного типа (SQLSTATE 42703). Присваивание, для которого не задано условие ..имя-атрибута, называют обычным присваиванием. выражение Задает новое значение переменной-назначения. Это может быть любое выражение, описанное в главе 2 справочника SQL Reference. Это выражение не может содержать функцию столбца, за исключением случая, когда оно входит в скалярную полную выборку (SQLSTATE 42903). В контексте оператора CREATE TRIGGER выражение может содержать ссылки на переходные переменные OLD и NEW, при этом для задания конкретной переходной переменной в качестве спецификатора должно быть задано внутриоператорное имя (SQLSTATE 42702). NULL Задает пустое значение; может использоваться только для столбцов, допускающих пустые значения (SQLSTATE 23502). Ключевое слово NULL нельзя задать в присваивании атрибута (SQLSTATE 429B9), если оно не может быть преобразовано в тип данных этого атрибута. DEFAULT Задает, что должно использоваться значение по умолчанию. Если переменная-назначения - это столбец, вставляемое значение зависит от того, как определен этот столбец в таблице. Если в определении столбца задано условие WITH DEFAULT, в качестве этого значения используется значение по умолчанию, заданное для этого столбца. Если в определении столбца задано условие IDENTITY, это значение генерируется менеджером баз данных. Если в определении столбца не заданы условия WITH DEFAULT, IDENTITY или NOT NULL, это значение будет равно NULL. Если в определении столбца задано условие NOT NULL, но не задано условие IDENTITY или условие WITH DEFAULT или задано условие DEFAULT NULL, для этого столбца нельзя задавать ключевое слово DEFAULT (SQLSTATE 23502). Если переменная-назначения - это переменная SQL, то вставляемое значение - это значение по умолчанию, заданное или подразумеваемое в объявлении этой переменной. полная-выборка-строки Полная выборка, возвращающая одну строку с числом столбцов, соответствующим числу переменных-назначения, заданных для присваивания. Значения присваиваются каждой соответствующей переменной-назначения. Если результат полной-выборки-строки не содержит строки, присваиваются пустые значения. В контексте оператора CREATE TRIGGER полная-выборка-строки может содержать ссылки на переходные переменные OLD и NEW, имя-корреляции которых должно указывать используемую переходную переменную (SQLSTATE 42702). Если результат содержит несколько строк, возникает ошибка (SQLSTATE 21000). Правила Число значений для присваивания, задаваемых выражениями, ключевыми словами NULL и DEFAULT или полной-выборкой-строки, должно совпадать с числом переменных-назначения, заданных для присваивания (SQLSTATE 42802). В одном операторе SET переходная переменная нельзя присваивать значения переменной SQL и переходной переменной (SQLSTATE 42997). Значения присваиваются переменным-назначения в соответствии с правилами, описанными в главе 2 справочника SQL Reference. Если оператор используется в триггере BEFORE UPDATE и переменная реестра DB2_UPDATE_PART_KEY=OFF, переходная-переменная, заданная в качестве переменной-назначения, не может быть столбцом ключа разделения (SQLSTATE 42997). Версия Если оператор содержит несколько присваиваний, все выражения и полные-выборки-строки вычисляются перед выполнением присваиваний. Поэтому ссылки на переменные-назначения в выражении или полной выборке строки всегда дают значение переменной-назначения, которое она имела до выполнения всех присваиваний в отдельном операторе SET. При обновлении столбца идентификации, который определен с особым типом данных, все вычисления производятся в исходном типе данных и затем результат преобразуется в этот особый тип перед фактическим присваиванием значения столбцу. 8 Чтобы система DB2 генерировала значение в операторе SET для столбца идентификации, используйте ключевое слово DEFAULT: SET NEW.EMPNO = DEFAULT В этом примере NEW.EMPNO определен как столбец идентификации; используемое для его обновления значение генерируется DB2. Примеры для этого оператора остались без изменений. 38.5.21 UPDATE Синтаксическая диаграмма оператора UPDATE с поиском изменена: >>-UPDATE----+-имя-таблицы-------------------------------+------> +-имя-производной-таблицы-------------------+ '-ONLY--(--+-имя-таблицы-------------+---)--' '-имя-производной-таблицы-' >-----+--------------------------------+------------------------> | .-AS-. | '-+----+--внутриоператорное-имя--' >-----SET--| условие-присваивания |-----------------------------> >-----+-------------------------+---+---------------+---------->< '-WHERE--критерий-поиска--' '-WITH--+-RR-+--' +-RS-+ +-CS-+ '-UR-' Добавьте следующий текст в раздел описания: WITH Задает уровень изоляции, используемый при выполнении оператора UPDATE. RR Многократное чтение RS Стабильность чтения CS Стабильность на уровне указателя UR Чтение непринятого По умолчанию уровень изоляции оператора - это уровень изоляции пакета, в котором связан этот оператор. 38.6 Глава 7 "SQL Procedures" теперь называется "SQL Control Statements" Управляющие операторы - это операторы SQL, позволяющие при написании программ на языке SQL использовать методы структурного программирования. Управляющие операторы SQL можно использовать в теле процедуры, триггера или динамического составного оператора. В этой главе представлены синтаксис и описание поддерживаемых управляющих операторов SQL и оператора-процедуры-SQL. 38.6.1 Оператор процедуры SQL Информация об операторе процедуры SQL изменена следующим образом: Оператор процедуры SQL В этой главе представлены синтаксические диаграммы, описания семантики, правила и примеры использования операторов, составляющих тело процедуры SQL, триггера или динамического составного оператора. Внутреннее представление >>-+---------+---+-| управляющий-оператор-SQL |-+-------------->< '-метка:--' '-| оператор-SQL |-------------' управляющий-оператор-SQL (1) |---+-оператор ALLOCATE CURSOR-------------+--------------------| | (1) | +-оператор присваивания----------------+ | (1) | +-оператор ASSOCIATE LOCATORS----------+ | (1) | +-оператор CASE------------------------+ | (2) | +-динамический составной оператор------+ +-оператор FOR-------------------------+ +-оператор GET DIAGNOSTICS-------------+ | (1) | +-оператор GOTO------------------------+ +-оператор IF--------------------------+ +-оператор ITERATE---------------------+ +-оператор LEAVE-----------------------+ | (1) | +-оператор LOOP------------------------+ | (1) | +-составной оператор процедуры---------+ | (1) | +-оператор REPEAT----------------------+ | (1) | +-оператор RESIGNAL--------------------+ +-оператор RETURN----------------------+ +-оператор SIGNAL----------------------+ '-оператор WHILE-----------------------' Примечания: Этот оператор поддерживается только внутри процедуры SQL. Этот оператор поддерживается только внутри триггера, функции SQL или метода SQL. Он должен быть самым внешним оператором. Описание метка: Задает метку для оператора процедуры SQL. Эта метка должна быть уникальной в списке операторов процедуры SQL, включая все вложенные составные операторы в этом списке. Обратите внимание, что в составных операторах, не являющихся вложенными, может использоваться та же метка. Список операторов процедуры SQL может содержать некоторое число управляющих операторов SQL. В контексте триггера, функции SQL, метода SQL или динамического составного оператора метки можно задавать только для динамических составных операторов и операторов FOR и WHILE. оператор-SQL Тело процедуры SQL может содержать все выполняемые операторы SQL, за исключением следующих: CONNECT CREATE для любого объекта, кроме индекса, таблицы или производной таблицы DESCRIBE DISCONNECT DROP для любого объекта, кроме индекса, таблицы или производной таблицы FLUSH EVENT MONITOR REFRESH TABLE RELEASE (только соединение) RENAME TABLE RENAME TABLESPACE REVOKE SET CONNECTION SET INTEGRITY Прим.:В тело процедуры SQL можно включить операторы CALL, но эти операторы CALL могут вызывать только другие процедуры SQL или процедуры C. Операторы CALL в теле процедуры SQL не могут вызывать другие типы хранимых процедур. 38.6.2 FOR FOR Оператор FOR выполняет некоторый оператор или группу операторов для каждой строки таблицы. Внутреннее представление >>-+---------+---FOR--имя-цикла-for--AS-------------------------> '-метка:--' >-----+---------------------------------+--операторы SELECT-----> | (1) | '-имя-указателя--CURSOR FOR-------' .------------------------------. V | >----DO-------оператор-процедуры-SQL--;---+--END FOR------------> >-----+--------+----------------------------------------------->< '-метка--' Примечания: Эта опция может использоваться только в контексте процедуры SQL. Описание метка Задает метку для этого оператора FOR. Если задана метка начала, ее можно использовать в операторах LEAVE и ITERATE. Если задана метка конца, она должна совпадать с меткой начала. имя-цикла-for Задает метку для неявного составного оператора, создаваемого для реализации этого оператора FOR. Она подчиняется тем же правилам, что метка составного оператора, но ее нельзя использовать в операторе ITERATE или LEAVE внутри этого оператора FOR. Имя-цикла-for используется в качестве спецификатора для имен столбцов, возвращаемых заданным оператором-выборки. имя-указателя Задает имя указателя, используемого для выборки строк из таблицы результатов оператора SELECT. Если это имя не задано, DB2 генерирует уникальное имя указателя. оператор-выборки Задает оператор SELECT для этого указателя. Все столбцы в списке выборки должны иметь имена и имена столбцов не должны совпадать. В триггере, функции, методе или динамическом составном операторе оператор-выборки должен состоять только из полной выборки с необязательным общим табличным выражением. оператор-процедуры-SQL Задает оператор (или операторы), который должен быть выполнен для каждой строки таблицы. Правила Список выборки должен состоять из уникальных имен столбцов, а таблица, заданная в списке выборки, должна существовать в момент создания процедуры или создаваться в одном из предыдущих операторов процедуры SQL. Указатель, заданный в операторе-for, нельзя использовать вне этого оператора-for; его нельзя задавать в операторах OPEN, FETCH или CLOSE. Примеры В следующем примере оператор-for используется для обработки всей таблицы employee. Для каждой строки этой таблицы переменной SQL fullname присваивается строка, содержащая: фамилию работника, запятую, имя, пробел и инициал отчества. Каждое значение fullname вставляется в таблицу tnames. BEGIN DECLARE fullname CHAR(40); FOR vl AS SELECT firstnme, midinit, lastname FROM employee DO SET fullname = lastname || ',' || firstnme ||' ' || midinit; INSERT INTO tnames VALUE (fullname); END FOR END 38.6.3 Заголовок раздела Compound Statement изменен на Compound Statement (Procedure) Составной оператор процедуры объединяет вместе другие операторы в процедуру SQL. Внутри составного оператора можно объявлять переменные SQL, указатели и обработчики условий. Синтаксическая диаграмма теперь имеет заголовок: составной-оператор-процедуры. .-NOT ATOMIC--. >>-+---------+--BEGIN----+-------------+------------------------> '-метка:--' '-ATOMIC------' >-----+------------------------------------------------+--------> | .------------------------------------------. | | V | | '-----+-| объявление-переменной-SQL |-+---;---+--' +-| объявление-условия |--------+ '-| объявление-кодов-возврата |-' >-----+-------------------------------------+-------------------> | .-------------------------------. | | V | | '----| объявление-оператора |--;---+--' >-----+------------------------------------+--------------------> | .------------------------------. | | V | | '----оператор-DECLARE-CURSOR--;---+--' >-----+---------------------------------------+-----------------> | .---------------------------------. | | V | | '----| объявление-обработчика |--;---+--' .------------------------------. V | >--------оператор-процедуры-SQL--;---+---END--+--------+------->< '-метка--' объявление-переменной-SQL .-,---------------------. V | |---DECLARE-------имя-переменной-SQL---+------------------------> .-DEFAULT NULL--------. >-----+-тип-данных----+---------------------+-+-----------------| | '-DEFAULT--константа--' | '-RESULT_SET_LOCATOR--VARYING-----------' объявление-условия |---DECLARE--имя-условия--CONDITION--FOR------------------------> .-VALUE-. .-SQLSTATE--+-------+---. >----+-----------------------+---строчная-константа-------------| объявление-оператора .-,----------------. V | |---DECLARE-----имя-оператора---+---STATEMENT-------------------| объявление-кодов-возврата |---DECLARE----+-SQLSTATE--CHAR (5)--+--------------------------> '-SQLCODE--INTEGER----' >-----+---------------------+-----------------------------------| '-DEFAULT--константа--' объявление-обработчика |---DECLARE----+-CONTINUE-+---HANDLER--FOR----------------------> +-EXIT-----+ '-UNDO-----' .-,-----------------------------------. V .-VALUE-. | >---------+-SQLSTATE--+-------+--строка--+--+-------------------> +-имя-условия------------------+ +-SQLEXCEPTION-----------------+ +-SQLWARNING-------------------+ '-NOT FOUND--------------------' >----оператор-процедуры-SQL-------------------------------------| объявление-оператора В объявлении-оператора объявляется список из одного или нескольких имен, локальных для этого составного оператора. Имя оператора не может совпадать с другим именем оператора в том же составном операторе. 38.6.4 RETURN RETURN Оператор RETURN используется для возврата из подпрограммы. Для функций SQL и методов SQL он возвращает значение результата этой функции или метода. Для процедуры SQL он может возвращать необязательное целое значение состояния. Внутреннее представление >>-RETURN--+---------------------------------------------------------------+-> +-выражение-----------------------------------------------------+ +-NULL----------------------------------------------------------+ '-+-----------------------------------------+---полная-выборка--' | .-,----------------------------. | | V | | '-WITH-----общее-табличное-выражение---+--' >-------------------------------------------------------------->< Описание выражение Задает значение, возвращаемое из подпрограммы: Если подпрограмма - это функция или метод, необходимо задать выражение, NULL или полную выборку (SQLSTATE 42630), а тип данных результата должен быть приводимым к типу данных RETURNS этой подпрограммы (SQLSTATE 42866). Для табличной функции нельзя задавать скалярное выражение (кроме скалярной полной выборки) (SQLSTATE 428F1). Если подпрограмма - это процедура, выражение должно иметь тип данных INTEGER (SQLSTATE 428E2). Процедура не может возвращать NULL или полную выборку. NULL Задает, что функция или метод возвращает пустое значение типа данных, определенного в условии RETURNS. Ключевое слово NULL нельзя задавать для оператора RETURN процедуры. WITH общее-табличное-выражение Определяет общее табличное выражение, используемое с задаваемой после него полной выборкой. полная-выборка Задает строку или строки, возвращаемые для этой функции. Число столбцов в полной выборке должно совпадать с числом столбцов в результате функции (SQLSTATE 42811). Кроме того, статические типы столбцов полной выборки должны быть приводимы к объявленным типам столбцов результата функции с помощью правил присваивания столбцов (SQLSTATE 42866). Полную-выборку нельзя задавать для оператора RETURN процедуры. Если подпрограмма - это скалярная функция или метод, полная выборка должна возвращать один столбец (SQLSTATE 42823) и не более одной строки (SQLSTATE 21000). Если подпрограмма - это функция строки, она должна возвращать не более одной строки (SQLSTATE 21505). Если подпрограмма - это табличная функция, она может возвращать ноль или большее число строк с одним или более столбцами. Правила Выполнение функции SQL или метода SQL должно заканчиваться оператором RETURN (SQLSTATE 42632). В функции таблицы или строки таблицы SQL, использующей динамический-составной-оператор, оператор RETURN допускается только в конце составного оператора (SQLSTATE 429BD). Версия Когда процедура возвращает значение, вызывающая программа может получить это значение, используя: оператор GET DIAGNOSTICS, чтобы получить RETURN_STATUS, если эта процедура SQL была вызвана из другой процедуры SQL параметр, связанный с маркером параметра для возвращаемого значения в условии ESCAPE при соответствующем синтаксисе оператора CALL (?=CALL...) в прикладной программе CLI напрямую из SQLCA, возвращенной после выполнения вызова (CALL) процедуры SQL - получив значение SQLERRD[0], если SQLCODE не меньше нуля (предполагая значение -1, если SQLCODE меньше нуля). Примеры Используется оператор RETURN для возвращения из хранимой процедуры SQL - со значением 0 при успешном выполнении процедуры и со значением -200 в случае ошибки. BEGIN ... GOTO FAIL ... SUCCESS: RETURN 0 FAIL: RETURN -200 END 38.6.5 SIGNAL Оператор SIGNAL SQLSTATE более не используется, вместо него используется этот оператор. SIGNAL Оператор SIGNAL используется, чтобы сигнализировать об условии ошибки или предупреждения. Он вызывает возврат ошибки или предупреждения с заданным SQLSTATE и необязательным текстом сообщения. Внутреннее представление >>-SIGNAL-------------------------------------------------------> .-VALUE-. >-----+-SQLSTATE--+-------+--строчная-константа-sqlstate--+-----> '-имя-условия---------------------------------------' >-----+------------------------------------------------------------+> +-SET--MESSAGE_TEXT-- = --+-имя-переменной-----------------+-+ | '-строчная-константа-диагностики-' | | (1) | '-(--строка-диагностики--)-----------------------------------' >-------------------------------------------------------------->< Примечания: Эта опция сделана доступной только в области видимости оператора CREATE TRIGGER для совместимости с более ранними версиями DB2. Описание SQLSTATE VALUE строчная-константа-sqlstate Задает строчную константу, представляющую SQLSTATE. Она должна быть символьной строчной константой, содержащей ровно 5 символов и удовлетворяющей правилам для SQLSTATE: Все символы должны быть цифрами (от '0' до '9') или символами латинских букв верхнего регистра (от 'A' до 'Z'). Класс SQLSTATE (первые два символа) не может быть равен '00', поскольку это значение означает успешное выполнение. В контексте динамического составного оператора, триггера, функции SQL или метода SQL также должны применяться следующие правила: Класс SQLSTATE (первые два символа) не может быть равен '01' или '02', так как эти классы не являются классами ошибок. Если класс SQLSTATE начинается с цифр от '0' до '6' или с букв от 'A' до 'H', подкласс (последние три символа) должен начинаться с буквы от 'I' до 'Z'. Если класс SQLSTATE начинается с цифр от '7', '8' или '9' или с букв от 'I' до 'Z', подкласс может начинаться с любой цифры от '0' до '9' или цифры от 'A' до 'Z'. Если SQLSTATE не удовлетворяет этим правилам, возникает ошибка (SQLSTATE 428B3). имя-условия Задает имя условия. Имя условия должно быть уникальным в процедуре; на него можно ссылаться только внутри составного оператора, в котором оно определено. SET MESSAGE_TEXT= Задает строку, описывающую ошибку или предупреждение. Эта строка возвращается в поле SQLERRMC области SQLCA. Если заданная строка длиннее 70 байт, она усекается (предупреждение не выдается). Это условие можно задавать, только если заданы SQLSTATE или имя-условия (SQLSTATE 42601). имя-переменной Указывает переменную SQL, которая должна быть объявлена внутри этого составного оператора. Эта переменная SQL должна быть определена с типом данных CHAR или VARCHAR. строчная-константа-диагностики Задает символьную строку-константу, содержащую текст сообщения. строка-диагностики Выражение типа CHAR или VARCHAR, возвращающее символьную строку длиной до 70 байт, описывающую условие ошибки. Если эта строка длиннее 70 байт, она будет усечена. Эта опция сделана доступной только в области видимости оператора CREATE TRIGGER для совместимости с более ранними версиями DB2. Не рекомендуется использовать ее в обычных случаях. Версия При выполнении оператора SIGNAL SQLCODE присваивается следующее значение: +438, если SQLSTATE начинается с '01' или '02' -438 в остальных случаях Если SQLSTATE или условие указывает на исключительную ситуацию (класс SQLSTATE, отличный от '01' или '02'): Выполняется обработка этой исключительной ситуации и управление передается ее обработчику, если обработчик существует в том же составном операторе (или во внешнем составном операторе), что и оператор SIGNAL, и составной оператор содержит обработчик для заданных SQLSTATE, имени-условия или SQLEXCEPTION; Если исключительная ситуация не может быть обработана, управление сразу передается в конец этого составного оператора. Если SQLSTATE или условие указывает на предупреждение (класс SQLSTATE '01') или на условие "не найден" (класс SQLSTATE '02'): Выполняется обработка этого предупреждения или условия "не найден" и управление передается обработчику, если обработчик существует в том же составном операторе (или во внешнем составном операторе), что и оператор SIGNAL, и составной оператор содержит обработчик для заданных SQLSTATE, имени-условия, SQLWARNING (если класс SQLSTATE равен '01') или NOT FOUND (если класс SQLSTATE равен '02'); Если предупреждение не может быть обработано, обработка продолжается со следующего оператора. Значения SQLSTATE состоят из двухсимвольного значения кода класса, после которого идет трехсимвольное значение кода подкласса. Значения кодов классов представляют классы условий успешного и неуспешного выполнения. В операторе SIGNAL можно использовать любое допустимое значение SQLSTATE. Однако программистам рекомендуется определять новые значения SQLSTATE в диапазонах их значений, зарезервированных для прикладных программ. Это позволит избежать случайного использования значения SQLSTATE, которое может быть определено менеджером баз данных в будущих выпусках. Можно определить классы SQLSTATE, начинающиеся с символов от '7' до '9' или с символов от 'I' до 'Z'. Внутри этих классов можно определить любые подклассы. Классы SQLSTATE, начинающиеся с символов от '0' до '6' или с символов от 'A' до 'H', зарезервированы для менеджера баз данных. Внутри этих классов подклассы, начинающиеся с символов от '0' до 'H', зарезервированы для менеджера баз данных. Можно определить подклассы, начинающиеся с символов от 'I' до 'Z'. Примеры Процедура SQL для более старой системы, которая сигнализирует об ошибке прикладной программы, если прикладной программе не известен номер заказчика. Таблица ORDERS (заказы) содержит внешний ключ для таблицы CUSTOMER (заказчик), требуя, чтобы CUSTNO (номер заказчика) существовал, прежде чем можно будет принять заказ. CREATE PROCEDURE SUBMIT_ORDER (IN ONUM INTEGER, IN CNUM INTEGER, IN PNUM INTEGER, IN QNUM INTEGER) SPECIFIC SUBMIT_ORDER MODIFIES SQL DATA LANGUAGE SQL BEGIN DECLARE EXIT HANDLER FOR SQLSTATE VALUE '23503' SIGNAL SQLSTATE '75002' SET MESSAGE_TEXT = 'Неизвестный номер заказчика'; INSERT INTO ORDERS (ORDERNO, CUSTNO, PARTNO, QUANTITY) VALUES (ONUM, CNUM, PNUM, QNUM); END 38.7 Приложение A. SQL Limits Изменена Таблица 33, Database Manager Limits. Если переменная реестра DB2_INDEX_2BYTEVARLEN=ON, часть ключа индекса, относящаяся к переменным, теперь может быть длиннее 255 байтов. 38.8 Приложение D. Catalog Views Добавлена новая производная таблица каталога: 38.8.1 SYSCAT.SEQUENCES Производная таблица SYSCAT.SEQUENCES автоматически генерируется для баз данных, созданных с FixPak 3 или более поздним. Чтобы добавить эта производную таблицу в базу данных, созданную до FixPak 3, выполните команду db2updv7. Подробную информацию смотрите в разделе "Изменения в Command Reference" Замечаний по выпуску. Эта производная таблица каталога обновляется при обычной работе при выполнении операторов SQL определения данных, процедур среды и некоторых утилит. Данные из этой производной таблицы каталога можно получить с помощью обычных средств запросов SQL. Имена столбцов соответствуют типам объектов, заданным при их описании. Табл. 19. Столбцы производной таблицы каталога SYSCAT.SEQUENCES Имя столбца Тип данных Допуск. пустые значения Описание SEQSCHEMA VARCHAR(128) Схема последовательности. SEQNAME VARCHAR(128) Имя последовательности (генерируется системой DB2 для столбца идентификации). DEFINER VARCHAR(128) Определяющий последовательности. OWNER VARCHAR(128) Владелец последовательности. SEQID INTEGER Внутренний ID последовательности. SEQTYPE CHAR(1) Тип последовательности S - Обычная последовательность INCREMENT DECIMAL(31,0) Значение приращения. START DECIMAL(31,0) Начальное значение. MAXVALUE DECIMAL(31,0) Да Максимальное значение. MINVALUE DECIMAL(31,0) Минимальное значение. CYCLE CHAR(1) Выполняется ли циклическая генерация после достижения граничного значения: Y - циклическая генерация выполняется N - циклическая генерация не выполняется CACHE INTEGER Число значений последовательности, заранее вычисляемых и сохраняемых в памяти для ускорения доступа. 0 означает, что значения не будут вычисляться заранее. ORDER CHAR(1) Должны ли значения последовательности генерироваться в порядке запросов: Y - значения последовательности должны генерироваться в порядке запросов N - значения последовательности не обязательно должны генерироваться в порядке запросов DATATYPEID INTEGER Для встроенных типов - внутренний ID этого встроенного типа. Для особых типов - внутренний ID этого особого типа. SOURCETYPEID INTEGER Для встроенного типа этот столбец имеет значение 0. Для особого типа - это внутренний ID встроенного типа, на основе которого определен этот особый тип. CREATE_TIME TIMESTAMP Время создания последовательности. ALTER_TIME TIMESTAMP Время, когда для этой последовательности последний раз выполнялся оператор ALTER SEQUENCE. PRECISION SMALLINT Точность, определенная для последовательности десятичного или числового типа. Значения: 5 для SMALLINT, 10 для INTEGER и 19 для BIGINT. ORIGIN CHAR(1) Происхождение последовательности U - последовательность, сгенерированная пользователем S - последовательность, сгенерированная системой REMARKS VARCHAR(254) Да Комментарии пользователя или пустая. Построитель хранимых процедур DB2 39.1 Поддержка Java 1.2 для построителя хранимых процедур DB2 Построитель хранимых процедур DB2 поддерживает построение хранимых процедур с использованием возможностей Java 1.2. Кроме этого, построитель хранимых процедур поддерживает языки с двумя направлениями письма, такие как арабский или иврит, используя средства поддержки таких языков в Java 1.2. Эта поддержка есть только для платформ Windows NT. Необходимо установить Java 1.2, чтобы построитель хранимых процедур мог распознать и использовать его возможности. Чтобы установить Java 1.2: JDK 1.2.2 находится на компакт-диске DB2 UDB в каталоге DB2\bidi\NT. ibm-inst-n122p-win32-x86.exe - это программа установки, а ibm-jdk-n122p-win32-x86.exe - дистрибутив JDK. Скопируйте оба эти файла во временный каталог на жестком диске и затем запустите оттуда программу установки. Установите этот продукт в каталог \java\Java12, где - путь установки DB2. При установке JDK/JRE не выбирайте JDK/JRE в качестве системной VM. Успешно установив Java 1.2, запускайте построитель хранимых процедур обычным образом. Для выполнения хранимых процедур Java с использованием поддержки JDK 1.2 задайте для переменной среды сервера баз данных DB2_USE_JDK12 значение TRUE, используя следующую команду: DB2SET DB2_USE_JDK12=TRUE Задайте также параметр конфигурации JDK11_PATH, чтобы он указывал на каталог, в котором установлена поддержка Java 1.2. Используйте для этого следующую команду: DB2 UPDATE DBM CFG USING JDK11_PATH Чтобы прекратить использование Java 1.2, можно или деинсталлировать JDK/JRE из каталога \java\Java12, или просто переименовать подкаталог \java\Java12. Внимание: Не перепутайте \java\Java12 с \Java12. \Java12 - это часть установки DB2, содержащая поддержку JDBC для Java 1.2. 39.2 Удаленная отладка хранимых процедур DB2 Чтобы использовать возможность удаленной отладки хранимых процедур Java и C на платформах UNIX и Windows, нужно установить отладчик IBM Distributed Debugger. IBM Distributed Debugger находится на компакт-диске Visual Age for Java Professional Edition. Клиент этого отладчика работает только на платформах Windows. Поддерживаемые платформы серверов: Windows, AIX и Solaris. Для отладки локальных и удаленных хранимых процедур SQL на платформах Windows и UNIX используйте встроенную возможность отладки SQL построителя хранимых процедур. Поддержка для платформы OS/2 в настоящее время недоступна. Дополнительную информацию о построителе хранимых процедур DB2 for OS/390 можно найти на следующем Web-сайте: http://www-4.ibm.com/software/data/db2/os390/spb/exciting Для отладки процедур SQL на платформах OS/390 необходимо также иметь продукт IBM C/C++ Productivity Tools for OS/390 R1. Дополнительную информацию об IBM C/C++ Productivity Tools for OS/390 R1 можно найти на следующем Web-сайте: http://www.ibm.com/software/ad/c390/pt/ 39.3 Построение процедур SQL на платформах Windows, OS/2 или UNIX Прежде чем можно будет использовать построитель хранимых процедур для успешного построения процедур SQL в базе данных на платформе Windows, OS/2 или UNIX, необходимо сконфигурировать используемый сервер для процедур SQL. Информацию о том, как сконфигурировать сервер для процедур SQL, смотрите в разделе 34.3, Глава 4. Building Java Applets and Applications. 39.4 Использование построителя хранимых процедур DB2 на платформе Solaris Чтобы использовать построитель хранимых процедур DB2 на платформе Solaris: Загрузите и установите JDK 1.1.8. Его можно загрузить с Web-сайта JavaSoft. В переменной среды JAVA_HOME задайте каталог установки JDK. В параметре конфигурации JDK11_PATH задайте каталог установки JDK. Чтобы задать JDK11_PATH, используйте команду: DB2 UPDATE DBM CFG USING JDK11_PATH. 39.5 Известные проблемы и ограничения Процедуры SQL в настоящее время не поддерживаются в Windows 98. Для хранимых процедур Java имена классов, имена методов и ID JAR не должны содержать символы, не являющиеся символами ASCII. В AS/400 для OS/400 V4R4 необходимо применить следующие PTF для V4R4: - SF59674 - SF59878 В выводимом в панели редактора исходном тексте хранимой процедуры, восстановленном из базы данных, не показываются параметры хранимых процедур с символьным подтипом FOR MIXED DATA или FOR SBCS DATA. В настоящее время есть ошибка при получении исходного кода Java из базы данных. При получении кода в нем повреждаются комментарии. Это будет влиять на пользователей построителя хранимых процедур DB2, работающих в не-ASCII кодовых страницах и использующих клиенты и серверы с другими кодовыми страницами. 39.6 Использование построителя хранимых процедур DB2 с традиционным китайским языком Есть ошибка при использовании Java Development Kit или Java Runtime 1.1.8 с традиционным китайским языком. Элементы графического интерфейса построителя хранимых процедур (включая меню, текст редактора, сообщения и т.д.) выводятся неправильно. Чтобы исправить эту ошибку, измените файл font.properties.zh_TW, находящийся в одном или в обоих каталогах: sqllib/java/jdk/lib sqllib/java/jre/lib Измените: monospaced.0=\u7d30\u660e\u9ad4,CHINESEBIG5_CHARSET,NEED_CONVERTED на: monospaced.0=Courier New,ANSI_CHARSET 39.7 Установки в UNIX (AIX, Sun Solaris, Linux) и построитель хранимых процедур Если для установок в Sun Solaris используется Java Development Kit или Java Runtime, отличающиеся от установленных в AIX с UDB, необходимо задать в переменной среды JAVA_HOME путь установки Java (то есть имя каталога, содержащего каталоги /bin и /lib). Построитель хранимых процедур не поддерживается в Linux, но его можно использовать на поддерживаемых платформах для построения и выполнения хранимых процедур в системах DB2 UDB для систем Linux. Поддерживаемые платформы для клиента - AIX, Solaris и NT, для сервера - AIX, Solaris, NT, Linux, OS/2, HP-UX и NUMA-Q. 39.8 Построение хранимых процедур SQL в OS/390 Построитель хранимых процедур DB2 поддерживает построение хранимых процедур SQL на сервереDB2 UDB for OS390 V7. 39.9 Отладка хранимых процедур SQL На платформах Windows и UNIX отладка хранимых процедур SQL теперь прямо интегрирована в построитель хранимых процедур DB2. Опция конфигурации менеджера баз данных KEEPDARI для отладки неизолированных (проверенных) процедур SQL может иметь значения YES или NO, но для отладки изолированных (непроверенных) процедур SQL она должна иметь значение YES (по умолчанию). Дополнительную информацию об использовании интегрированного отладчика смотрите в справке построителя хранимых процедур. 39.10 Экспорт хранимых процедур Java Построитель хранимых процедур DB2 теперь поддерживает экспорт хранимых процедур Java. Чтобы экспортировать хранимую процедуру Java: Щелкните правой кнопкой мыши по папке хранимых процедур и выберите Экспорт хранимых процедур Java, чтобы открыть окно Экспорт хранимых процедур Java. Выберите хранимые процедуры, которые вы хотите экспортировать, и переместите их в столбец "Выбранные хранимые процедуры". Выберите нужные опции и нажмите кнопку OK. 39.11 Вставка хранимых процедур в OS/390 Для построителя хранимых процедур DB2 Версии 5 и новее, работающего на OS/390, если вы используете мастер для вставки хранимой процедуры и не задаете опций среды WLM, генерируемый код содержит следующий текст: NO WLM ENVIRONMENT. Эта строка кода заставляет запускать хранимую процедуру в адресном пространстве SPAS, как и требуется. Это исправление устраняет ошибку, существующую в построителе хранимых процедур DB2 версии 6 и выше. После исправления генерируемый код выглядит так: CREATE PROCEDURE SYSPROC.Proc2 ( ) RESULT SETS 1 LANGUAGE SQL MODIFIES SQL DATA COLLID TEST NO WLM ENVIRONMENT ASUTIME NO LIMIT RUN OPTIONS 'NOTEST(ALL,*,,VADTCPIP&9.112.14.91:*)' ------------------------------------------------------------------- -- SQL Stored Procedure ------------------------------------------------------------------- P1: BEGIN -- Declare cursor DECLARE cursor1 CURSOR WITH RETURN FOR SELECT * FROM SYSIBM.SYSPROCEDURES; -- Cursor left open for client application OPEN cursor1; END P1 39.12 Задание опций построения для хранимых процедур SQL на сервере рабочих станций Используя построитель хранимых процедур DB2 на платформах UNIX и Windows, вы можете задать опции построения для всех хранимых процедур SQL. В число этих опций входят следующие переменные реестра компилятора и прекомпилятора DB2: DB2_SQLROUTINE_PREPOPTS DB2_SQLROUTINE_COMPILER_PATH DB2_SQLROUTINE_COMPILE_COMMAND DB2_SQLROUTINE_KEEP_FILES Хотя можно задать эти переменные реестра и с помощью команды db2set, использование построителя хранимых процедур позволяет обойтись без физического обращения к серверу баз данных, а также без остановки и перезапуска сервера для вступления изменений в силу. Чтобы открыть окно Опции построителя хранимых процедур SQL, щелкните правой кнопкой мыши по соединению с базой данных в окне вашего проекта и выберите Опции построителя хранимых процедур SQL. Дополнительную информацию о задании этих опций смотрите в справке по хранимым процедурам DB2. 39.13 Автоматическое обновление адресного пространства WLM для построения хранимых процедур в OS/390 После того как вы успешно построите в OS/390 хранимую процедуру, которая будет выполняться в WLM, построитель хранимых процедур DB2 автоматически обновляет адресное пространство WLM. 39.14 Разработка хранимых процедур Java в OS/390 Построитель хранимых процедур DB2 поддерживает разработку хранимых процедур Java в DB2 UDB for OS/390 Версии 6 и новее. Можно создавать новые хранимые процедуры Java или изменять существующие. 39.15 Построение табличной пользовательской функции DB2 для MQ Series и OLE DB Построитель хранимых процедур DB2 содержит мастер, который поможет вам создавать табличные пользовательские функции и для MQSeries и для OLE DB. Мастер по созданию табличных пользовательских функций OLE DB можно использовать для доступа к провайдерам данных OLE DB. Этот мастер создает табличную пользовательскую функцию OLE и (необязательно) производную таблицу. Мастер по созданию табличных пользовательских функций MQSeries можно использовать для создания табличной пользовательской функции и (необязательно) производной таблицы для обращения к сообщениям MQSeries и их разбора в виде таблицы. Обновления для Unicode 40.1 Введение Стандарт Unicode - универсальная схема кодирования символов для записи символов и текста. Unicode использует многобайтное представление символов. Unicode представляет логичный способ кодирования многоязычных текстов, поддерживающий международный обмен текстовыми данными и создающий основу для написания программ, работающих в любой языковой среде. В Unicode есть две следующие схемы кодирования. По умолчанию используется схема кодирования UTF-16 с 16-битным форматом. UCS-2 представляет собой поднабор UTF-16, использующий для представления одного символа два байта. UCS-2 обычно воспринимается как универсальная кодовая страница, способная представлять все необходимые символы всех существующих одно- и двухбайтных кодовых страниц. UCS-2 зарегистрирована в IBM как кодовая страница 1200. Другой формат кодирования Unicode - байт-ориентированный формат UTF-8, разработанный для облегчения его использования с существующими системами на основе ASCII. UTF-8 использует для хранения одного символа переменное число байтов (обычно 1 - 3, иногда 4). Инвариантные символы ASCII хранятся в виде одиночных байтов. Любой другой символ хранится, как несколько байт. В общем случае данные UTF-8 можно рассматривать как расширение данных ASCII, а не как код для многобайтных кодовых страниц. UTF-8 зарегистрирован в IBM как кодовая страница 1208. Важно, чтобы прикладные программы учитывали требования к размеру данных при их преобразовании между национальной кодовой страницей, UCS-2 и UTF-8. Например, для 20 символов в UCS-2 потребуется ровно 40 байтов, а в UTF-8 - от 20 до 60 в зависимости от исходной кодовой страницы и использованных символов. 40.1.1 Базы данных Unicode и прикладные программы DB2 В Unix, Windows и OS/2 база данных DB2 UDB, созданная с кодовым набором UTF-8, может использоваться для хранения данных как в формате UCS-2, так и UTF-8. Такая база данных называется базой данных Unicode. Данные SQL с типом CHAR кодируются с использованием UTF-8, а данные SQL с типом GRAPHIC кодируются с использованием UCS-2. Это можно сопоставить с сохранением однобайтных (SBCS) и многобайтных кодовых наборов (MBCS) в столбцах CHAR и сохранением двухбайтных кодовых наборов (DBCS) в столбцах GRAPHIC. Кодовая страница прикладной программы может не совпадать с кодовой страницей, которую DB2 использует для хранения данных. В других базах данных (не Unicode) при несовпадении этих кодовых страниц менеджер баз данных преобразует символьные и графические (исключительно DBCS) данные при переносе их между клиентом и сервером. В базе данных Unicode менеджер баз данных автоматически выполняет преобразование символьных данных между кодовой страницей клиента и UTF-8, но все графические данные (UCS-2) передаются между клиентом и сервером без преобразования. Рис. 1. Преобразования кодовых страниц, выполняемые менеджером баз данных Примечания: Если при подключении к базам данных Unicode прикладная программа устанавливает DB2CODEPAGE=1208, локальная кодовая страница будет UTF-8, и преобразование кодовых страниц не требуется. При подключении к базе данных Unicode прикладные программы CLI могут также принимать символьные данные как графические данные, а графические данные - как символьные данные. Для прикладной программы можно указать кодовую страницу UTF-8, что означает, что она будет передавать и получать все графические данные в UCS-2, а символьные данные - в UTF-8. Эта кодовая страница прикладной программы поддерживается только для баз данных Unicode. При использовании Unicode необходимо также принимать во внимание следующее: Кодовая страница определяется во время создания базы данных, и по умолчанию ее значение определяется из версии (или кодовой страницы) операционной системы. Чтобы создать базу данных DB2 Unicode явным образом, можно использовать ключевые слова CODESET и TERRITORY. Например: CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US Кроме того, кодовая страница прикладной программы по умолчанию совпадает с локальной кодовой страницей, но может быть заменена на UTF-8 одним из двух способов: Установкой UTF-8 (1208) для кодовой страницы прикладной программы командой: db2set DB2CODEPAGE=1208 Для прикладных программ CLI/ODBC - путем вызова SQLSetConnectAttr() и заданием для SQL_ATTR_ANSI_APP значения SQL_AA_FALSE. Значение по умолчанию - SQL_AA_TRUE. Данные в столбцах GRAPHIC будут занимать ровно по два байта на каждый символ Unicode, а данные в столбцах CHAR на каждый символ Unicode будут занимать от 1 до 3 байтов. Ограничения SQL на число символов для столбцов GRAPHIC в общем случае вдвое меньше, чем для столбцов CHAR, но по числу байтов они одинаковы. Максимальная длина в символах для столбца CHAR равна 254. Максимальная длина в символах для графического столбца равна 127. Дополнительную информацию смотрите описание MAX в главе "Functions" справочника SQL Reference. Графический литерал отличают от символьного литерала по префиксу G. Например: SELECT * FROM mytable WHERE mychar = 'данные utf-8' AND mygraphic = G'данные ucs-2' Прим.:Для баз данных Unicode префикс G не требуется. Дополнительная информация и обновленная поддержка приводятся в разделе "Литералы в базах данных Unicode". Поддержка для прикладных программ CLI/ODBC и JDBC отличается от поддержки для встроенных программ. Конкретную информацию о поддержке CLI/ODBC смотрите в разделе 40.3, "CLI Guide and Reference". Число байтов, необходимых для данных UCS-2, может быть различным на разных платформах. Во внутреннем формате DB2 используется прямой порядок байтов. 40.1.2 Обновление документации В этом документе изменена следующая информация об использовании Unicode с DB2 версии 7.1: SQL Reference: Глава 3. Language Elements Глава 4. Functions CLI Guide and Reference: Глава 3. Using Advanced Features Приложение C. DB2 CLI and ODBC Data Movement Utilities Guide and Reference, Приложение C. Export/Import/Load Utility File Formats Дополнительную информацию об использовании Unicode с DB2 смотрите в книге Руководство администратора, Приложение J. Поддержка национальных языков (NLS): "Поддержка Unicode/UCS-2 и UTF-8 в DB2 UDB". 40.2 SQL Reference 40.2.1 Глава 3. Language Elements 40.2.1.1 Расширение типов данных В этом разделе в таблице 5 показан список приоритетов типов данных. Обратите внимание: Для базы данных Unicode считаются эквивалентными следующие типы данных: CHAR и GRAPHIC VARCHAR и VARGRAPHIC LONG VARCHAR и LONG VARGRAPHIC CLOB и DBCLOB В базе данных Unicode можно создать такие функции, у которых единственной разницей в записи будут только эквивалентные типы данных CHAR и GRAPHIC, например, foo(CHAR(8)) и foo(GRAPHIC(8)). Мы настоятельно не рекомендуем определять такие дублирующие функции, поскольку при обновлении до следующего выпуска одну из них придется отбросить. Если такие дублирующие функции все же существуют, выбор из них при вызове выполняет двухпроходный алгоритм. На первом проходе для поиска совпадения используется тот же алгоритм, что и при разрешений функций в других базах данных (не Unicode). Если совпадение не обнаружено, будет выполнен второй проход с учетом следующих процедур расширения для строк CHAR и GRAPHIC: GRAPHIC-->CHAR-->VARGRAPHIC-->VARCHAR-->LONG VARGRAPHIC-->LONG VARCHAR-->DBCLOB-->CLOB 40.2.1.2 Преобразование типов данных К списку с заголовком "The following casts involving distinct types are supported" добавлена следующая запись: для базы данных Unicode преобразование из типа VARCHAR или VARGRAPHIC в пользовательский тип DT с исходным типом данных CHAR и GRAPHIC. Далее приводятся изменения к таблице 6 Supported Casts between Built-in Data Types. (Приведены только измененные строки таблицы.) Табл. 20. Поддерживаемые преобразования между встроенными типами данных Конечный тип данных > Исходный тип данных V C H A R V A R C H A R L O N G V A R C H A R C L O B G R A P H I C V A R G R A P H I C L O N G V A R G R A P H I C D B C L O B CHAR Y Y Y Y Y1 Y1 - - VARCHAR Y Y Y Y Y1 Y1 - - LONGVARCHAR Y Y Y Y - - Y1 Y1 CLOB Y Y Y Y - - - Y1 GRAPHIC Y1 Y1 - - Y Y Y Y VARGRAPHIC Y1 Y1 - - Y Y Y Y LONGVARGRAPHIC - - Y1 Y1 Y Y Y Y DBCLOB - - - Y1 Y Y Y Y 1 Преобразование типов поддерживается только для баз данных Unicode. 40.2.1.3 Назначения и сравнения Назначения и сравнения, включающие в себя символьные и графические данные поддерживаются только тогда, когда одна из строк является литералом. Для разрешения функций и графические, и символьные литералы будут соответствовать и символьным, и графическим параметрам функций. Далее приводятся изменения в Таблице 7 Data Type Compatibility for Assignments and Comparisons. (Приведены только измененные строки таблицы и новое примечание 6 к этой таблице.) Операнды Двоичн. целое Десятичн. число Плавающее Симв. строка Графич. строка Дата Время Отм. времени Двоичн. строка Польз. тип Симв. строка Нет Нет Нет Да Да 6 1 1 1 Нет 3 2 Граф. строка Нет Нет Нет Да 6 Да Нет Нет Нет Нет 2 6 Поддерживается только для баз данных Unicode. Назначения строк Storage Assignment Последний абзац этого подраздела изменен так: Когда символьная строка назначается столбцу фиксированной длины и длина строки меньше атрибута длины потребителя, эта строка справа дополняется необходимым числом пробелов (однобайтных, двухбайтных или UCS-22). Заполняющий символ - всегда пробел даже для столбцов, определенных с атрибутом FOR BIT DATA. Retrieval Assignment Третий абзац этого подраздела изменен так: Когда символьная строка назначается переменной фиксированной длины и длина строки меньше атрибута длины потребителя, строка дополняется справа необходимым числом пробелов (однобайтных, двухбайтных или UCS-22). Заполняющий символ - всегда пробел даже для строк, определенных с атрибутом FOR BIT DATA. 2 В UCS-2 определено несколько символов SPACE с разными свойствами. Для базы данных Unicode менеджер баз данных в качестве пробела UCS-2 всегда использует ASCII SPACE с кодом x'0020'. Для базы данных EUC для заполнения строк GRAPHIC используется IDEOGRAPHIC SPACE с кодом x'3000'. Conversion Rules for String Assignments В конец этого подраздела был добавлен следующий абзац: Для баз данных Unicode символьные строки могут быть назначены графическому столбцу, а графические строки - символьному столбцу. DBCS Considerations for Graphic String Assignments Первый абзац этого подраздела изменен следующим образом: Назначения графических строк обрабатываются аналогично назначениям символьных строк. Для баз данных не Unicode типы данных графических строк совместимы только с другими типами данных графических строк и никогда не совместимы с типами данных численных и символьных строк, а также с типами данных даты и времени. Для баз данных Unicode типы данных графических строк совместимы с типами данных символьных строк. Сравнение строк Conversion Rules for Comparison Этот подраздел изменен так: При сравнении двух строк, если это необходимо, одна из них сначала преобразуется в схему кодировки и/или кодовую страницу другой строки. Подробности смотрите в разделе "Rules for String Conversions" главы 3 Language Elements справочника SQL Reference. 40.2.1.4 Правила для типов данных результатов Символьные и графические строки в базе данных Unicode Это новый подраздел, вставленный после подраздела "Graphic Strings". В базе данных Unicode символьные и графические строки совместимы. Если один из операндов... А другой операнд... Тип данных результата будет... GRAPHIC(x) CHAR(y) или GRAPHIC(y) GRAPHIC(z), где z = max(x,y) VARGRAPHIC(x) CHAR(y) или VARCHAR(y) VARGRAPHIC(z), где z = max(x,y) VARCHAR(x) GRAPHIC(y) или VARGRAPHIC VARGRAPHIC(z), где z = max(x,y) LONG VARGRAPHIC CHAR(y) или VARCHAR(y) или LONG VARCHAR LONG VARGRAPHIC LONG VARCHAR GRAPHIC(y) или VARGRAPHIC(y) LONG VARGRAPHIC DBCLOB(x) CHAR(y) или VARCHAR(y) или CLOB(y) DBCLOB(z), где z = max(x,y) DBCLOB(x) LONG VARCHAR DBCLOB(z), где z = max(x,16350) CLOB(x) GRAPHIC(y) или VARGRAPHIC(y) DBCLOB(z), где z = max(x,y) CLOB(x) LONG VARGRAPHIC DBCLOB(z), где z = max(x,16350) 40.2.1.5 Rules for String Conversions К следующему списку в этом разделе был добавлен третий пункт: Для каждой пары кодовых страниц результат определяется последовательным применением следующих правил: Если кодовые страницы одинаковые, результатом является эта кодовая страница. Если одна из кодовых страниц - BIT DATA (кодовая страница 0), результатом является кодовая страница BIT DATA. В базе данных Unicode, если одна из кодовых страниц обозначает данные в схеме кодирования, отличной от другой страницы, результатом является UCS-2 по UTF-8 (то есть тип графических данных по типу символьных данных).1 В противном случае результирующая кодовая страница определяется в Таблице 8 раздела "Rules for String Conversions" Главы 3 Language Elements справочника SQL Reference. 'First' в этой таблице означает выбор кодовой страницы первого операнда, а 'second' - второго операнда. 1 В базах данных не Unicode преобразование между разными схемами кодирования не поддерживается. 40.2.1.6 Expressions Добавлено следующее: В базе данных Unicode выражение, принимающее графическую или символьную строку, будет принимать любые типы строк, для которых поддерживается преобразование. With the Concatenation Operator В конец этого подраздела было добавлено следующее: В базе данных Unicode конкатенация, включающая как операнды символьных строк, так и операнды графических строк, сперва будет преобразовывать символьные операнды в графические операнды. Обратите внимание на то, что в других базах данных (не Unicode) конкатенация не может включать и символьные, и графические операнды. 40.2.1.7 Predicates К списку, начинающемуся с предложения "The following rules apply to all types of predicates", добавлено: В базе данных Unicode все предикаты, принимающие графическую или символьную строку, будет принимать любые типы строк, для которых поддерживается преобразование. 40.2.2 Глава 4. Functions 40.2.2.1 Scalar Functions В конец этого раздела добавлено следующее предложение: В базе данных Unicode все скалярные функции, принимающие графическую или символьную строку, будет принимать любые типы строк, для которых поддерживается преобразование. 40.3 CLI Guide and Reference 40.3.1 Глава 3. Using Advanced Features Дальше приведен новый раздел для этой главы. 40.3.1.1 Написание прикладной программы Unicode CLI DB2 Существуют две основных области поддержки для прикладных программ Unicode CLI DB2: Добавление набора функций, который может принимать строчные аргументы Unicode вместо строчных аргументов ANSI. Добавление новых типов данных C и SQL для описания данных ANSI или Unicode. В следующих разделах приводится дополнительная информация для обеих этих областях. Чтобы программа считалась прикладной программой Unicode, перед выполнением соединения он должна задать для атрибута соединения SQL_ATTR_ANSI_APP значение SQL_AA_FALSE. Этим достигается то, что CLI будет связываться как клиент Unicode, а все данные Unicode будут посылаться либо в UTF-8 для данных CHAR, либо в UCS-2 для данных GRAPHIC. Функции Unicode Далее приводится список функций API ODBC, которые поддерживают версии как Unicode (W), так ANSI (A) (в Unicode в имени функции будет присутствовать W): SQLBrowseConnect SQLForeignKeys SQLPrimaryKeys SQLColAttribute SQLGetConnectAttr SQLProcedureColumns SQLColAttributes SQLGetConnectOption SQLProcedures SQLColumnPrivileges SQLGetCursorName SQLSetConnectAttr SQLColumns SQLGetDescField SQLSetConnectOption SQLConnect SQLGetDescRec SQLSetCursorName SQLDataSources SQLGetDiagField SQLSetDescField SQLDescribeCol SQLGetDiagRec SQLSetStmtAttr SQLDriverConnect SQLGetInfo SQLSpecialColumns SQLDrivers SQLGetStmtAttr SQLStatistics SQLError SQLNativeSQL SQLTablePrivileges SQLExecDirect SQLPrepare SQLTables Функции Unicode всегда возвращают или принимают аргументы длины строки в виде числа символов. Для функций, возвращающих информацию о длине для данных сервера, размер и точность вывода на экран описываются числом символов. Когда длина (размер передаваемых данных) может относиться и к строчным, и к другим данным, эта длина описывается в длинах октетов. Например, для SQLGetInfoW длина - это число байтов, а для SQLExecDirectW - число символов. CLI будет возвращать наборы результатов либо в Unicode, либо в ANSI, в зависимости от связывания прикладной программы. Если прикладная программа связывается с SQL_C_CHAR, драйвер будет преобразовывать данные SQL_WCHAR в SQL_CHAR. Менеджер драйверов отображает SQL_C_WCHAR в SQL_C_CHAR для драйверов ANSI, но не производит отображения для драйверов Unicode. Новые типы данных и действительные преобразования Есть два новых определенных типа данных CLI или ODBC, SQL_C_WCHAR и SQL_WCHAR. SQL_C_WCHAR указывает, что буфер C содержит данные UCS-2. SQL_WCHAR указывает, что маркер конкретного столбца или параметра содержит данные Unicode. Для серверов Unicode DB2 графические столбцы будут описываться как SQL_WCHAR. Преобразование будет разрешено между SQL_C_WCHAR и SQL_CHAR, SQL_VARCHAR, SQL_LONGVARCHAR и SQL_CLOB, а также между графическими типами данных. Табл. 21. Поддерживаемые преобразования данных Тип данных SQL S Q L _ C _ C H A R S Q L _ C _ W C H A R S Q L _ C _ L O N G S Q L _ C _ S H O R T S Q L _ C _ T I N Y I N T S Q L _ C _ F L O A T S Q L _ C _ D O U B L E S Q L _ C _ T Y P E _ D A T E S Q L _ C _ T Y P E _ T I M E S Q L _ C _ T Y P E _ T I M E S T A M P S Q L _ C _ B I N A R Y S Q L _ C _ B I T S Q L _ C _ D B C H A R S Q L _ C _ C L O B _ L O C A T O R S Q L _ C _ B L O B _ L O C A T O R S Q L _ C _ D B C L O B _ L O C A T O R S Q L _ C _ B I G I N T S Q L _ C _ N U M E R I C BLOB X X D X CHAR D X X X X X X X X X X X X X CLOB D X X X DATE X X D X DBCLOB X X D X DECIMAL D X X X X X X X X X X DOUBLE X X X X X X D X X X FLOAT X X X X X X D X X X GRAPHIC (Не Unicode) X X D GRAPHIC (Unicode) X X X X X X X X X X X X D X INTEGER X X D X X X X X X X LONG VARCHAR D X X LONG VARGRAPHIC (Не Unicode) X X X D LONG VARGRAPHIC (Unicode) X X X D NUMERIC D X X X X X X X X REAL X X X X X D X X X SMALLINT X X X D X X X X X X BIGINT X X X X X X X X X D X TIME X X D X TIMESTAMP X X X X D VARCHAR D X X X X X X X X X X X X X VARGRAPHIC (Не Unicode) X X D VARGRAPHIC (Unicode) X X X X X X X X X X X X D X Прим.:D Преобразование поддерживается. Это - используемое по умолчанию преобразование для этого типа данных SQL. X Все СУБД IBM поддерживают это преобразование. пусто Никакие СУБД IBM не поддерживают это преобразование. Данные не преобразуются в типы локатора больших объектов; наоборот, локаторы представляют значение данных; дополнительную информацию смотрите в разделе Использование больших объектов. SQL_C_NUMERIC доступен только в 32-битных операционных системах Windows. Устаревшее значение ключевого слова для исправления До того, как стали поддерживаться прикладные программы Unicode, программы, написанные для работы с однобайтными символьными данными, можно было заставить работать с двухбайтными графическими данными при помощи нескольких последовательных ключевых слов файлов cli ini, таких как GRAPHIC=1,2 или 3, Patch2=7 и т. д. Такой подход представляет графические данные как символьные и оказывает влияние на сообщаемую длину данных. Для прикладных программ Unicode такие ключевые слова теперь не нужны, и, более того, они не должны использоваться, поскольку могут вызывать серьезные побочные эффекты. Если достоверно не известно, является ли конкретная прикладная программа программой Unicode, советуем попробовать обойтись без ключевых слов, влияющих на обработку графических данных. Литералы в базах данных Unicode В базах данных не Unicode нельзя сравнивать данные в столбцах LONG VARGRAPHIC и LONG VARCHAR. Столбцы GRAPHIC/VARGRAPHIC и CHAR/VARCHAR можно только сравнивать или назначать друг другу, явным образом используя функции преобразования типов, поскольку неявное преобразование кодовых страниц не поддерживается как таковое. Это относится к литералам GRAPHIC/VARGRAPHIC и CHAR/VARCHAR, когда литерал GRAPHIC/VARGRAPHIC отличается от литерала CHAR/VARCHAR при помощи префикса G. В базах данных Unicode не требуется преобразование между литералами GRAPHIC/VARGRAPHIC и CHAR/VARCHAR. Кроме того, в них перед литералом GRAPHIC/VARGRAPHIC не требуется префикс G. Если, по крайней мере, один из аргументов является литералом, происходят неявные преобразования. Это позволяет применять литералы с префиксом G или без него в операторах, использующих либо SQLPrepareW(), либо SQLExecDirect(). При этом литералы для LONG VARGRAPHIC могут сохранять префикс G. Дополнительную информацию смотрите в разделе "Casting Between Data Types" Главы 3 Language Elements справочника SQL Reference. Новые ключевые слова для конфигурации CLI С целью устранения дополнительных издержек при связи прикладных программ Unicode с базой данных были добавлены следующие три ключевых слова. DisableUnicode Описание ключевого слова: Отключает базовую поддержку Unicode. Синтаксис ключевого слова db2cli.ini: DisableUnicode = 0 | 1 Значение по умолчанию: 0 (ложь) Закладка Параметры CLI/ODBC DB2: Это ключевое слово нельзя задать через записную книжку Параметры CLI/ODBC. Для использования этого ключевого слова надо непосредственно изменить файл db2cli.ini. Замечания по использованию Если сначала разрешить поддержку Unicode, а затем вызвать прикладную программу Unicode, CLI попробует связаться с базой данных и использованием кодовой страницы клиента, лучше всех обеспечивающей отсутствие дополнительных потерь данных, связанных с преобразованием кодовых страниц. Это может увеличить время соединения за счет обмена кодовых страниц, а также вызвать преобразование кодовых страниц на клиенте, которого не было до добавления этой поддержки. Задание значения True для этого ключевого слова значения приведет к преобразованию всех данных Unicode в локальную кодовую страницу прикладной программы перед их отправкой на сервер. Это может привести к потере любых данных, которые нельзя представить в локальной кодовой странице. ConnectCodepage Описание ключевого слова: Указывает конкретную кодовую страницу для использования при связи с источником данных для минимизации расходов соединения. Синтаксис ключевого слова db2cli.ini: ConnectCodepage = 0 | 1 <любая действительная кодовая страница db2> Значение по умолчанию: 0 Закладка Параметры CLI/ODBC DB2: Это ключевое слово нельзя задать через записную книжку Параметры CLI/ODBC. Для использования этого ключевого слова надо непосредственно изменить файл db2cli.ini. Замечания по использованию Прикладные программы не Unicode всегда связываются с базой данных, используя локальную страницу прикладной программы или установку среды кодовой страницы DB2. По умолчанию CLI будет обеспечивать связь прикладных программ Unicode с базами данных Unicode с использованием кодовых страниц UTF-8 и UCS-2, а с базами данных не Unicode - с использованием кодовых страниц этих баз данных. Этим предотвращается необязательная потеря данных из-за преобразования кодовых страниц. Это ключевое слово позволяет пользователю указывать кодовую страницу базы данных при связывании с базой данных не Unicode, чтобы при этом соединении не производились ненужные дополнительные затраты. Укажите значение 1, чтобы SQLDriverConnect() возвращало правильное значение в строке вывода соединения, чтобы использовать это значение при последующих вызовах SQLDriverConnect(). UnicodeServer Описание ключевого слова: Указывает, что источником данных является сервер Unicode. Эквивалентно значению ConnectCodepage=1208. Синтаксис ключевого слова db2cli.ini: UnicodeServer = 0 | 1 Значение по умолчанию: 0 Закладка Параметры CLI/ODBC DB2: Это ключевое слово нельзя задать через записную книжку Параметры CLI/ODBC. Для использования этого ключевого слова надо непосредственно изменить файл db2cli.ini. Замечания по использованию Это ключевое слово эквивалентно ConnectCodepage=1208 и добавлено только для удобства. Установите это ключевое слово для предотвращения избыточных расходов на связь с DB2 for OS/390 Версии 7 или более поздней. Нет необходимости устанавливать это ключевое слово для баз данных DB2 for Windows, DB2 for Unix или DB2 for OS/2, поскольку при этом не требуется дополнительная обработка. 40.3.2 Приложение C. DB2 CLI and ODBC Дальше приведен новый раздел для этого приложения. 40.3.2.1 Прикладные программы Unicode ODBC Прикладные программы ODBC Unicode отправляют и получают символьные данные главным образом в формате UCS-2. Это происходит путем вызова Unicode-версий функций ODBC (с суффиксом 'W') и указания типов данных Unicode. Прикладная программа не указывает локальную кодовую страницу явно. Она сохраняет способность взывать функции ANSI и передавать строки в кодировке локальной кодовой таблицы. Например, прикладная программа может вызвать SQLConnectW() и передать ID пользователя и пароль DSN как аргументы Unicode. После этого она может вызвать SQLExecDirectW() и передать строку оператора SQL Unicode, а затем связать комбинацию буферов страниц ANSI с локальной кодировкой (SQL_C_CHAR) и буферов Unicode (SQL_C_WCHAR). Типом данных базы данных может быть локальная кодовая страница или UCS-2 и UTF-8. Если прикладная программа CLI вызывает SQLConnectW или вызывает SQLSetConnectAttr со значением SQL_AA_FALSE для SQL_ATTR_ANSI_APP, эта прикладная программа считается программой Unicode. Это означает, что все данные CHAR посылаются базе данных и принимаются от нее в формате UTF-8. После этого прикладная программа может считывать данные CHAR в буфера SQL_C_CHAR в кодировке локальной кодовой страницы (с возможной потерей данных) или в буфера SQL_C_WCHAR в UCS-2 без какой-либо потери данных. Если прикладная программа не выполняет любой из описанных выше вызовов, данные CHAR на сервере преобразуются в локальную страницу прикладной программы. Это означает, что в данных CHAR, считанных в SQL_C_WCHAR, возможны потери. Если для переменной экземпляра DB2CODEPAGE установлена (с использованием db2set) кодовая страница 1208 (UTF-8), прикладная программа будет получать все данные CHAR в UTF-8, поскольку теперь это новая локальная страница. Прикладная программа должна также проверить, что все входные данные CHAR тоже находятся в UTF-8. ODBC подразумевает также, что все данные SQL_C_WCHAR находятся в собственном конечном формате. CLI будет выполнять все необходимые обращения байтов для SQL_C_WCHAR. Сравнение прикладных программ ODBC Unicode и не Unicode В этом выпуске DB2 Universal Database есть API SQLConnectW(). Драйвер Unicode должен экспортировать SQLConnectW, чтобы быть опознанным драйвером менеджеров как драйвер Unicode. Важно заметить, что многие из прикладных программ ODBC (такие как Microsoft Access и Visual Basic) вызывают SQLConnectW(). В предыдущих выпусках DB2 Universal Database CLI DB2 не поддерживали этот API, и поэтому он не распознавался менеджером драйверов ODBC как драйвер Unicode. Это приводило к тому, что менеджер драйверов ODBC преобразовывал все драйверы Unicode в локальную кодовую страницу прикладной программы. При добавлении поддержки функции SQLConnectW() эти прикладные программы не будут устанавливать связь как программы Unicode, а все необходимые преобразования данных возьмет на себя CLI DB2. Теперь CLI DB2 принимает API Unicode API (с суффиксом "W") и стандартные API ANSI. ODBC определяет набор функций с суффиксом "A", но менеджер драйверов не пропускает к драйверу функции ANSI с суффиксом "A". Вместо этого он преобразует эти функции в вызовы функций ANSI без этого суффикса, а затем передает их драйверу. Прикладная программа ODBC, вызывающая API SQLConnectW(), считается прикладной программой Unicode. Так как менеджер драйверов ODBC всегда будет вызывать API SQLConnectW() независимо от версии вызываемой прикладной программы, ODBC теперь использует атрибут связи SQL_ATTR_ANSI_APP для уведомления драйвера о том, что она должна рассматриваться как прикладная программа ANSI или UNICODE. Если для SQL_ATTR_ANSI_APP не установлено SQL_AA_FALSE, перед отправкой его на сервер CLI DB2 преобразует все данные Unicode в локальную кодовую страницу. 40.4 Data Movement Utilities Guide and Reference 40.4.1 Приложение C. Export/Import/Load Utility File Formats В это приложение внесено следующее дополнение: Утилиты экспорта, импорта и загрузки не поддерживаются, когда они используются с клиентом Unicode, связанным с базой данных не Unicode. Файлы клиента Unicode поддерживаются только тогда, когда клиент Unicode связан с базой данных Unicode. Соединение с хост-системами Частичное содержание Дополнение по возможностям соединений 41.1 Настройка сервера прикладных программ в среде VM 41.2 Параметры PATCH1 и PATCH2 и конфигурации CLI/ODBC/JDBC Дополнение по возможностям соединений 41.1 Настройка сервера прикладных программ в среде VM Добавьте следующее предложение после первого (и единственного) предложения в разделе "Задание сетевой информации" в подразделе "Определение сервера прикладных программ": В качестве имени параметра DBNAME в SQLSTART EXEC задается RDB_NAME. 41.2 Параметры PATCH1 и PATCH2 и конфигурации CLI/ODBC/JDBC Для конфигурирования драйвера CLI/ODBC/JDBC можно использовать Ассистент конфигурирования клиента или менеджер драйверов ODBC (если он установлен в системе) или можно вручную отредактировать файл db2cli.ini. Более подробную информацию смотрите в руководстве Дополнение по установке и настройке или CLI Guide and Reference. Поведение по умолчанию драйвера CLI/ODBC DB2 можно изменить, задав значения обоих ключевых слов PATCH1 и PATCH2 (в файле db2cli.ini или с помощью функции API CLI SQLDriverConnect() или SQLBrowseConnect()). Задаваемое значение ключевого слова PATCH1 - сумма всех значений, которые нужно задать для него. Например, чтобы задать значения 1, 2 и 8, нужно задать для PATCH1 значение 11. Ниже представлено описание каждого значения и его влияние на драйвер: 1 - драйвер будет выполнять поиск "count(exp)", заменяя его на "count(distinct exp)". Это необходимо, поскольку некоторые версии DB2 поддерживают синтаксис "count(exp)" и этот синтаксис генерируется некоторыми прикладными программами ODBC. Требуется прикладным программам Microsoft, если сервер не поддерживает синтаксис "count(exp)". 2 - Работа некоторых прикладных программ ODBC прерывается, если возвращается SQL_NULL_DATA в функции SQLGetTypeInfo() для столбца LITERAL_PREFIX или LITERAL_SUFFIX. Это значение указывает драйверу, что вместо этого нужно возвращать пустую строку. Требуется для Impromptu 2.0. 4 - Указывает драйверу, что входные данные типа отметка времени должны интерпретироваться как данные типа дата, если часть значения отметки времени, определяющая значение времени, равна нулю. Требуется для Microsoft Access. 8 - Указывает драйверу, что входные данные типа отметка времени должны интерпретироваться как данные типа время, если часть значения отметки времени, определяющая дату, равна 1899-12-30. Требуется для Microsoft Access. 16 - Не используется. 32 - Указывает драйверу, чтобы он не возвращал информацию столбцах SQL_LONGVARCHAR, SQL_LONGVARBINARY и SQL_LONGVARGRAPHIC. Для прикладной программы это выглядит так, как будто длинные поля не поддерживаются. Требуется для Lotus 123. 64 - Указывает драйверу, чтобы он завершал пустым символом выходные графические строки. Требуется для Microsoft Access в двухбайтной среде. 128 - Указывает драйверу, что он должен передавать на сервер запросы "SELECT Config, nValue FROM MSysConf". В настоящее время драйвер возвращает код ошибки со значением SQLSTATE S0002 (таблица не найдена). Требуется, если пользователь создал в базе данных эту таблицу конфигурации и хочет, чтобы прикладная программа обращалась к ней. 256 - Указывает драйверу, что в вызове SQLStatistics() он должен первыми возвращать столбцы первичных ключей. В настоящее время драйвер возвращает индексы отсортированными по именам индексов (это стандартное поведение ODBC). 512 - Указывает драйверу, что он должен возвращать FALSE в SQLGetFunctions() для SQL_API_SQLTABLEPRIVILEGES и SQL_API_SQLCOLUMNPRIVILEGES. 1024 - Указывает драйверу, что он должен возвращать SQL_SUCCESS вместо SQL_NO_DATA_FOUND в SQLExecute() или SQLExecDirect(), если выполненный оператор UPDATE or DELETE не изменил ни одной строки. Требуется для прикладных программ Visual Basic. 2048 - Не используется. 4096 - Указывает драйверу, что он не должен выдавать команду COMMIT после закрытия указателя в режиме автоматического принятия. 8192 - Указывает драйверу, что он должен возвращать дополнительный набор результатов после вызова хранимой процедуры. Этот набор результатов содержит одну строку, состоящей из выходных значений этой хранимой процедуры. Может использоваться прикладными программами Powerbuild. 32768 - Указывает драйверу, что он должен дать программам Microsoft Query работать с синонимами DB2 MVS. 65536 - Указывает драйверу, что он должен сам вставлять "G" перед символьными литералами, которые на самом деле являются графическими литералами. Нужно всегда задавать это значение при работе в двухбайтной среде. 131072 - Указывает драйверу, что он должен описывать входящий в индекс уникальности столбец с типом отметка времени как столбец типа CHAR(26). Требуется для прикладных программ Microsoft. 262144 - Указывает драйверу, что нужно использовать таблицу псевдокаталога db2cli.procedures вместо таблиц SYSCAT.PROCEDURES и SYSCAT.PROCPARMS. 524288 - Указывает драйверу, что нужно использовать SYSTEM_TABLE_SCHEMA вместо TABLE_SCHEMA при выполнении запроса к системной таблице в системе DB2/400 V3.x. Это повышает производительность. 1048576 - Указывает драйверу, что строку нулевой длины для SQLPutData() нужно интерпретировать как SQL_NULL_DATA. Ключевое слово PATCH2 отличается от ключевого слова PATCH1. В нем несколько значений задаются через запятые. Например, чтобы задать значения 1, 4 и 5, нужно задать для PATCH2 значение "1,4,5". Ниже представлено описание каждого значения и его влияние на драйвер: 1 - Указывает драйверу, что он должен перевести имя хранимой процедуры в операторе CALL в верхний регистр. 2 - Не используется. 3 - Указывает драйверу, что он должен переводить все аргументы в вызовах схемы в верхний регистр. 4 - Указывает драйверу, что он должен возвращать для вызовов схем (то есть SQLColumns(), SQLProcedureColumns() и т.д.) набор результатов в формате Версии 2.1.2 вместо формата Версии 5. 5 - Указывает драйверу, что не нужно оптимизировать обработку входных столбцов VARCHAR, если указатель на данные и указатель на длину идут в памяти подряд. 6 - Указывает драйверу, что он должен возвращать сообщение, что указатели с прокруткой не поддерживаются. Требуется для программ Visual Basic, если используются клиент DB2 Версии 5 и сервер DB2 UDB Версии 5. 7 - Указывает драйверу, что он должен отображать все типы данных столбцов GRAPHIC на типы данных столбцов CHAR. Требуется в двухбайтной среде. 8 - Указывает драйверу, что он должен игнорировать аргументы поиска каталогов в вызовах схем. 9 - Не выполнять принятие при раннем закрытии указателя. 10 - Не используется. 11 - Сообщать, что имя каталога поддерживается, (хранимые процедуры VB) 12 - Удалять двойные кавычки из аргументов вызовов схем, (Visual Interdev) 13 - Не добавлять ключевые слова из db2cli.ini к выходной строке соединения 14 - Игнорировать имя схемы в SQLProcedures() и SQLProcedureColumns() 15 - Всегда использовать точку как разделитель дробной части при символьном выводе 16 - Принудительно возвращать информацию описания при каждом открытии 17 - Не возвращать имена столбцов в описании 18 - Пытаться заменять литералы маркерами параметров 19 - В настоящее время DB2 MVS V4.1 не поддерживает синтаксис ODBC, в котором разрешены скобки в условии ON в условии внешнего объединения. Если в PATCH2 задано это значение, драйвер ODBC IBM DB2 будет удалять скобки, если условие внешнего объединения входит в управляющую последовательность ODBC. Это значение следует использовать только при работе с DB2 MVS 4.1. 20 - В настоящее время DB2 on MVS не поддерживает предикат BETWEEN с маркерами параметров в качестве обоих операндов (выражение ? BETWEEN ?). Если задано это значение, драйвер ODBC IBM перепишет такой предикат в виде (выражение >= ? and выражение <= ?). 21 - Задать все только выходные (OUTPUT) параметры для хранимых процедур как SQL_NULL_DATA 22 - Если задано это значение, драйвер ODBC IBM будет сообщать, что внешнее (OUTER) объединение не поддерживается. Предназначено для прикладных программ, генерирующих SELECT DISTINCT col1 или ORDER BY col1 при использовании оператора внешнего объединения, где col1 имеет длину больше 254 символов, в результате DB2 UDB возвращает сообщение об ошибке (поскольку DB2 UDB не поддерживает в таких конструкциях столбцы длиной более 254 байт) 23 - Не оптимизировать ввод для параметров, связанных с cbColDef=0 24 - Обходной прием для работы со значениями времени - они представляются в символьном виде 25 - Обходной прием для работы с десятичными столбцами - из их символьного представления удаляются конечные нули 26 - Не возвращать прикладной программе sqlcode 464 - указывает, что возвращены наборы результатов 27 - Использовать для SQLTables значение ключевого слова TABLETYPE, даже если прикладная программа задает правильное значение 28 - Описывает столбцы real как столбцы double 29 - Исправление работы ADO для десятичных столбцов - удаляет начальные нули для значений x, где 1 > x > -1 (Требуется только для некоторых версий MDAC) 30 - Запрещает оптимизацию кэширования хранимых процедур 31 - Сообщать данные статистики для алиасов в вызове SQLStatistics 32 - Переопределяет обработку кода причины 4 для sqlcode -727 33 - Возвращать преобразованное в символьную форму значение отметки времени в формате ISO (а не в формате ODBC) 34 - Сообщать значение CHAR для столбцов CHAR FOR BIT DATA 35 - Сообщать о неверном TABLENAME, если запрошено SQL_DESC_BASE_TABLE_NAME - оптимизация только для чтения ADO 36 - Зарезервировано 37 - Зарезервировано Общие сведения Частичное содержание Общие сведения 42.1 DB2 Universal Database Business Intelligence Quick Tour 42.2 DB2 Everywhere называется теперь DB2 Everyplace 42.3 Необходима мышь 42.4 При попытке связывания из клиента времени выполнения DB2 возникает ошибка "Не найдены файлы связывания" 42.5 Поиск SEARCH 42.6 Окна памяти для HP-UX 11 42.7 Действия пользователя при возникновении ошибки dlfm client_conf 42.8 В редких случаях, когда демон копирования не останавливается командой dlfm stop 42.9 Деинсталляция Client Enabler DFS DB2 42.10 Аутентификация клиента в Windows NT 42.11 AutoLoader может зависать при ветвлении потоков 42.12 Восстановление столбцов DATALINK 42.13 Определите ID пользователя и пароль в IBM Communications Server для Windows NT (CS/NT) 42.13.1 Определение узла 42.14 Ограничения системы объединения 42.15 Ограничение DataJoiner 42.16 Менеджер каталогов данных на иврите для Windows NT 42.17 Microsoft SNA Server и поддержка многоузлового изменения SNA (двухфазного принятия) 42.18 Ошибка запуска SPM SNA DB2 после загрузки Windows 42.19 Национальные настройки для сервера администратора DB2 42.20 Клавиши быстрого вызова не работают 42.21 Требования к учетным записям для DB2 в Windows NT и Windows 2000 42.22 Потеря привилегии EXECUTE для пользователей Query Patroller, созданных в версии 6 42.23 Ограничения Query Patroller 42.24 Необходимость принятия всех пользовательских программ, которые будут использованы в Центре хранилищ данных (Data Warehouse Center - DWC) 42.25 Новая опция команды экспорта Центра хранилищ данных 42.26 API служб резервного копирования (XBSA) 42.27 Агент OS/390 42.27.1 Обзор установки 42.27.2 Подробности установки 42.27.3 Настройка дополнительных функций агента 42.27.4 Составление расписания шагов хранилища при помощи программы триггера (XTClient) 42.27.5 Преобразователи 42.27.6 Доступ к другим базам данных (не из семейства DB2) 42.27.7 Запуск утилит DB2 for OS/390 42.27.8 Репликация 42.27.9 Регистрация агента 42.28 Кэширование на клиенте в Windows NT 42.29 Пробные программные продукты на компакт-дисках с Enterprise Edition для UNIX 42.30 Пробные программные продукты на компакт-дисках с DB2 Connect Enterprise Edition для UNIX 42.31 Отбрасывание Менеджера связей данных 42.32 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов 42.33 Ошибка SQL1035N при использовании CLP в Windows 2000 42.34 Усовершенствование SQL Assist 42.35 Интеграция с рабочим столом Gnome и KDE для DB2 on Linux 42.36 Запуск DB2 в режиме Administration Windows 2000 Terminal Server 42.37 Электронная справка для команд BACKUP и RESTORE 42.38 "Менеджер хранилищ данных" следует читать как "Менеджер хранилищ данных DB2" Общие сведения 42.1 DB2 Universal Database Business Intelligence Quick Tour Quick Tour недоступен для DB2 for Linux или Linux/390. Quick Tour оптимизирован для работы с мелкими системными шрифтами. Для правильного просмотра Quick Tour в OS/2 может потребоваться настройка размера шрифтов браузера Web. Информацию о том, как настроить размер шрифтов, смотрите в справке браузера Web. Для правильного просмотра Quick Tour при использовании однобайтных символов рекомендуется использовать шрифт Helv размером 8 пунктов. При использовании японского или корейского языка рекомендуется использовать шрифт Mincho размером 8 пунктов. Задавая параметры шрифтов, выберите в окне Предпочтения опцию "Использовать мои шрифты по умолчанию, переопределяя шрифты, заданные в документе". В некоторых случаях Quick Tour может запускать второе окно браузера. Чтобы исправить эту ошибку, закройте Quick Tour и выполните шаги, описанные в разделе 2.4, Сообщения об ошибках при попытке запуска Netscape. При запуске Quick Tour вы можете получить сообщение об ошибке JavaScript, подобное следующему: file:/C/Program Files/SQLLIB/doc/html/db2qt/index4e.htm, строка 65: Окно не определено. Эта ошибка JavaScript не дает странице запуска Quick Tour index4e.htm автоматически закрыться после запуска Quick Tour. Страницу запуска Quick Tour можно закрыть, закрыв окно браузера, в котором выводится страница index4e.htm. В разделе "Что нового" в теме Управление данными сказано, что в Версии 7.1 поддерживается архивирование журналов по требованию. Это неверно. Кроме того, сказано также: Размер файлов журнала увеличен с 4 до 32 Гбайт. Это предложение следует читать так: Общее пространство активного журнала увеличено с 4 до 32 Гбайт. В разделе о менеджере связей данных DB2 есть предложение: Кроме того, теперь он поддерживает интерфейс XBSA фирмы Veritas для резервного копирования и восстановления при помощи NetBackup. Это предложение следует читать так: Кроме того, теперь он поддерживает интерфейс XBSA фирмы Veritas для архивирования и восстановления файлов. В число менеджеров памяти, поддерживающих интерфейс XBSA, входят Legato NetWorker и Veritas NetBackup. 42.2 DB2 Everywhere называется теперь DB2 Everyplace Имя DB2 Everywhere было изменено на DB2 Everyplace. 42.3 Необходима мышь Для работы с этими инструментами на всех платформах, кроме Windows, требуется мышь. 42.4 При попытке связывания из клиента времени выполнения DB2 возникает ошибка "Не найдены файлы связывания" Поскольку у клиента времени выполнения DB2 нет полного набора файлов связывания, из него нельзя выполнить связывание средств GUI (его можно выполнить только из клиента администратора DB2). 42.5 Поиск SEARCH Поиск SEARCH поддерживается только для широковещательной связи. Например, поиск SEARCH не будет работать через адаптер ATM. К поиску KNOWN это ограничение не относится. 42.6 Окна памяти для HP-UX 11 Окна памяти предназначены для пользователей больших 64-битных компьютеров HP, которые хотят воспользоваться преимуществами использования более чем 1,75 Гбайт совместно используемой памяти для 32-битных прикладных программ. Окна памяти не требуются, если вы работаете с 64-битной версией DB2. Окна памяти позволяют использовать для процесса или группы процессов отдельный 1 Гбайт совместно используемой памяти. Это позволяет экземпляру иметь свой собственный 1 Гбайт совместно используемой памяти плюс 0,75 Гбайта глобальной совместно используемой памяти. Если пользователи хотят использовать такие преимущества, они могут запустить несколько экземпляров, каждый в своем собственном окне памяти. Для использования окон памяти требуется: Среда DB2 EE Исправления: Extension Software 12/98 и PHKL_17795. Для экземпляра должна быть задана переменная $DB2INSTANCE. Для каждого экземпляра DB2, который нужно выполнять в окне памяти, должна быть запись в файле /etc/services.window. Например: db2instance1 50 db2instance2 60 Примечание: Между именем и ID может быть только один пробел. Все команды DB2, которые нужно выполнить на сервере и для которых требуется несколько операторов, надо выполнять при помощи метода обратной связи TCP/IP. Это вызвано тем, что оболочка завершит работу, когда окно памяти закончит обработку первого оператора. Служба DB2 умеет справляться с этой ситуацией. Перед любой командой DB2, которая нужно выполнить для экземпляра, запущенного в окне памяти, нужно ввести db2win (имя команды, расположенной в каталоге sqllib/bin). Например: db2win db2start db2win db2stop Все команды DB2, выполняющиеся вне окна памяти (но когда окно памяти запущено), будут возвращать код 1042. Например: db2win db2start <== OK db2 connect to db <==SQL1042 db2stop <==SQL1042 db2win db2stop <== OK Среда DB2 EEE Исправления: Extension Software 12/98 и PHKL_17795. Для экземпляра должна быть задана переменная $DB2INSTANCE. Переменная реестра DB2_ENABLE_MEM_WINDOWS должна иметь значение TRUE. Для каждого логического узла каждого экземпляра, который нужно выполнять в окне памяти, должна быть запись в файле /etc/services.window. Первое поле такой записи - имя экземпляра, после него идет номер порта. Например: === $HOME/sqllib/db2nodes.cfg для db2instance1 === 5 host1 0 7 host1 1 9 host2 0 === $HOME/sqllib/db2nodes.cfg для db2instance2 === 1 host1 0 2 host2 0 3 host2 1 === /etc/services.window на host1 === db2instance10 50 db2instance11 55 db2instance20 60 === /etc/services.window на host2 === db2instance10 30 db2instance20 32 db2instance21 34 Не нужно предварять команды DB2 командой db2win (она используется только в среде EE). 42.7 Действия пользователя при возникновении ошибки dlfm client_conf Если на клиенте DLFM по какой-либо причине возникает ошибка dlfm client_conf, она может быть вызвана устаревшими записями в каталогах DB2. Чтобы исправить ошибку, выполните следующие команды: db2 uncatalog db <имя_базы_данных> db2 uncatalog node <алиас узла> db2 terminate Затем вновь выполните dlfm client_conf. 42.8 В редких случаях, когда демон копирования не останавливается командой dlfm stop В очень редких случаях dlfm_copyd (демон копирования) не останавливается, когда пользователь выполняет команду dlfm stop или при аварийном завершении работы. В этом случае перед перезапуском dlfm выполните команду dlfm shutdown. 42.9 Деинсталляция Client Enabler DFS DB2 Перед деинсталляцией Client Enabler DFS DB2 пользователь root должен убедиться, что файлы DFS не используются и что в файловом пространстве DFS нет открытых пользователями оболочек. От имени пользователя root введите команду: stop.dfs dfs_cl Убедитесь, что /... более не смонтирован: mount | grep -i dfs Если это не так, а Client Enabler DFS DB2 деинсталлирован, нужно перезагрузить компьютер. 42.10 Аутентификация клиента в Windows NT Для поддержки существующего механизма аутентификации клиента в среде Windows NT введена новая переменная реестра DB2 DB2DOMAINLIST (список доменов DB2). Эта переменная используется на сервере DB2 for Windows NT для определения одного или нескольких доменов Windows NT. Запросы соединения или подключения будут приниматься только от пользователей, входящих в определенные в этом списке домены. Эту переменную среды нужно использовать только в чистой среде доменов Windows NT с серверами и клиентами DB2 Версии 7 (или новее). Информацию о задании этой переменной реестра смотрите в разделе "Переменные реестра DB2 и переменные среды" руководства Руководство администратора: Производительность. 42.11 AutoLoader может зависать при ветвлении потоков AIX 4.3.3 содержит исправление ошибки libc, которая может вызывать зависание AutoLoader при ветвлении потоков. AutoLoader - это многопоточная программа. Один из потоков запускает другой процесс. При запуске дочернего процесса в нем создается образ памяти родительского процесса. Блокировки, используемые libc.a для управления многопоточным выделением памяти из кучи из одного процесса, удерживаются потоком, не запускающим процессы. Поскольку поток, не запускающий процессы, не будет существовать в дочернем процессе, такая блокировка не будет освобождена в дочернем процессе, что может вызвать зависание родительского процесса. 42.12 Восстановление столбцов DATALINK При выполнении восстановления резервной копии, сделанной в отключенном режиме после восстановления базы данных, с повтором транзакций или без повтора, не выполняется обработка быстрого согласования. В таких случаях все таблицы со столбцами DATALINK, зависящими от связей файлов, переводятся в состояние отложенного согласования связей данных (DRP). 42.13 Определите ID пользователя и пароль в IBM Communications Server для Windows NT (CS/NT) Если для соединения удаленных клиентов DB2 с сервером DB2 используется протокол связи APPC и в качестве продукта SNA используется CS/NT, убедитесь, что в файле конфигурации CS/NT правильно заданы следующие ключевые слова. Обычно этот файл находится в каталоге x:\ibmcs\private. 42.13.1 Определение узла TG_SECURITY_BEHAVIOR Этот параметр позволяет пользователю определить, как узел обрабатывает информацию защиты, содержащуюся в команде ATTACH, если менеджер транзакций не сконфигурирован для защиты IGNORE_IF_NOT_DEFINED Этот параметр позволяет пользователю определить, содержит ли команда ATTACH параметры защиты, и игнорировать их, если менеджер транзакций не сконфигурирован для защиты. Если используется параметр IGNORE_IF_NOT_DEFINED, не нужно определять в CS/NT ID пользователя и пароль. VERIFY_EVEN_IF_NOT_DEFINED Этот параметр позволяет пользователю определить, содержит ли команда ATTACH параметры защиты, и проверить их, даже если TP не сконфигурирован для защиты. Это поведение по умолчанию. Если используется параметр VERIFY_EVEN_IF_NOT_DEFINED, в CS/NT нужно определить ID пользователя и пароль. Чтобы определить в CS/NT ID пользователя и пароль, выполните следующие действия: Пуск --> Программы --> IBM Communications Server --> Конфигурация узла SNA. Откроется окно Введение в конфигурацию Communications Server. Выберите файл конфигурации, который нужно изменить. Нажмите кнопку Далее. Откроется окно Выбор сценария конфигурации. Выберите CPI-C, APPC или эмуляцию 5250. Нажмите кнопку Завершить. Откроется окно узел SNA Communications Server. Щелкните по символу [+] рядом с CPI-C и APPC. Щелкните по символу [+] рядом с Защитой LU6.2. Щелкните правой кнопкой мыши по Пароли пользователей и выберите Создать. Откроется окно Определение пароля для ID пользователя. Заполните поля ID пользователя и пароль. Нажмите кнопку OK. Нажмите кнопку Завершить, чтобы принять изменения. 42.14 Ограничения системы объединения Для систем объединения применяются следующие ограничения: Типы данных Oracle NCHAR, NVARCHAR2, NCLOB и BFILE не поддерживающиеся в запросах, содержащих псевдонимы. Из Центра управления не поддерживаются команды Create Server Option, Alter Server Option и Drop Server Option. Для ввода этих команд необходимо использовать процессор командной строки (CLP). Для запросов, содержащих псевдонимы, DB2 UDB не всегда следует значению параметра конфигурации базы данных DFT_SQLMATHWARN. Вместо этого DB2 UDB возвращает арифметические ошибки непосредственно от удаленного источника данных независимо от значения параметра DFT_SQLMATHWARN. Оператор CREATE SERVER OPTION не позволяет задать значение 'I' для опции сервера COLSEQ для источников данных с регистронезависимыми последовательностями слияния. Оператор ALTER NICKNAME возвращает SQL0901N, если задана неверная опция. Для источников данных Oracle, Microsoft SQL Server и Sybase числовые типы данных не могут отображаться на тип данных DB2 BIGINT. По умолчанию тип данных Oracle number(p,s), где 10 <= p <= 18 и s = 0, отображается на тип данных DB2 DECIMAL. 42.15 Ограничение DataJoiner В распределенных запросах в среде объединения можно использовать только операции чтения. 42.16 Менеджер каталогов данных на иврите для Windows NT Доступна версия компонента менеджера каталогов данных на иврите; она находится на компакт-диске Менеджер хранилищ данных DB2 для NT. Перевод на иврит находится в файле zip IL_ICM.ZIP, расположенном в каталоге DB2\IL на компакт-диске Менеджер хранилищ данных DB2 для NT. Чтобы установить версию менеджера каталогов данных на иврите, установите сначала английскую версию менеджера хранилищ данных DB2 для Windows NT и все необходимые для него программы на поддерживающей иврит версии Windows NT. Установив менеджер хранилищ данных DB2 для Windows NT, распакуйте (unzip) файл IL_ICM.ZIP из каталога DB2\IL в тот же каталог, где установлен менеджер хранилищ данных DB2 для Windows NT. Задайте для программы распаковки unzip правильные опции, чтобы она создала структуру каталогов, сохраненную в файле архива. После распаковки этого файла нужно изменить значение глобальной переменной среды LC_ALL с En_US на Iw_IL. Чтобы изменить это значение: Откройте Панель управления Windows NT и дважды щелкните по значку Система. В окне Свойства системы щелкните по закладке Среда и найдите переменную LC_ALL в разделе Системные переменные. Щелкните по этой переменной, чтобы ее значение появилось в поле ввода Значение. Измените это значение с En_US на Iw_IL. Нажмите кнопку Задать. Закройте окно Свойства системы и Панель управления. Теперь установлена версия менеджера каталогов данных на иврите. 42.17 Microsoft SNA Server и поддержка многоузлового изменения SNA (двухфазного принятия) Прикладные программы хоста и AS/400 не могут обращаться к серверам DB2 UDB, используя двухфазное принятие SNA, если в качестве продукта SNA используется Microsoft SNA Server. Во всех публикациях по DB2 UDB, в которых указывается, что такие обращения поддерживаются, содержат неверную информацию. Требуется IBM Communications Server for Windows NT Версии 5.02 или более поздней. Прим.:Прикладные программы, обращающиеся к серверам баз данных хоста или AS/400 с помощью DB2 UDB for Windows могут использовать двухфазное принятие SNA, если применяется Microsoft SNA Server Версии 4 Service Pack 3 или более поздний. 42.18 Ошибка запуска SPM SNA DB2 после загрузки Windows Если используется Microsoft SNA Server Версии 4 SP3 или более поздней, убедитесь, что после перезагрузки системы был успешно запущен SPM SNA DB2. Проверьте, нет ли в файле \sqllib\<имя экземпляра>\db2diag.log записей, подобных следующим: 2000-04-20-13.18.19.958000 Экземпляр:DB2 Узел:000 PID:291(db2syscs.exe) TID:316 Appid:нет common_communication sqlccspmconnmgr_APPC_init Проверка:19 SPM0453C Менеджер точек синхронизации не запущен, так как не запущен сервер Microsoft SNA. 2000-04-20-13.18.23.033000 Экземпляр:DB2 Узел:000 PID:291(db2syscs.exe) TID:302 Appid:нет common_communication sqlccsna_start_listen Проверка:14 DIA3001E Неудачная попытка запуска поддержка протокола "SNA SPM". 2000-04-20-13.18.23.603000 Экземпляр:DB2 Узел:000 PID:291(db2syscs.exe) TID:316 Appid:нет common_communication sqlccspmconnmgr_listener Проверка:6 DIA3103E Ошибка поддержки протокола APPC. Фраза APPC - "APPC(DISPLAY 1 BYTE)". Первичный rc - "F004". Вторичный rc - "00000000". Если в файле db2diag.log есть такие записи и их отметка времени соответствует времени последней перезагрузки, необходимо: Выполнить команду db2stop. Запустить службу SnaServer (если она еще не запущена). Выполнить команду db2start. Вновь проверьте файл db2diag.log, чтобы убедиться, что в него больше не добавляются такие записи. 42.19 Национальные настройки для сервера администратора DB2 Убедитесь, что национальная версия экземпляра сервера администратора DB2 совместима с национальной версией экземпляра DB2. В противном случае экземпляр DB2 не сможет связываться с сервером администратора DB2. Если в профиле пользователя сервера администратора DB2 не задана переменная среды LANG, сервер администратора DB2 будет запущен с системной национальной версией по умолчанию. Если системная национальная версия по умолчанию не определена, сервер администратора будет запущен с кодовой страницей 819. Если экземпляр DB2 использует одну из национальных версий DBCS, а сервер администратора DB2 запущен с кодовой страницей 819, этот экземпляр не сможет связываться с сервером администратора DB2. Национальная версия экземпляра сервера администратора DB2 и национальная версия экземпляра DB2 должны быть совместимы. Например, в системе Linux с упрощенным китайским в профиле пользователя сервера администратора DB2 должно быть задано "LANG=zh_CN". 42.20 Клавиши быстрого вызова не работают В некоторых языках для Центра управления в системах на основе UNIX и в OS/2 не работают некоторые клавиши быстрого вызова. Используйте для выбора опций мышь. 42.21 Требования к учетным записям для DB2 в Windows NT и Windows 2000 При установке DB2 для Windows NT или Windows 2000 программа установки создает несколько служб Windows и назначает каждой из них свою учетную запись. Для правильной работы DB2 программа установки предоставляет учетной записи, ассоциированной со службой DB2, следующие права пользователя: Действовать как часть операционной системы Создавать объекты маркеров Увеличивать квоты Регистрироваться как служба Заменять элемент уровня процесса. Если вы хотите использовать для служб DB2 другую учетную запись, необходимо предоставить ей эти права пользователя. В дополнение к этим правам пользователя у учетной записи должен быть доступ для чтения к каталогу, в котором установлен программный продукт DB2. У учетной записи для службы Сервера администратора DB2 (службы DB2DAS00) должны быть также полномочия на запуск и остановку других служб DB2 (то есть эта учетная запись должна принадлежать к группе уполномоченных пользователей), а также полномочия DB2 SYSADM для всех экземпляров DB2, которыми управляет этот сервер. 42.22 Потеря привилегии EXECUTE для пользователей Query Patroller, созданных в версии 6 Из-за того, что в Query Patroller Версии 7 добавлено несколько новых хранимых процедур (IWM.DQPGROUP, IWM.DQPVALUR, IWM.DQPCALCT и IWM.DQPINJOB), у существующих пользователей, созданных в Query Patroller Версии 6, не сохраняется привилегия EXECUTE в отношении этих пакетов. Программа для автоматического исправления этой ошибки добавлена в FixPak 1. При попытке использования DQP Query Admin для изменения информации пользователя DQP не пытайтесь удалить существующих пользователей из списка пользователей. 42.23 Ограничения Query Patroller Из-за ограничений платформы для JVM (виртуальной Java-машины) Query Enabler не поддерживается в HP-UX и NUMA-Q. Кроме того, в NUMA-Q не поддерживается Query Patroller Tracker. Если требуются все инструменты клиента Query Patroller, мы рекомендуем воспользоваться другой платформой (например, Windows NT), чтобы запускать эти инструменты для сервера HP-UX или NUMA-Q. 42.24 Необходимость принятия всех пользовательских программ, которые будут использованы в Центре хранилищ данных (Data Warehouse Center - DWC) Если вы хотите использовать хранимую процедуру, построенную Построителем хранимых процедур DB2, в качестве пользовательской программы в Центре хранилищ данных (DWC), в эту хранимую процедуру перед оператором con.close(); необходимо вставить оператор: con.commit(); Если этот оператор не вставить, для изменений, внесенных хранимой процедурой при запуске ее из DWC, будет выполнен откат. Чтобы изменения вступили в силу в базе данных, для всех пользовательских программ в DWC необходимо явным образом выполнять принятие для всех включенных в них функций DB2, то есть в пользовательские программы необходимо добавлять оператор COMMIT. 42.25 Новая опция команды экспорта Центра хранилищ данных У команды экспорта из командной строки для файлов языка тегов появилась новая опция /B. Эта опция недоступна через интерфейс Центра хранилищ данных. Новый синтаксис для команды iwh2exp2: iwh2exp2 имя_файла.INP имя_базы_данных id_пользователя пароль [PREFIX=схема_таблицы] [/S] [/R] [/B] где - имя_файла.INP - полное имя файла INP - имя_базы_данных - имя управляющей базы данных Центра хранилищ данных - id_пользователя - ID пользователя, использованный для регистрации в этой базе данных - пароль - пароль, использованный для регистрации в этой базе данных - необязательные параметры: - PREFIX=схема_таблицы - схема таблицы для таблиц управляющей базы данных (значение по умолчанию - IWH) - /S: - экспортировать расписания с выбранными шагами - /R: - не экспортировать источники хранилища с выбранными шагами - /B: - не экспортировать участвующие шаги с выбранными шагами Прим.:Если указано /R или /B, источники хранилища или участвующие шаги должны уже существовать при импорте полученного файла языка тегов, иначе будет возвращена ошибка. 42.26 API служб резервного копирования (XBSA) API служб резервного копирования (XBSA) был определен The Open Group в Великобритании как открытый интерфейс прикладного программирования между прикладными программами или утилитами, которым для целей резервного копирования или архивирования требуется управление хранением данных. Стандарт определен в книге "Open Group Technical Standard System Management: Backup Services API (XBSA)", номер документа C425 (ISBN: 1-85912-056-3). Для поддержки этих API созданы две новые переменные реестра DB2, в настоящее время поддерживаемые в AIX, HP, Solaris и Windows NT: DB2_VENDOR_INI Задает файл, содержащий все установки среды, специфичные для конкретного производителя. Значение читается при запуске менеджера баз данных. DB2_XBSA_LIBRARY Указывает на предоставляемую производителем библиотеку XBSA. В AIX эта установка должна включать в себя совместно используемый объект, если он не носит имя shr.o. В HP, Solaris и Windows NT имени совместно используемого объекта не требуется. Например, чтобы использовать NetWorker Business Suite Module для DB2 фирмы Legato, надо задать значение для этой переменной реестра так: db2set DB2_XBSA_LIBRARY="/usr/lib/libxdb2.a(bsashr10.o)" Интерфейс XBSA можно вызвать из команды BACKUP DATABASE или RESTORE DATABASE. Например: db2 backup db sample use XBSA db2 restore db sample use XBSA 42.27 Агент OS/390 Содержание документа. Установка в OS/390 и возможности В этом документе вы найдете указания о том, как устанавливать агент OS/390, и информацию о его возможностях. Краткий обзор процесса установки смотрите в разделе "Обзор установки", а подробные указания - в разделе "Подробности установки". Информацию о возможностях агента смотрите в разделах "Установка дополнительных возможностей агента", "Преобразователи" и "Доступ к другим базам данных (не DB2)". Обзор Центр хранилищ данных DB2 содержит агент OS/390. Этот агент можно использовать для связи между DB2 Universal Database for OS/390 и другими базами данных, включая базы данных DB2 на других платформах и базы данных, отличные от DB2. Агент может обмениваться данными с поддерживаемыми источниками данных, использующими соединение ODBC. Агент работает под OS/390 UNIX Systems Services. Для него требуется OS/390 V2R6 или новее, и он совместим с DB2 for OS/390 Версий 5, 6 и 7. Агент OS/390 поддерживает следующие задачи: Копирование данных из исходной базы данных DB2 в базу данных назначения DB2 Выборка примера содержимого из таблицы или файла Выполнение пользовательских программ Доступ к другим базам данных (не DB2) через IBM DataJoiner Доступ к данным VSAM или IMS через Classic Connect фирмы Cross Access Запуск утилит DB2 Universal Database for OS/390 Запуск задания Apply для IBM Data Propagator 42.27.1 Обзор установки Эти шаги представляют собой общее описание процесса установки. Подробности шагов приводятся в разделе "Подробности установки". Установка агента OS/390 с ленты DB2 Universal Database for OS/390 Изменение переменных среды в файле профиля. Конфигурирование соединений: Между ядром и демоном агентов. Между агентом и базами данных, к которым он будет обращаться. Связывание CLI локально и с любыми удаленными базами данных. Задание файла инициализации ODBC. Задание авторизации так, чтобы пользователь: Мог запускать демон агентов. Имел полномочия выполнения для плана DSNAOCLI. При необходимости имел полномочия на чтение и запись в каталогах журнала и трассировки ODBC Запуск демона агентов. 42.27.2 Подробности установки Установка агента OS/390 Агент OS/390 включен в состав ленты с DB2 Universal Database for OS/390 Версии 7. Подробности установки агента OS/390 смотрите в программном каталоге, прилагаемом к этой ленте. Перед установкой агента OS/390 в подсистеме DB2 необходимо установить APAR PQ36585 или PQ36586. Изменение переменных среды в файле профиля Эти переменные задают для агента различные библиотеки DB2, выходные каталоги и т.п. В следующем примере приводится пример содержимого файла .profile. Файл .profile определяет переменные среды и должен находится в домашнем каталоге пользователя, запускающего демон агентов: export VWS_LOGGING=/usr/lpp/DWC/logs export VWP_LOG=/usr/lpp/DWC/vwp.log export VWS_TEMPLATES=usr/lpp/DWC/ export DSNAOINI=/usr/lpp/DWC/dsnaoini export LIBPATH=usr/lpp/DWC/:$LIBPATH export PATH=/usr/lpp/DWC/:$PATH export STEPLIB=DSN710.SDSNEXIT:DSN710.SDSNLOAD Конфигурирование соединений Чтобы сконфигурировать соединения ядра с демоном агентов, добавьте в файл /etc/services или TCPIP.ETC.SERVICES следующие строки: vwkernal 11000/tcp vwd 11001/tcp vwlogger 11002/tcp Чтобы сконфигурировать соединения между агентом OS/390 и базами данных, добавьте все удаленные базы данных в базу данных связи OS/390 (communications database - CDB). Несколько примеров добавления в CDB: INSERT INTO SYSIBM.LOCATIONS (LOCATION, LINKNAME, PORT) VALUES ('NTDB','VWNT704','60002'); INSERT INTO SYSIBM.IPNAMES (LINKNAME, SECURITY_OUT, USERNAMES, IPADDR) VALUES ('VWNT704', 'P', 'O', 'VWNT704.STL.IBM.COM'); INSERT INTO SYSIBM.USERNAMES (TYPE, AUTHID, LINKNAME, NEWAUTHID, PASSWORD) VALUES ('O', 'MVSUID', 'VWNT704', 'NTUID', 'NTPW'); Дополнительную информацию о конфигурировании соединений и изменении базы данных связи смотрите в главе "Connecting Distributed Database Systems" руководства DB2 UDB for OS/390 Installation Guide, GC26-9008-00. Связывание CLI Поскольку агент OS/390 использует CLI для связи с DB2, необходимо связать план CLI со всеми удаленными базами данных, к которым агент будет обращаться. Несколько примеров операторов связывания пакетов для локальной базы данных DB2 for OS/390: BIND PACKAGE (DWC6CLI) MEMBER(DSNCLICS) ISO(CS) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLINC) ISO(NC) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIRR) ISO(RR) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIRS) ISO(RS) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIUR) ISO(UR) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIMS) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIC1) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIC2) BIND PACKAGE (DWC6CLI) MEMBER(DSNCLIF4) Несколько примеров операторов связывания пакетов для базы данных DB2, работающей под Windows NT: BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLICS) ISO(CS) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLINC) ISO(NC) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIRR) ISO(RR) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIRS) ISO(RS) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIUR) ISO(UR) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIC1) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIC2) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIQR) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIF4) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIV1) BIND PACKAGE (NTDB.DWC6CLI) MEMBER(DSNCLIV2) Пример оператора для связывания пакетов CLI в единый план: BIND PLAN(DWC6CLI) PKLIST(*.DWC6CLI.* ) Задание файла инициализации ODBC Пример файла инициализации ODBC, inisamp, включен в каталог usr/lpp/DWC/. Можно отредактировать этот файл для работы с вашей системой или создать свой собственный файл. Чтобы убедиться, что этот файл работает правильно, проверьте, правильно ли он сконфигурирован: Переменная среды DSNAOINI должна указывать на этот файл инициализации. Имя этого файла должно следовать схеме dsnaoini.имя_положения. Файл должен включать в себя параметры CONNECTTYPE=2 и MVSATTACHTYPE=CAF. Дополнительную информацию о связывании CLI и файле DSNAOINI смотрите в справочном руководстве DB2 UDB for OS/390 ODBC Guide and Reference, SC26-9005. Задание авторизации Агент OS/390 является процессом демона. Демон агентов можно запускать с обычной защитой UNIX или с защитой UNIX OS/390. Поскольку агенту требуется авторизация демона, определите следующие исполняемые программы агента для RACF Program Control: libtls4d.dll iwhcomnt.dll vwd Чтобы определить исполнимые программы для управления программами RACF, перейдите в каталог, в котором хранятся исполняемые файлы Центра хранилищ данных, и запустите следующие команды: extattr +p libtls4d.dll extattr +p iwhcomnt.dll extattr +p vwd Чтобы использовать команду extattr с параметром +p, у вас должен быть доступ по крайней мере для чтения к классу BPX.FILEATTR.PROGCTL FACILITY. В следующем примере показана команда RACF, используемая для предоставления такого разрешения ID пользователя SMORG: RDEFINE FACILITY BPX.FILEATTR.PROGCTL UACC(NONE) PERMIT BPX.FILEATTR.PROGCTL CLASS(FACILITY) ID(SMORG) ACCESS(READ) SETROPTS RACLIST(FACILITY) REFRESH Дополнительную информацию об авторизации смотрите в книге OS/390 UNIX System Services Planning, SC28-1890. Запуск демона агентов После завершения конфигурирования системы запустите демон агентов: Свяжитесь по telnet с UNIX Systems Services на OS/390, используя имя хоста OS/390 и порт USS. Запустите демон агентов: Чтобы запустить демон в приоритетном режиме, введите в командную строку vwd. Чтобы запустить демон в фоновом режиме, введите: vwd>/usr/lpp/DWC/logs/vwd.log 2>&1 & Чтобы проверить, что демон агентов OS/390 запущен, введите в командной строке оболочки UNIX: ps -e | grep vwd Другой вариант - ввести с консоли OS/390 D OMVS,a=all и найти строку vwd 42.27.3 Настройка дополнительных функций агента В программный пакет Менеджер хранилищ DB2 включены следующие пользовательские программы: vwpftp: запускает командный файл FTP vwpmvs: запускает поток заданий JCL vwprcpy: копирует файл по протоколу FTP XTClient: программа триггера клиента etidlmvs: утилита от ETI (Evolutionary Technologies International); удаляет файл в MVS. etircmvs: утилита от ETI; запускает FTP на хосте MVS. etiexmvs: утилита от ETI; запускает JCL на хосте MVS. Кроме того, можно определять в Центре хранилищ данных пользовательские программы и хранимые процедуры. Агент OS/390 поддерживает любые исполнимые программы, работающие под UNIX Systems Services. Пользовательская программа назначается одному или нескольким шагам. При запуске пользовательской программы происходят следующие действия: Запускается агент. Агент запускает пользовательскую программу. Пользовательская программа возвращает агенту код возврата и файл обратной связи. Агент возвращает результаты ядру. Чтобы запускать программы ETI на OS/390, сначала необходимо установить FixPack 2 для DB2 Universal Database Версии 7.1. Переменная среды VWP_LOG задает каталог, куда могут записывать вывод пользовательские программы. Если вы используете пользовательскую программу для выполнения задания, использующего FTP, сначала необходимо создать JCL и данные, которые вы хотите передать. Имя задания JCL должно иметь вид USERIDx, где x - одна буква или цифра (пример: MYUSERA). Класс вывода для файлов MSGCLASS и SYSOUT, заданных в JCL, должен указывать класс вывода, принадлежащий JES. Ограничение: максимальная LRECL для выполняемого задания - 254 символов. JES просматривает только первые 72 символа JCL. Изменение шаблона Центра хранилищ данных для поддержки FTP Центр хранилищ данных устанавливает шаблон JCL для передачи файлов с использованием FTP. Если вы планируете, что агент OS/390 будет использовать команды FTP GET или PUT для передачи файлов с хоста OS/390 на другой удаленный хост, необходимо изменить учетную информацию в шаблоне JCL для вашей системы OS/390: Зарегистрируйтесь с ID, у которого есть полномочия копирования и изменения файлов в каталоге /usr/lpp/DWC. Найдите файл ftp.jcl и сделайте его копию под новым именем имя_системы.ftp.jcl, где имя_системы - имя системы OS/390. Создайте копию этого файла для каждой системы OS/390, на которой вы собираетесь запускать программы преобразования vwpmvs или ETI extract. Например, если хотите запустить любую из этих программ на STLMVS1, создайте копию этого файла с именем STLMVS1.ftp.jcl. При помощи текстового редактора исправьте JCL в соответствие с местными требованиями. Измените учетную информацию, чтобы она соответствовала стандартам учетной информации вашей системы MVS. Не изменяйте параметры в скобках, такие как [USERID] и [FTPFILE]. (Скобки представлены шестнадцатеричными символами x'AD' и x'BD', соответственно. Если для вашего типа терминала TSO в опции SPF 0 не установлено 3278A, вы можете увидеть вместо скобок специальные символы. В этом нет ничего страшного, если не изменять x'AD' и x'BD', а также какие-либо данные между этими символами.) Измените переменную среды VWS_TEMPLATES, чтобы она указывала на каталог, в который скопирован файл шаблона. В Центр хранилищ данных включен следующий пример шаблона JCL: //[USERID]A JOB , 'PUT/GET', // CLASS=A, // USER=&SYSUID, // NOTIFY=&SYSUID, // TIME=(,30), // MSGCLASS=H //STEP1 EXEC PGM=FTP,PARM='( EXIT' //INPUT DD DSN=[FTPFILE],DISP=SHR //OUTPUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* Выборка содержимого таблицы или файла Использование агента OS/390 позволяет производить выборку содержимого таблиц DB2 и плоских файлов, таких как файлы UNIX Systems Services и собственные плоские файлы OS/390. Classic Connect с использованием агента OS/390 позволяет также производить выборку содержимого файлов IMS или VSAM. В случае плоского файла для определения его формата агент использует параметры в свойствах определения файла. 42.27.4 Составление расписания шагов хранилища при помощи программы триггера (XTClient) Программа триггера используется для создания расписания шагов хранилища данных с платформы OS/390. Вы или планировщик заданий OS/390 может инициализировать задание, которое переключает шаг в Центре хранилищ данных. Если этот шаг выполнен успешно, шаг триггера в JCL возвращает код возврата 0. Чтобы использовать программу триггера, в службах системы Unix OS/390 должен быть установлен Java Development Kit (JDK) 1.1.8 или более новый. Чтобы запустить этот триггер, сначала запустите XTServer на компьютере, на котором работает сервер хранилища данных. Этот процесс описан в главе 5 руководства Data Warehouse Center Administration Guide в теме "Starting a step from outside the Data Warehouse Center". После запуска XTServer запустите XTClient в OS/390. Далее приводится пример JCL для запуска триггера. //DBA1A JOB 1,'XTCLIENT',CLASS=A,MSGCLASS=H, // MSGLEVEL=(1,1),REGION=4M,NOTIFY=&SYSUID //****************************************************** //* submit iwhetrig //****************************************************** //BRADS EXEC PGM=BPXBATCH, // PARM=('sh cd /usr/lpp/DWC/; java XTClient 9.317.171.133 1100x // 9 drummond pw bvmvs2nt 1 1 100') //STDOUT DD PATH='/tmp/xtclient.stdout', // PATHOPTS=(OWRONLY,OCREAT), // PATHMODE=SIRWXU //STDERR DD PATH='/tmp/xtclient.stderr', // PATHOPTS=(OWRONLY,OCREAT), // PATHMODE=SIRWXU // Прим.:В приведенном примере кода JCL показано, как продолжать параметры на новой строке. Для этого вводите параметры до колонки 71, а в колонку 72 поместите 'X' и продолжайте с колонки 16 следующей строки. Первая часть этого параметра (cd /usr/lpp/DWC/;) представляет собой оператор перехода в каталог, в котором установлен агент OS/390. Вторая часть параметра запускает XTClient и передает 8 следующих параметров: Имя хоста или IP-адрес сервера Центра хранилищ данных Порт сервера Центра хранилищ данных (обычно 11009) ID пользователя Центра хранилищ данных Пароль Центра хранилищ данных Имя выполняемого шага Команда сервера Центра хранилищ данных, где: 1 = заполнение шага 2 = перевод шага в режим тестирования 3 = перевод шага в режим производства 4 = перевод шага обратно в режим тестирования 5 = перевод шага обратно в режим разработки Опция необходимости ожидания завершения шага; 1 = да, 0 = нет Максимальное число строк (чтобы прочесть все строки, укажите 0 или пробел) 42.27.5 Преобразователи Введение 12 перечисленных преобразователей представляют собой хранимые процедуры Java, обеспечивающие некоторые из основных преобразований данных. Чтобы запустить эти преобразователи, сначала необходимо установить хранимые процедуры Java в подсистеме DB2. Дополнительная информация об этих преобразователях приводится в руководстве IBM DB2 Universal Database Data Warehouse Center Administration Guide Version 7, SC26-9993-00. IWH.CLEAN IWH.PERIODTABLE IWH.KEYTABLE IWH.CHISQUARE IWH.CORRELATION IWH.STATISTICS IWH.INVERTDATA IWH.PIVOTDATA IWH.REGRESSION IWH.ANOVA IWH.SUBTOTAL IWH.MOVINGAVERAGE Установка хранимых процедур Java Это краткая версия полного набора указаний об установке хранимых процедур Java, который приводится в справочнике Application Programming Guide and Reference for Java(TM), SC26-9018 Установите в подсистеме DB2 PTF UQ46170 и UQ46114. Установите в системе OS/390 Visual Age for Java 2.0 или более новую его версию. Установите JDBC в DB2 и свяжите пакеты JDBC в подсистеме DB2. Установите хранимые процедуры RRS и DB2 WLM для подсистемы DB2. Установите хранимые процедуры Java для DB2. При этом надо создать процедуру запуска WLM Java для адресного пространства хранимых процедур Java. В WLM необходимо связать процедуру запуска WLM Java с именем среды WLM. Чтобы связать имя среды с процедурой JCL, используйте панель среды прикладных программ WLM с названием "Create an Application Environment". Укажите имя среды прикладных программ WLM в опции WLM_ENVIRONMENT оператора CREATE или ALTER PROCEDURE, чтобы связать хранимую процедуру или пользовательскую функцию со средой прикладных программ. Убедитесь в том, что у владельца запущенных задач DB2 есть доступ к библиотекам в процедуре запуска WLM Java. Шаги установки преобразователей хранилища Это краткая версия полного набора указаний, который приводится в руководстве IBM DB2 Universal Database Data Warehouse Center Administration Guide Version 7, SC26-9993-00 Либо установите Fixpack 3 в DB2 Universal Database for NT версии 7, либо измените параметры управляющей базы данных хранилища на TRANSREGISTERED =1 и TRANSFENCED=1. Чтобы изменить параметры управляющей базу данных хранилища, введите в командное строки DB2 Universal Database следующие операторы SQL: CONNECT TO ваша_управляющая_база_данных_vw UPDATE IWH.INFORESOURCE SET TRANSREGISTERED = '1' WHERE SUBDBTYPE = 'DB2 MVS' UPDATE IWH.INFORESOURCE SET TRANSFENCED = '1' WHERE SUBDBTYPE = 'DB2 MVS' Определите преобразователи для DB2 Если у вас DB2 for OS/390 Версии 7, используйте операторы SQL из /usr/lpp/DWC/createXfSQLV7. Если у вас DB2 for OS/390 Версии 6, используйте операторы SQL из /usr/lpp/DWC/createXfSQL. Если у вас DB2 for OS/390 Версии 5, используйте приведенные в виде комментариев операторы SQL в /usr/lpp/DWC/createXfSQL. Удалите значки комментариев у всех операторов CREATE PROCEDURE. Затем удалите значки комментариев у операторов INSERT INTO SYSIBM.SYSPROCEDURES и используйте их для определения преобразователей для DB2 for OS/390 Версии 5. При установке хранимых процедур Java WLM используется для связывания процедуры запуска WLM Java с именем среды WLM. Это имя среды указано в опции WLM ENVIRONMENT оператора CREATE PROCEDURE. DSNWLMJ - имя среды WLM, включенное в определения преобразователей, описанных выше. Можно либо добавить имя связи WLM для DSNWLMJ, либо для каждого из определений преобразователей заменить опцию WLM ENVIRONMENT на имя, которое вы уже связали с процедурой запуска. Установите связи от UNIX Systems Services к модулям загрузки преобразователей в IWH710.SIWHLOAD. Свяжитесь по Telnet с UNIX Systems Services в системе хоста OS/390. Перейдите в каталог, в котором установлен агент OS/390. Каталог установки по умолчанию - /usr/lpp/DWC. Если вы используете DB2 V7, перейдите к шагу 4. Если вы используете DB2 V5 или V6, отредактируйте набор данных trlinks в каталоге установки. Превратите следующую строку в комментарий, поставив знак решетки (#) в столбце 1: ln -e IWHXFV7 xf.jll; Удалите в следующей строке из столбца 1 значок комментария (решетку - #). #ln -e IWHXF xf.jll; Сохраните внесенные изменения. Введите trlinks и нажмите клавишу Enter. В этом каталоге будет создана связь xf.jll, которая будет указывать агенту, загружать модуль IWHXF или IWHXFV7. Посредством APF авторизуйте IWH710.SIWHPDSE, а затем добавьте его в перечисление STEPLIB в процедуре запуска хранимых процедур Java DB2. Добавьте каталог, в котором находится связь xf.jll (по умолчанию: /usr/lpp/DWC), в переменные среды CLASSPATH и LIBPATH в наборе данных среды WLM. Если вы не знаете, где расположен набор данных среды WLM, посмотрите в процедуре запуска хранимых процедур Java DB2. Ваш набором данных среды WLM - тот, на который указывает оператор определения данных (DD) JAVAENV. Запустите хранимые процедуры, а затем создайте и запустите шаги хранилища. Ограничения для хранимых процедур Java Объекты Java в сигнатуре хранимой процедуры поддерживаются только в DB2 for OS/390 Версии 7. По этой причине преобразователи в DB2 for OS/390 версий 5 или 6 не поддерживают в своих параметрах пустые значения. В этих версиях при передаче пустого параметра он приравнивается к нулевому значению. Преобразователи версий 5 и 6 рассматривают нулевые параметры, как пустые строки. DB2 поддерживает в хранимых процедурах оператор SQL COMMIT только в DB2 for OS/390 Версии 7. Хранимая процедура INVERTDATA отбрасывает и повторно создает таблицу в хранимой процедуре, поэтому ей требуется оператор принятия. Поэтому IWH.INVERTDATA не поддерживается в DB2 for OS/390 Версии 5 или Версии 6. DB2 for OS/390 не поддерживает пользовательские функции Java, поэтому IWH.FORMATDATE не поддерживается на платформе 390. Пример процедуры запуска для хранимых процедур Java (описан в книге "DB2 for OS/390 Application Programming Guide and Reference for Java"): //DSNWLMJ PROC DB2SSN=DSN,NUMTCB=5,APPLENV=DSNWLMJ <-- значение WLM ENVIRONMENT // в CREATE PROC //******************************************************************* //* ЭТА ПРОЦЕДУРА ИСПОЛЬЗУЕТСЯ ДЛЯ ЗАПУСКА УСТАНОВЛЕННОГО WLM * //* АДРЕСНОГО ПРОСТРАНСТВА SPAS ДЛЯ СРЕДЫ ПРИКЛАДНЫХ ПРОГРАММ DSNWLMJ * //* V WLM,APPLENV=DSNWLMJ,RESUME * //******************************************************************* //DSNWLMJ EXEC PGM=DSNX9WLM,TIME=1440,REGION=0M, // PARM='&DB2SSN, &NUMTCB, &APPLENV' //STEPLIB DD DSN=DSN.TESTLIB,DISP=SHR // DD DSN=IWH710.SIWHPDSE,DISP=SHR <-- Содержит в себе // преобразователи // DD DSN=DSN.HPJSP.PDSE.JDBC,DISP=SHR <-- DLL HPJ из // установки HPJ // DD DSN=SYS1.PP.PDSELINK,DISP=SHR <-- библиотек // времени // выполнения HPJ // DD DSN=DSN710.SDSNEXIT,DISP=SHR // DD DSN=DSN710.SDSNLOAD,DISP=SHR // DD DSN=SYS1.SCEERUN,DISP=SHR // DD DSN=DSN.PDSE,DISP=SHR <-- Информация // установки HPJ //JAVAENV DD DSN=DSN.WLMENVJ.JSPENV,DISP=SHR <-- Переменные // среды, // смотрите далее //CEEDUMP DD SYSOUT=A //DSSPRINT DD SYSOUT=A //JSPDEBUG DD SYSOUT=A //SYSABEND DD SYSOUT=A //SYSPRINT DD SYSOUT=A Пример набора данных переменной среды (описан в книге "DB2 for OS/390 Application Programming Guide and Reference for Java"): ENVAR("TZ=PST07", "DB2SQLJPROPERTIES=/usr/lpp/db2/jdbc/db2710/classes/db2sqljjdbc.properties", "LIBPATH=/usr/lpp/DWC", "VWSPATH=/usr/lpp/DWC", "CLASSPATH=/usr/lpp/db2/jdbc/db2710/classes:/usr/lpp/DWC:/usr/lpp/hpj/lib"), MSGFILE(JSPDEBUG) Поддержка национальных языков для преобразователей Большая часть сообщений, сгенерированных агентом OS/390, посылается для интерпретации на платформу NT, и поэтому в большинстве случаев язык сообщения зависит от того, как установлена UDB для NT. Преобразователи являются исключением. Агент OS/390 предоставляет для преобразователей следующие файлы сообщений: Имя файла: Язык: Xf.properties_Fi_FI Финский в Финляндии Xf.properties_No_NO Норвежский в Норвегии Xf.properties_Ru_RU Русский в России Xf.properties_Zh_CN Китайский в Китае (КНР) Xf.properties_Zh_TW Китайский на Тайване Xf.properties_Da_DK Датский в Дании Xf.properties_De_DE Немецкий в Германии Xf.properties_En_US Английский в США Xf.properties_Es_ES Испанский в Испании Xf.properties_Fr_FR Французский во Франции Xf.properties_It_IT Итальянский в Италии Xf.properties_Ja_JP Японский в Японии Xf.properties_Ko_KR Корейский в Корее Xf.properties_Pt_BR Португальский в Бразилии Xf.properties_Sv_SE Шведский в Швеции Если сообщения преобразователей должны быть на языке, отличном от английского, выберите один из этих файлов и скопируйте его содержимое в Xf.properties. 42.27.6 Доступ к другим базам данных (не из семейства DB2) Для доступа к другим базам данных (не DB2 Universal Database) агент OS/390 использует DataJoiner. DataJoiner позволяет агенту использовать нормальный входной поток DRDA, как если бы он был базой данных UDB. Если требование ODBC направлено источнику не из семейства DB2, DataJoiner вызывает дополнительный слой программного кода для доступа к "чужим" базам данных. DataJoiner может связываться с Oracle, Sybase, Informix, Microsoft SQL Server, Teradata и любыми другими базами данных, у которых есть драйвер ODBC для операционных сред Windows NT, AIX или Solaris фирмы Sun. Агент OS/390 может обращаться к DataJoiner как к источнику, но не как к потребителю. DataJoiner не поддерживает двухфазное принятие. Несмотря на то, что DataJoiner поддерживает TCP/IP как реквестер прикладных программ в версиях 2.1 и 2.1.1, у него нет сервера прикладных программ. Поскольку агенту OS/390 для использования TCP/IP может потребоваться сервер прикладных программ, вместо доступа к DataJoiner из OS/390 используйте соединение SNA. Доступ к IMS и VSAM в OS/390 Classic Connect приобретается и устанавливается отдельно от агента хранилища. Агент OS/390 может обращаться к IMS и VSAM при помощи драйвера ODBC Classic Connect. Classic Connect позволяет устанавливать DB2-подобное определение наборов данных IMS и VSAM, а затем обращаться к ним с использованием ODBC. Агент OS/390 загружает правильный драйвер ODBC на основе того, направлено требование к Classic Connect или к DB2. Если вы обращаетесь к источнику DB2, агент загружает драйвер ODBC DB2. Если вы обращаетесь к источнику VSAM или IMS, агент загружает драйвер ODBC Classic Connect. Затем обрабатывается требование агента. Установка драйвера ODBC Classic Connect и доступ к хранилищам Classic Connect приобретается и устанавливается отдельно от агента OS/390. Classic Connect может представлять файл или части файла в виде одной или нескольких реляционных таблиц. Для доступа Classic Connect к данным IMS и VSAM эти данные необходимо преобразовать. Можно отображать данные вручную или использовать преобразователь нереляционных данных Microsoft Windows Classic Connect. Установите сервер данных Classic Connect в OS/390 Необязательно: установите программный продукт Classic Connect Data Mapper в NT. Задайте определения логической таблицы Classic Connect так, чтобы Classic Connect могла обращаться к данным реляционным способом. Для создания определений для структур IMS и VSAM используйте преобразователь данных или создайте эти определения вручную После установки Classic Connect можно сконфигурировать доступ к хранилищу данных: Создайте файл .ini Classic Connect. Пример файла конфигурации прикладной программы Classic Connect cxa.ini находится в каталоге /usr/lpp/DWC/; воспроизводим его здесь: * язык сообщений NL = US English * основной файл ресурсов NL CAT = usr/lpp/DWC/v4r1m00/msg/engcat FETCH BUFFER SIZE = 32000 DEFLOC = CXASAMP USERID = uid USERPASSWORD = pwd DATASOURCE = DJX4DWC tcp/9.112.46.200/1035 MESSAGE POOL SIZE = 1000000 Измените строку DATASOURCE в файле .ini. Эта строка содержит имя источника данных и адрес протокола. Имя источника данных должно соответствовать имени Query Processor, определенному на сервере данных Classic Connect, которое задано в записи QUERY PROCESSOR SERVICE INFO ENTRY в файле конфигурации этого сервера данных. Адрес протокола можно найти в этом же файле в записи TCP/IP SERVICE INFO. USERID и USERPASSWORD в этом файле используются при определении источника данных хранилища. Экспортируйте переменную среды CXA_CONFIG в файлы программ Classic Connect; обычно они расположены в том же каталоге, что и файл .ini. Исправьте переменную среды LIBPATH, включив в нее путь к файлам программ Classic Connect; обычно они расположены в том же каталоге, что и файл .ini. Необязательно: проверьте установку при помощи программы тестирования cxasamp, введя cxasamp из каталога, в котором находится файл .ini. location/uid/pwd - имя источника данных/id пользователя/пароль пользователя, определенные в файле .ini. Определите источник данных для хранилища точно так же, как вы определяете любой другой источник данных DB2. Файл dsnaoini изменять не надо, поскольку в DB2 for OS/390 нет менеджера драйверов. Менеджер драйверов для Classic Connect встроен в агент OS/390. 42.27.7 Запуск утилит DB2 for OS/390 Чтобы использовать агент OS/390 для запуска утилит, необходимо установить для него APAR PQ44904. DSNUTILS - хранимая процедура DB2 for OS/390, выполняемая в средах WLM и RRS. Ее можно использовать для запуска любых установленных утилит DB2 при помощи интерфейса пользовательских хранимых процедур. У утилит DB2 for OS/390 LOAD, REORG и RUNSTATS есть страницы свойств, которые можно использовать для изменения работы этих утилит. Чтобы изменить свойства какой-нибудь из этих утилит, щелкните по ней правой кнопкой мыши в окне Разработчик моделей процессов и выберите пункт Свойства. Менеджер хранилищ предоставляет также интерфейс для DSNUTILS, позволяющий включать утилиты DB2 в шаги Менеджера хранилищ. Для установки хранимой процедуры DSNUTILS: При установке DB2 запустите задание DSNTIJSG, чтобы установить и связать хранимую процедуру DSNUTILS. Убедитесь, что определение DSNUTILS использует PARAMETER STYLE GENERAL. Разрешите управляемые WLM хранимые процедуры. Задайте среды RRS и WLM. Запустите примеры пакетных программ DSNUTILS, поставляемые с DB2. (Рекомендуется, но не обязательно.) Свяжите план DSNUTILS с планом DSNCLI, чтобы CLI мог вызывать хранимую процедуру: BIND PLAN(DSNAOCLI) PKLIST(*.DSNAOCLI.*, *.DSNUTILS.*) Сконфигурируйте шаг с использованием Менеджера хранилищ и выполните этот шаг. Надо использовать тип заполнения APPEND. Иначе Менеджер хранилищ перед выполнением утилиты удалит все содержимое таблицы. Копирование данных между таблицами DB2 for OS/390 с использованием утилиты LOAD Предположим, что вы хотите скопировать таблицу, выгружая ее в плоский файл, а затем загружая этот плоский файл в другую таблицу. Обычно, чтобы это сделать, необходимо выгрузить данные, отредактировать операторы управления загрузкой, которые образуются при выгрузке, а затем загрузить данные. При использовании хранилища можно указать, что вы хотите перегрузить данные в другую таблицу без остановки между шагами и редактирования управляющих операторов вручную. Делается это так: воспользуйтесь интерфейсом Reorg/Generic для создания шага, который выгружает файл с использованием утилиты UNLOAD или утилиты REORG TABLESPACE. Обе эти утилиты создают два выходных набора данных, один - с данными таблицы, а другой - с управляющим оператором утилиты, который может использовать утилита LOAD. В управляющем операторе, сгенерированном утилитой, имя таблицы INTO TABLE - это имя выгруженной таблицы. Пример параметров DSNUTILS, которые можно использовать для шага Reorg Unload: Табл. 22. Свойства для шага Reorg Unload UTILITY_ID REORGULX RESTART NO UTSTMT REORG TABLESPACE DBVW.USAINENT UNLOAD EXTERNAL UTILITY_NAME REORG TABLESPACE RECDSN DBVW.DSNURELD.RECDSN RECDEVT SYSDA RECSPACE 50 PNCHDSN DBVW.DSNURELD.PNCHDSN PNCHDEVT SYSDA PNCHSPACE 3 Для создания шага загрузки используется интерфейс Reorg/Generic DSNUTILS. Обычно параметр оператора утилиты DSNUTILS задает оператор управления утилитой. Интерфейс утилит хранилища допускает также задание имени файла в поле оператора утилиты. Указать файл, содержащий действительный управляющий оператор, можно при помощи ключевого слова :FILE:, а имя таблицы, которую вы хотите загрузить - при помощи ключевого слова :TABLE:. Чтобы использовать утилиту LOAD для работы с выходными данными предыдущего примера, задайте для свойств LOAD следующие значения параметров: Прим.:В поле UTSTMT введите либо оператор загрузки, либо имя файла, который был выводом утилиты REORG с опцией UNLOAD EXTERNAL. Табл. 23. Свойства шага LOAD UTILITY_ID LOADREORG RESTART NO UTSTMT :FILE:DBVW.DSNURELD.PNCHDSN:TABLE:[DBVW]. INVENTORY UTILITY_NAME LOAD RECDSN DBVW.DSNURELD.RECDSN RECDEVT SYSDA Это будет работать с любыми исходными таблицами или таблицами назначения DB2 for OS/390 в той же самой или в другой подсистеме DB2. Плоский файл управляющего оператора может быть либо файлом HFS, либо собственным файлом MVS. Более подробную информацию о DSNUTILS и об утилитах DB2, доступных для платформы OS/390, смотрите в справочном руководстве DB2 for OS/390 Utility Guide and Reference. 42.27.8 Репликация Агент OS/390 можно использовать для автоматизации шага применения репликации Data Propagator. Для репликации требуется исходная база данных, управляющая база данных и база данных назначения. Это могут быть как разные, так и одни и те же базы данных. Задание Capture читает журнал DB2 для определения того, какие строки исходной базы данных были добавлены, изменены или удалены, и записывает изменения в таблицу изменений данных. Затем это задание записывает изменения в таблицу изменения данных. Потом выполняется задание Apply для применения изменений к базе данных назначения. Программный пакет Менеджер хранилищ DB2 может автоматизировать выполнение задания Apply путем создания шага репликации. Менеджер хранилищ позволяет определить тип выполняемого задания Apply и время его запуска. Для этого надо включить библиотеку SASNLINK в переменную среды steplib. Добавление поддержки репликации в шаблон Центра хранилищ данных Центр хранилищ данных содержит шаблон JCL для поддержки репликации. Если вы собираетесь использовать агент OS/390 для запуска программы Apply, необходимо изменить учетную информацию и информацию о наборах данных в этом шаблоне для системы OS/390. Чтобы изменить шаблон: Зарегистрируйтесь с ID, у которого есть полномочия копирования и изменения файлов в каталоге /usr/lpp/DWC. Найдите файл apply.jcl и сделайте копию этого файла под именем имя_системы.apply.jcl, где имя_системы - имя системы MVS. Например, если имя вашей системы - STLMVS1, создайте копию этого файла под именем STLMVS1.apply.jcl. При помощи текстового редактора исправьте JCL в соответствие с местными требованиями. Измените учетную информацию так, чтобы она соответствовала стандартам учетной информации, и измените наборы данных STEPLIB DD и MSGS DD для вашей системы MVS. При необходимости измените имя программы в строке EXEC. Подробности изменения имен программ смотрите в справочном руководстве DB2 Replication Guide and Reference. Не изменяйте параметры в скобках, такие как [USERID] и [APPLY_PARMS]. (Скобки представлены шестнадцатеричными символами x'AD' и x'BD', соответственно. Если для вашего типа терминала TSO в опции SPF 0 не установлено 3278A, вы можете увидеть вместо скобок специальные символы. В этом нет ничего страшного, если не изменять x'AD' и x'BD', а также какие-либо данные между этими символами.) Измените переменную среды VWS_TEMPLATES, чтобы она указывала на каталог, в который скопирован файл шаблона. В следующем примере показан шаблон JCL, поставляемый с Центром хранилищ данных: Шаблон JCL Apply: //[USERID]A JOB ,MSGCLASS=H,MSGLEVEL=(1,1), // REGION=2M,TIME=1440,NOTIFY=&SYSUID //* НЕ ИЗМЕНЯЙТЕ ПЕРВУЮ СТРОКУ ЭТОГО ШАБЛОНА. //* ОСТАЛЬНЫЕ СТРОКИ JCL НАДО ИЗМЕНИТЬ В СООТВЕТСТВИИ С ВАШЕЙ СРЕДОЙ //********************************************** //* RUN APPLY/MVS ON OS/390 DB2 6.1 * //********************************************** //ASNARUN EXEC PGM=ASNAPV66,REGION=10M, // [APPLY_PARMS] //STEPLIB DD DISP=SHR,DSN=DPROPR.V6R1M0.SASNLINK // DD DISP=SHR,DSN=DSN610.SDSNLOAD //MSGS DD DSN=DPROPR.V2R1M0A.MSGS,DISP=SHR //ASNASPL DD DSN=&&ASNASPL,DISP=(NEW,DELETE,DELETE), // UNIT=SYSDA,SPACE=(CYL,(10,1)), // DCB=(RECFM=VB,BLKSIZE=6404) //SYSTERM DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* // 42.27.9 Регистрация агента Многие из компонентов Менеджера хранилищ DB2, такие как сервер, регистратор, агенты, а также некоторые программы Центра хранилищ данных производят записи в журналы в каталоге регистрации, заданном переменной среды VWS_LOGGING. Эти файлы журнала представляют собой плоские текстовые файлы. Запись агента в журнал можно запустить из Центра хранилищ данных. На левой панели щелкните правой кнопкой мыши по пункту Хранилище и выберите Свойства. На вкладке Уровень трассировки измените необходимым образом установки для уровня трассировки. Трассировка агента поддерживает уровни от 0 до 4: Уровень 1 - трассировка входов и выходов Уровень 2 - уровень 1 плюс отладочная трассировка Уровень 3 - уровень 2 плюс трассировка данных Уровень 4 - трассировка внутреннего буфера При установке уровня трассировки выше 1 производительность уменьшится. Трассировку следует включать только для отладки. Информация трассировки сохраняется в файле AGNTxxx.LOG. Информация среды сохраняется в файле AGNTxxx.SET. 42.28 Кэширование на клиенте в Windows NT Если пользователь пытается с использованием действительного маркера и диска совместного пользования обратиться к файлу READ PERM DB, расположенному на компьютере с сервером Windows NT, на котором установлена DB2 Datalinks, этот файл открывается правильно. Однако после этого последующие требования открытия с использованием того же элемента реально не доходят до сервера и обслуживаются из кэша на клиенте. Даже после истечения срока действия маркера содержимое файла остается видимым для пользователя, поскольку запись все еще находится в журнале. Эта ошибка не возникает, если файл расположен на рабочей станции Windows NT. Ошибка может быть исправлена путем задания нулевого значения для переменной реестра \\HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\Lanmanserver\Parameters\EnableOpLocks на сервере Windows NT. При этом любое обращение к файлу, расположенному на сервере, с рабочей станции клиента через диск совместного пользования всегда будет направляться на этот сервер, а не обслуживаться из кэша клиента. Поэтому маркер проверяется повторно для каждого запроса. Недостаток этого решения - снижение общей производительности любого доступа к файлам с сервера через диски совместного пользования. Даже при такой установке, если к файлу обращаться через отображение диска совместного пользования непосредственно на сервере, а не с какого-либо компьютера клиента, требование все равно будет обслуживаться из кэша. Поэтому истечение срока годности маркера действовать не будет. Прим.:Во всех случаях, если доступ к файлу производится локально, а не через диск совместного пользования, задание срока годности маркера и последующее его истечение будет происходить в обычном порядке. 42.29 Пробные программные продукты на компакт-дисках с Enterprise Edition для UNIX На компакт-дисках с DB2 Universal Database (UDB) Enterprise Edition (EE) для платформ на основе UNIX Версии 6 и Версии 7 находится 90-дневная пробная версия DB2 Connect Enterprise Edition (CEE). Поскольку функции DB2 Connect встроены в программный продукт DB2 UDB EE, чтобы пользоваться этими функциями, в системах, в которых установлена DB2 UDB EE, программный продукт DB2 CEE устанавливать не требуется. Если вы установили 90-дневную пробную версию DB2 CEE и хотите обновить ее до лицензированной версии, необходимо купить программный продукт DB2 CEE и установить лицензионный ключ DB2 CEE. Переустанавливать программный продукт не требуется. Указания по установке лицензионного ключа приводятся в книге Quick Beginnings (Быстрый старт) для DB2 EE или DB2 CEE для платформы UNIX. Если вы установили пробную версию программного продукта CEE при установке EE и не хотите устанавливать CEE постоянно, пробную 90-дневную версию CEE можно удалить, как описано ниже. Если вы удалили пробную версию Connect EE, функции DB2 Connect останутся вам доступны через DB2 EE. Чтобы удалить DB2 Connect Версии 7, деинсталлируйте (в зависимости от платформы)следующие наборы файлов: В AIX деинсталлируйте набор файлов db2_07_01.clic. В NUMA-Q и Solaris Operating Environments деинсталлируйте пакет db2clic71. В Linux деинсталлируйте RPM db2clic71-7.1.0-x. В HP-UX деинсталлируйте набор файлов DB2V7CONN.clic. Чтобы удалить DB2 Connect Версии 6, деинсталлируйте (в зависимости от платформы) следующие наборы файлов: В AIX деинсталлируйте набор файлов db2_06_01.clic. В NUMA-Q и Solaris Operating Environments деинсталлируйте пакет db2cplic61. В Linux деинсталлируйте RPM db2cplic61-6.1.0-x. В HP-UX деинсталлируйте набор файлов DB2V6CONN.clic. 42.30 Пробные программные продукты на компакт-дисках с DB2 Connect Enterprise Edition для UNIX На компакт-дисках с DB2 Connect Enterprise Edition (EE) для платформ на основе UNIX Версии 6 и Версии 7 находится 90-дневная пробная версия DB2 Universal Database (UDB) Enterprise Edition (EE). 90-дневная пробная версия DB2 UDB EE поставляется для ее оценки и не требуется для работы DB2 Connect. Если вы установили 90-дневную пробную версию DB2 UDB EE и хотите обновить ее до лицензированной версии, необходимо купить программный продукт DB2 UDB EE и установить лицензионный ключ DB2 UDB EE. Переустанавливать программный продукт не требуется. Указания по установке лицензионного ключа приводятся в книге Quick Beginnings (Быстрый старт) для DB2 EE или DB2 CEE для платформы UNIX. Если вы установили пробную версию программного продукта UDB EE при установке Connect EE и не хотите постоянной установки UDB EE, пробную 90-дневную версию EE можно удалить в соответствии со следующими указаниями. Удаление пробной версии DB2 UDB EE не оказывает влияния на работу DB2 Connect EE. Чтобы удалить DB2 UDB EE Версии 7, деинсталлируйте (в зависимости от платформы) следующие наборы файлов: В AIX деинсталлируйте набор файлов db2_07_01.elic. В NUMA-Q и Solaris Operating Environments деинсталлируйте пакет db2elic71. В Linux деинсталлируйте RPM db2elic71-7.1.0-x. В HP-UX деинсталлируйте набор файлов DB2V7ENTP.elic. Чтобы удалить DB2 UDB EE Версии 6, деинсталлируйте (в зависимости от платформы) следующие наборы файлов: В AIX деинсталлируйте набор файлов db2_06_01.elic. В NUMA-Q и Solaris Operating Environments деинсталлируйте пакет db2elic61. В Linux деинсталлируйте RPM db2elic61-6.1.0-x. В HP-UX деинсталлируйте набор файлов DB2V6ENTP.elic. 42.31 Отбрасывание Менеджера связей данных Теперь для заданной базы данных можно отбросить Менеджер связей данных DB2. Обработка некоторых относящихся к связям данных требований SQL, а также таких утилит, как резервное копирование/восстановление, включает в себя обмен данными со всеми DLM, сконфигурированными для базы данных. Раньше в DB2 не было возможности отбрасывать сконфигурированный DLM даже тогда, когда он не работал. Это приводило к дополнительной затрате ресурсов при обработке SQL и утилит. После добавления DLM механизм базы данных связывается с ним при обработке требований, что может приводить к неудачному выполнению некоторых требований SQL (например, отбросить таблицу/табличное пространство/базу данных). 42.32 Деинсталляция компонентов DLFM с использованием SMIT может удалить дополнительные наборы файлов Перед удалением DB2 (Версии 5, 6 или 7) на компьютере с AIX, на котором установлен Менеджер связей данных, выполните следующие шаги: В качестве пользователя root сделайте копию /etc/vfs, используя команду: cp -p /etc/vfs /etc/vfs.bak Деинсталлируйте DB2. В качестве пользователя root замените /etc/vfs на резервную копию, сделанную на шаге 1: cp -p /etc/vfs.bak /etc/vfs 42.33 Ошибка SQL1035N при использовании CLP в Windows 2000 Если DB2 установлена в каталоге, к которому доступ для записи есть только у некоторых пользователей (например, у администраторов), обычный пользователь при попытке использования процессора командной строки DB2 может получить ошибку SQL1035N. Во избежание этой ошибки DB2 необходимо устанавливать в каталог, к которому доступ для записи есть у всех пользователей. 42.34 Усовершенствование SQL Assist Инструмент SQL Assist теперь позволяет пользователю для объединения таблиц указывать оператор объединения, отличный от "=". Диалог Тип объединения, запускающийся после нажатия на кнопку Тип объединения на странице Объединения инструмента SQL Assist, дополнен включением в него выпадающего списка операторов объединения. Доступные операции: "=", "<>", "<", ">", "<=" и ">=". SQL Assist представляет собой инструмент, помогающий пользователю при создании простых операторов SQL. Этот инструмент доступен из Командного центра (закладка Интерактивные), Центра управления (диалоговые окна Создать производную таблицу и Создать переключатель), Построителя хранимых процедур (мастер "Вставка хранимой процедуры SQL") и из Центра хранилищ данных (шаг Процесс SQL). 42.35 Интеграция с рабочим столом Gnome и KDE для DB2 on Linux DB2 теперь содержит набор утилит для создания папок рабочего стола и значков DB2 запуска часто используемых инструментов DB2 с рабочих столов Gnome и KDE для поддерживаемых дистрибутивов Linux в системах Intel. Эти утилиты устанавливаются в DB2 Версии 7.2 по умолчанию; после установки их можно использовать для создания или удаления значков рабочего стола для одного или нескольких выбранных пользователей. Чтобы добавить набор значков рабочего стола для одного или нескольких пользователей, используйте следующую команду: db2icons <пользователь1> [<пользователь2> <пользователь3>...] Прим.:Обратите внимание на то, что если значки генерируются при работающей среде рабочего стола Gnome или KDE, пользователю может понадобиться дать вручную команду обновления рабочего стола, чтобы увидеть новые значки. Чтобы удалить набор значков рабочего стола для одного или нескольких пользователей, используйте следующую команду: db2rmicons <пользователь1> [<пользователь2> <пользователь3>...] Прим.:Чтобы генерировать или удалять значки для других пользователей, у вас должны быть соответствующие полномочия. Обычно db2icons и db2rmicons можно использовать для создания и удаления значков для себя, если вы обычный пользователь, и для других, если вы - пользователь root или же другой пользователь с правом писать в домашние каталоги указанных пользователей. 42.36 Запуск DB2 в режиме Administration Windows 2000 Terminal Server Начиная с DB2 UDB Версии 7.1 FixPak 3, DB2 может работать в режиме Administration Windows 2000 Terminal Server. Ранее DB2 нельзя было запускать в сеансе клиента режима Administration Windows 2000 Terminal Server. 42.37 Электронная справка для команд BACKUP и RESTORE Информация, выводимая по команде db2 ? backup, некорректна. Вот правильный вариант: BACKUP DATABASE алиас-базы-данных [USER имя-пользователя [USING пароль]] [TABLESPACE (имя-табличного-пространства [ {,имя-табличного-пространства} ... ])] [ONLINE] [INCREMENTAL [DELTA]] [USE TSM [OPEN число-сеансов SESSIONS]] | TO кат/устр [ {,кат/устр} ... ] | LOAD имя-биб [OPEN число-сеансов SESSIONS]] [WITH число-буферов BUFFERS] [BUFFER размер-буфера] [PARALLELISM n] [WITHOUT PROMPTING] Информация, выводимая по команде db2 ? restore, некорректна. Вот правильный вариант: RESTORE DATABASE алиас-базы-данных-источника { опции-восст | CONTINUE | ABORT }"; опции-восст:"; [USER имя-пользователя [USING пароль]] [{TABLESPACE [ONLINE] |"; TABLESPACE (имя-табл-простр [ {,имя-табл-простр} ... ]) [ONLINE] |"; HISTORY FILE [ONLINE]}] [INCREMENTAL [ABORT]]"; [{USE TSM [OPEN число-сеансов SESSIONS] |"; FROM кат/устр [ {,кат/устр} ... ] | LOAD совм-биб"; [OPEN число-сеансов SESSIONS]}] [TAKEN AT дата-время] [TO каталог-назначения]"; [INTO алиас-базы-данных-назначения] [NEWLOGPATH каталог]"; [WITH число-буферов BUFFERS] [BUFFER размер-буфера]"; [DLREPORT имя-файла] [REPLACE EXISTING] [REDIRECT] [PARALLELISM n]"; [WITHOUT ROLLING FORWARD] [WITHOUT DATALINK] [WITHOUT PROMPTING]"; 42.38 "Менеджер хранилищ данных" следует читать как "Менеджер хранилищ данных DB2" Все словосочетания "Менеджер хранилищ данных" на экране и в документации следует читать как "Менеджер хранилищ данных DB2". Дополнительная информация Дополнительная информация 43.1 Электронная поддержка DB2 Universal Database и DB2 Connect Самый свежий и полный источник информации по DB2, в том числе по тем проблемам, которые стали известны после выпуска этого документа - это Web-сайт электронной поддержки DB2 Universal Database & DB2 Connect, расположенный по адресу: http://www.ibm.com/software/data/db2/udb/winos2unix/support. 43.2 DB2 Magazine Чтобы получать самую свежую информацию о продуктах семейства DB2, подпишитесь на журнал "DB2 magazine" (подписка бесплатная). Электронная версия этого журнала доступна по адресу http://www.db2mag.com; на этом же сайте можно найти инструкции о том, как запросить подписку. Приложения Приложение A. Замечания IBM может предлагать описанные продукты, услуги и возможности не во всех странах. Сведения о продуктах и услугах, доступных в настоящее время в вашей стране, можно получить в местном представительстве IBM. Любые ссылки на продукты, программы или услуги IBM не означают явным или неявным образом, что можно использовать только продукты, программы или услуги IBM. Разрешается использовать любые функционально эквивалентные продукты, программы или услуги, если при этом не нарушаются права IBM на интеллектуальную собственность. Однако ответственность за оценку и проверку работы любых продуктов, программ и услуг других фирм лежит на пользователе. Фирма IBM может располагать патентами или рассматриваемыми заявками на патенты, относящимися к предмету данного документа. Получение этого документа не означает предоставления каких-либо лицензий на эти патенты. Запросы по поводу лицензий следует направлять в письменной форме по адресу: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 U.S.A. По поводу лицензий, связанных с использованием наборов двухбайтных символов (DBCS), обращайтесь в отдел интеллектуальной собственности IBM в вашей стране или направьте запрос в письменной форме по адресу: IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106, Japan Следующий абзац не применяется в Великобритании или в любой другой стране, где подобные заявления противоречат местным законам: КОРПОРАЦИЯ INTERNATIONAL BUSINESS MACHINES ПРЕДСТАВЛЯЕТ ДАННУЮ ПУБЛИКАЦИЮ "КАК ЕСТЬ" БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ПРЕДПОЛАГАЕМЫЕ ГАРАНТИИ СОВМЕСТИМОСТИ, РЫНОЧНОЙ ПРИГОДНОСТИ И СООТВЕТСТВИЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. В некоторых странах для определенных сделок подобные оговорки не допускаются, таким образом, это утверждение может не относиться к вам. Данная информация может содержать технические неточности и типографские опечатки. Периодически в информацию вносятся изменения, они будут включены в новые издания этой публикации. Фирма IBM может в любое время без уведомления вносить изменения и усовершенствования в продукты и программы, описанные в этой публикации. Любые ссылки в данной информации на Web-сайты, не принадлежащие IBM, приводятся только для удобства и никоим образом не означают поддержки IBM этих Web-сайтов. Материалы этих Web-сайтов не являются частью данного продукта IBM и вы можете использовать их только на собственную ответственность. IBM может использовать или распространять присланную вами информацию любым способом, как фирма сочтет нужным, без каких-либо обязательств перед вами. Если обладателю лицензии на данную программу понадобятся сведения о возможности: (i) обмена данными между независимо разработанными программами и другими программами (включая данную) и (ii) совместного использования таких данных, он может обратиться по адресу: IBM Canada Limited Office of the Lab Director 1150 Eglinton Ave. East North York, Ontario M3C 1H7 CANADA Такая информация может быть предоставлена на определенных условиях (в некоторых случаях к таким условиям может относиться оплата). Лицензированная программа, описанная в данной публикации, и все лицензированные материалы, доступные с ней, предоставляются IBM на условиях IBM Customer Agreement (Соглашения IBM с заказчиком), Международного соглашения о лицензиях на программы IBM или эквивалентного соглашения. Приведенные данные о производительности измерены в контролируемой среде. Таким образом, результаты, полученные в других операционных средах, могут существенно отличаться от них. Некоторые показатели измерены в системах разработки и нет никаких гарантий, что в общедоступных системах эти показатели будут теми же. Более того, некоторые результаты могут быть получены путем экстраполяции. Реальные результаты могут отличаться от них. Пользователи должны проверить данные для своих конкретных сред. Информация о продуктах других фирм получена от поставщиков этих продуктов, из их опубликованных объявлений или из других общедоступных источников. Фирма IBM не проверяла эти продукты и не может подтвердить точность измерений, совместимость или прочие утверждения о продуктах других фирм. Вопросы о возможностях продуктов других фирм следует направлять поставщикам этих продуктов. Все утверждения о будущих планах и намерениях IBM могут быть изменены или отменены без уведомлений, и описывают исключительно цели фирмы. Эта информация может содержать примеры данных и отчетов, иллюстрирующие типичные деловые операции. Чтобы эти примеры были правдоподобны, в них включены имена лиц, названия компаний и товаров. Все эти имена и названия вымышлены и любое их сходство с реальными именами и адресами полностью случайно. ЛИЦЕНЗИЯ НА КОПИРОВАНИЕ: Эта информация может содержать примеры прикладных программ на языках программирования, иллюстрирующих приемы программирования для различных операционных платформ. Разрешается копировать, изменять и распространять эти примеры программ в любой форме без оплаты фирме IBM для целей разработки, использования, сбыта или распространения прикладных программ, соответствующих интерфейсу прикладного программирования операционных платформ, для которых эти примера программ написаны. Эти примеры не были всесторонне проверены во всех возможных условиях. Поэтому IBM не может гарантировать их надежность, пригодность и функционирование. Каждая копия программ примеров или программ, созданных на их основе, должна содержать следующее замечание об авторских правах: (C) (название вашей фирмы) (год). Части этого кода построены на основе примеров программ IBM Corp. (C) Copyright IBM Corp. _введите год или годы_. Все права защищены. A.1 Товарные знаки Следующие термины (они могут быть помечены звездочкой - *) являются товарными знаками корпорации International Business Machines в Соединенных Штатах и/или в других странах: ACF/VTAM AISPO AIX AIX/6000 AIXwindows AnyNet APPN AS/400 BookManager CICS C Set++ C/370 DATABASE 2 DataHub DataJoiner DataPropagator DataRefresher DB2 DB2 Connect DB2 Extenders DB2 OLAP Server DB2 Universal Database Distributed Relational Database Architecture DRDA eNetwork Extended Services FFST First Failure Support Technology IBM IMS IMS/ESA LAN DistanceMVS MVS/ESA MVS/XA Net.Data OS/2 OS/390 OS/400 PowerPC QBIC QMF RACF RISC System/6000 RS/6000 S/370 SP SQL/DS SQL/400 System/370 System/390 SystemView VisualAge VM/ESA VSE/ESA VTAM WebExplorer WIN-OS/2 Следующие термины являются товарными знаками или зарегистрированными товарными знаками других компаний: Microsoft, Windows и Windows NT - товарные знаки или зарегистрированные товарные знаки Microsoft Corporation. Java, все товарные знаки и логотипы на основе Java и Solaris - товарные знаки Sun Microsystems, Inc. в Соединенных Штатах и/или в других странах. Tivoli и NetView - товарные знаки Tivoli Systems Inc. в Соединенных Штатах и/или других странах. UNIX - зарегистрированный товарный знак в Соединенных Штатах и в других странах, его использование лицензируется исключительно фирмой X/Open Company Limited. Названия других компаний, продуктов и услуг (они могут быть отмечены двойной звездочкой - **) могут быть товарными знаками или марками сервиса других фирм. Индекс A C D E G H I J L M N O P Q R S U V W А Б В Д Ж З И К М Н О П Р С Т У Ф Х Ц Ш Я A Address Windowing Extensions (AWE) (985) Adobe Acrobat Reader вызов в неанглийских версиях (849) AIX 4.3.3 AutoLoader завис после ветвления потоков (1266) API служб резервного копирования поддержка DB2 (1288) app_ctl_heap_sz (996) Archive Log (1030) AS/400 программы Capture и Apply (1040) AutoLoader зависание при ветвлении потоков (1265) C CLI написание программы Unicode (1248) copy daemon (1260) D Data Links File System несовместима с Norton Utilities (899) DataJoiner ограничения (1271) DATALINK ошибки при восстановлении (1267) репликация (1035) DB2 Connect предварительные требования в Sun Cluster 2.2 (890) DB2 Data Links Manager взаимодействие с восстановлением (966) DB2 Enterprise Edition Версия 6, использование в качестве сервера управления DB2 (1025) настройка в качестве сателлита (1007) предварительные требования (1014) DB2 Personal Edition настройка в качестве сателлита (1006) предварительные требования (1013) DB2 Relational Connect установка в AIX, Solaris и Linux (867) установка на Windows NT (866) DB2 Server for VM and VSE управление базами данных из Центра управления (1057) db2_all (969) DB2_INDEX_2BYTEVARLEN (924) db2ArchiveLog (1094) db2expln выполнение (1004) db2start в Windows 95, 98 и ME (1046) DECLARE CURSOR (1201) DFS Client Enabler деинсталляция (1262) dlfm client_conf reasons for failure (1259) dynexpln выполнение (1005) E enable_MQFunctions (1053), (1055) G GRANT CREATE ON SEQUENCE (1206) H HP и Sun Solaris поддержка резервного копирования и восстановления (965) HP-UX нет поддержки Query Enabler (1281) HP-UX 11 окна памяти (1258) I ID пользователей предельное число символов (896) Internet Explorer ошибки Центра управления (840) J JDBC указатели с возможностью прокрутки, доступ (1109) JDK 1.1 путь установки (1072) L Linux задание среды для Центра управления (861) параметры национальных версий для японского и упрощенного китайского (836) M maxappls (1000) mon_heap_sz (998) MQPUBLISH function значения и аргументы (1158) подробное описание (1157) N Netscape использование для доступа к информации электронной справки (844) сообщения об ошибках (848), (1079) NEXTVAL (921) Norton Utilities несовместимы с Data Links File System (898) NUMA-Q нет поддержки Query Enabler и Tracker (1282) O ODBC направления выборки (1116) указатели с возможностью прокрутки, доступ (1108) Open Client, источники хранилища других типов (не DB2) и (1091) OS/2 уровень JDK для сообщений (1095) установка Центра управления (1063) P PREVVAL (920) Q Query Enabler не поддерживается в HP-UX и NUMA-Q (1280) Query Patroller потеря привилегий пользователей после перенастройки (1278) Query Patroller Tracker не поддерживается в NUMA-Q (1279) Quick Tour (1253) R Red Flag Linux версия для упрощенного китайского (833) S SIGTTIN (970) SNA SPM проверка запуска после перезагрузки системы (1274) softmax (1002) Solaris отсутствие поддержки версий до UltraSparc (827) уровень исправлений для V2.6 (825) SQL, составной (1122) stdin (971) Sun Cluster 2.2 предварительные требования DB2 Connect (891) Sun Solaris и HP поддержка резервного копирования и восстановления (964) Sybase несовместимость с ICM в Windows (841) Sybase Open Client (872) U Unicode база данных и программы (1228) в программах ODBC (1250) изменения в документации (1230) функции в (1247) V Veritas высокая доступность в Solaris (892) VI настройка для работы с DB2 (972) W Windows несовместимость между Sybase и ICM (842) Windows 2000 перенастройка (851) поддержка протокола IPXX/SPX (855) рекомендуемые браузеры Web (845) А авторизация предоставление привилегии на создание последовательности (1207) привилегия на создание последовательности для всех пользователей (1208) анализатор репликации (1039) архивирование журналов по требованию (958) архивирование и восстановление программа обработчика пользователя (968) аутентификация доменом при помощи DB2DOMAINLIST (1264) Б блокировка следующего ключа (1050) блокировка, оптимистичная (1119) браузеры Web рекомендации для Windows 2000 (843) В возврат значения столбца идентификации функция IDENTITY_VAL_LOCAL (1155) возможности доступности (824) восстановление взаимодействие с менеджером связей данных DB2 (967) инкрементное (951), (952) ошибки столбцов DATALINK (1268) параллельное (954) восстановление после аварии при помощи инструмента db2inidb (945) вызов последовательности (1137) выражение операция конкатенации (1240) строка (1241) выражение NEXTVAL (1139) выражение PREVVAL (1138) выражения NEXTVAL (919) PREVVAL (918) последовательности (1136) высокая доступность (944) высокая доступность в Solaris (893) Д двойная регистрация (963) деинсталляция DB2 DFS Client Enabler (1261) дешифрование информации функция DECRYPT (1143) динамические составные операторы (976) динамический составной оператор (1189) доступ удаленного клиента конфигурирование Communication Server для NT (1269) доступность (1276) Ж журнал создание зеркальной копии (961) журналы архивирование по требованию (960) журналы - архивирование по требованию (959) З запуск DB2 использование db2start в Windows 95, 98 и ME (1047) значения национальных версий в программах, использующих CLI (908) И изоляция уровня операторов (974) имена схем предельное число символов (895) имена файлов данных трассировки компонентов (1088) именованные конвейеры при резервном копировании (956) индексы ключи большого размера (977) обращение к нескольким (982) инкрементное принятие с замещением (1087) инкрементное резервное копирование и восстановление (949) инструмент db2inidb (942) интерфейс CLI значения кодовых страниц (910) источники данных Microsoft SQL Server библиотека MERANT (878) драйвер ODBC (877) имя DSN (883) кодовые страницы (885) компоновка с DB2 (880) оболочки MERANT (882) переменные среды (879) трассировки ODBC (884) улучшение производительности (881) источники данных Oracle оболочка Linux (869) оболочка Solaris (868) переменные среды (870) источники данных Sybase (871) кодовые страницы (876) компоновка с DB2 (874) переменные среды (873) улучшение производительности (875) источники других типов (не DB2), запись примера для Sybase (1092) источники хранилища других типов (не DB2), AIX (1089) источники хранилища других типов (не DB2), операционная среда Solaris (1090) К клиенты загрузка (850) трехуровневая среда (1106) клиенты Unicode ограничения перемещения данных (1252) клоны баз данных создание (947) ключи индексов большие (978) ключи разделения изменение (886) кодовые страницы в программах, использующих CLI (909) для различных национальных версий (903) языки стран Балтии (907) команда db2iupdt, запуск после обновления DB2 (859) команда iwh2exp2 новая опция (1286) конкатенация операция (1242) контейнеры добавление к табличному пространству SMS (926) контейнеры DMS параллельное создание и расширение (914) М мастер по созданию баз данных задание размера экстента (1081) мастер поддержки MQSeries (1083) мастер поддержки OLE DB (1085) мастера по созданию баз данных (1082) поддержки MQSeries (1084) поддержки OLE DB (1086) Менеджер каталогов данных на иврите (1272) утилита (1093) методы Java в операторах CREATE PROCEDURE или CREATE FUNCTION (1097) многораздельные базы данных ошибки при добавлении узлов (828) монитор производительности (916) Н назначение строк столбцам, правила для (1235) назначения строки, основные правила для (1233) национальная версия для японского и упрощенного китайского в Linux (835) совместимость между сервером администратора и экземпляром (905), (1275) национальные версии национальные языковые версии (902) упрощенный китайский для Red Flag Linux (832) неоднозначный указатель (1202) неработоспособные триггеры подробное описание (1198) О обращение к нескольким индексам (983) ожидания блокировок (1049) окна памяти в HP-UX 11 (1257) операнд строка (1244) оператор ALTER SEQUENCE подробное описание (1186) оператор CREATE PROCEDURE динамический составной оператор (1188) оператор FOR (1218) оператор RETURN (1221) оператор SIGNAL (1224) оператор процедуры SQL (1217) оператор CREATE SEQUENCE подробное описание (1195) оператор FOR (1219) оператор GRANT (привилегии для последовательности) подробное описание (1204) оператор RETURN (1222) оператор SET CONSTRAINTS заменен на SET INTEGRITY (900) оператор SET ENCRYPTION PASSWORD подробное описание (1211) Оператор SET ENCRYPTION PASSWORD (941) оператор SET INTEGRITY заменяет SET CONSTRAINTS (901) оператор SET переменная подробное описание (1213) оператор SIGNAL (1225) операторы SQL ALTER SEQUENCE (1187) CREATE SEQUENCE (1196) GRANT (привилегии для последовательности) (1205) SET ENCRYPTION PASSWORD (1212) SET переменная (1214) операторы SQL триггеров оператор SET переменная (1215) операционная система Solaris 64-битная конфигурация (1051) ограничения (1052) операционная среда Solaris поиск электронной информации (847) отделение зеркальной копии оперативное (946) отделенная зеркальная копия как резервная база данных (948) ошибка "доступ к файлу запрещен" (1064) ошибка "неверный ярлык" (1061) П параллельное восстановление (953) параметр конфигурации MIN_DEC_DIV_3 (994) параметры конфигурации app_ctl_heap_sz (995) maxappls (999) maxlocks (992) mon_heap_sz (997) softmax (1001) переменная реестра DB2_AWE (987) переменная реестра DB2CODEPAGE в программах, использующих CLI (911) переменные SQL (1192) переменные реестра DB2_AWE (986) DB2DOMAINLIST (1263) для поддержки API служб резервного копирования (1287) новые и измененные (1003) перемещение данных ограничивается клиентами Unicode (1251) перенастройка в Windows 2000 (852) запуск db2iupdt для обновления экземпляров (860) ошибки в ходе (831) проблемы с производными таблицами (853) поддержка NLV Unicode (1229) поддержка национальных языков (912) поддержка протокола IPX/SPX в Windows 2000 (856) поддержка языков с двумя направлениями письма с Центром управления в Windows NT (1060) подпрограммы процедуры (1184) поиск search (1256) поиск электронной информации в операционной среде Solaris (846) порог кучи сортировки (990) последовательности (923) вызов (1133) выражение NEXTVAL (1135) выражение PREVVAL (1134) изменение (928) отбрасывание (929) привилегии (933) создание (917) последовательности, описание (1096) правила именования (897) предельное число символов (894) правила преобразования для операций, комбинирующих строки (1237) для сравнения строк (1239) предварительные требования для установки для UDB EE и CEE в Linux for OS/390 (862) преобразование символов правила для операций, комбинирующих строки (1236) правила при сравнении строк (1238) преобразования ADT (1101) привилегии USAGE (934) привилегия USAGE (935) прикладные программы Unicode ODBC (1249) пример содержания, просмотр (1078) программы Capture и Apply в AS/400 (1041) запуск из прикладных программ (1045) сообщения об ошибках (1044) программы предварительной выборки при параллельном создании и расширении контейнеров DMS (913) производные таблицы недоступны после перенастройки (854) производные таблицы каталога SEQUENCES (1227) процедура SQL динамический составной оператор (1190) оператор DECLARE (1194) оператор FOR (1220) оператор RETURN (1223) оператор SIGNAL (1226) переменные (1193) процессы, остановка перед установкой (858) пулы буферов AWE (984) Р размер кучи сортировки (989) размер экстента задание в мастере по созданию баз данных (1080) распределенные базы данных конфигурирование изменения (888) резервное копирование автономное из отделенной зеркальной копии (957) в именованные конвейеры (955) инкрементное (950) результаты запросов, просмотр (1077) рекомендация по заданию dl_expint (993) репликация DATALINK (1034) диагностика ошибок (1038) для серверов других типов (не IBM) (1031) ограничения на имена таблиц и столбцов (1033) планирование (1036) предварительные условия для повсеместного изменения (1037) сценарии (1032) реплицируемые таблицы сводок (887), (981) С сателлиты DB2 Personal Edition (1008) DB2 Workgroup Edition (1009) интерактивная установка (1023) особенности установки (1019) установка при помощи файла ответов (1020) связывание утилит баз данных при помощи клиента времени выполнения (1098) сервер SNA доступ к UDB из прикладных программ хоста или AS/400 (1273) сервер управления DB2 Версия 6, обновление (1026) минимальные требования (1015) установка при помощи файла ответов (1016) символьная строка назначение, обзор (1232) системы объединения оболочки (863) ограничения (865) псевдонимы (864) системы объединения, ограничения (1270) скалярная функция DAYOFWEEK_ISO (1131) скалярная функция WEEK_ISO (1132) скалярные функции DAYOFWEEK_ISO (1129) WEEK_ISO (1130) соединение для проверки многоузлового изменения несовместимость версий экземпляров (1066) создание зеркальной копии журналы (962) сообщения программ Capture и Apply (1043) сообщения об ошибках SQL10012N (1073) доступ к файлу запрещен (1065) неверный ярлык (1062) при выполнении триггеров (1200) при добавлении узлов к многораздельным базам данных (829) при перенастройке (830) файлы связывания не найдены (1254) составной SQL, использование (1121) Составной оператор (динамический) переменные (1191) составные операторы динамические (975) список блокировок параметр конфигурации maxlocks (991) среда сателлитов интерактивная установка сателлита (1024) особенности установки (1018) предварительные требования (1012) сателлит DB2 Personal Edition (1010) сателлит DB2 Workgroup Edition (1011) управление при помощи Центра управления сателлитами Версии 6 (1029) установка сателлита при помощи файла ответов (1021) средства GUI ошибки связывания (1255) статистика подэлементов (980) статистика системного каталога сбор статистики распределения (979) статическое профилирование JDBC/ODBC/CLI, ограничение (1099) статическое профилирование, в программах JDBC/ODBC/CLI (1100) столбец назначения строк, основные правила для (1234) столбец идентификации изменение (927) столбцы идентификации (IDENTITY) (922) строка выражение (1243) операнд (1245) структуры таблиц (1042) Т табличные пространства перевод в состояние ONLINE (931) табличные пространства DMS параллельное создание и изменение размеров (932) табличные пространства SMS добавление контейнеров (925) типы данных расширение в базе данных Unicode (1231) триггеры неработоспособные (1197) сообщения об ошибках (1199) тупиковые ситуации (1048) У указатели атрибуты, по умолчанию (1110) одновременность (1114) одновременность значений (1118) с возможностью изменения (1113) с возможностью прокрутки (1115) OS/390 (1102) на стороне сервера (1103) статический (1104) управляемый (1105) устранение неисправностей программ (1120) тип (1111) управляемый изменение (1117) чувствительность (1112) упрощенный китайский параметры национальной версии в Linux (838) уровни изоляции в операторе DELETE (1203) в операторе INSERT (1209) в операторе SELECT (1185) в операторе SELECT INTO (1210) в операторе UPDATE (1216) уровень операторов (973) уровни исправлений в Solaris Версии 2.6 (826) условие SWITCH ONLINE (930) установка зависание при использовании съемного диска (834) остановка процессов DB2 во время (857) учетная запись, необходимая в Windows (1277) установка при помощи файла ответов ключевые слова для сателлитов (1022) ключевые слова сервера управления DB2 (1017) утилита DB2MSCS, перезагрузка компьютера для задания PATH (889) Ф файл конфигурации утилиты ограничения ресурсов (988) функции DECRYPT (939) ENCRYPT (938) GETHINT (940) в базе данных Unicode (1246) процедуры (1183) скалярная DECRYPT (1142) ENCRYPT (1146) GETHINT (1150) IDENTITY_VAL_LOCAL (1154) MQPUBLISH (1156) MQREAD (1159) MQRECEIVE (1162) MQSEND (1165) MQSUBSCRIBE (1168) MQUNSUBSCRIBE (1171) REC2XML (1176) табличная MQREADALL (1177) MQRECEIVEALL (1180) функции CLI SQLBindFileToParam (1126) SQLNextResult (1128) функции MQ (1054) Функции MQ (1056) функция SQLNextResult (1127) функция CLI SQLBindFileToParam, поправка (1125) функция DECRYPT значения и аргументы (1141) подробное описание (1140) функция ENCRYPT значения и аргументы (1145) подробное описание (1144) функция GETHINT значения и аргументы (1149) подробное описание (1148) функция IDENTITY_VAL_LOCAL значения и аргументы (1153) подробное описание (1152) функция MQREAD значения и аргументы (1161) подробное описание (1160) функция MQREADALL значения и аргументы (1179) подробное описание (1178) функция MQRECEIVE значения и аргументы (1164) подробное описание (1163) функция MQRECEIVEALL значения и аргументы (1182) подробное описание (1181) функция MQSEND значения и аргументы (1167) подробное описание (1166) функция MQSUBSCRIBE значения и аргументы (1170) подробное описание (1169) функция MQUNSUBSCRIBE значения и аргументы (1173) подробное описание (1172) функция REC2XML значения и аргументы (1175) подробное описание (1174) функция приостановленного ввода-вывода поддержка непрерывной доступности (943) Х хранимые процедуры в Центре хранилищ данных (1284) хранимые процедуры CLI автоматическое связывание (1124) ограничения (1123) Ц центр оповещения (915) Центр управления Версия 6, использование для управления средой сателлитов (1027) записная книжка Параметры инструментов (1074) запуск переведенных версий (904) использование для управления базами данных VM и VSE (1058) исправление для OS/390 (1068) на платформе OS/390 (1067) ограничения на одновременный запуск апплетов (1075) ошибки при использовании Internet Explorer (839) поддержка двух направлений письма в Windows NT (1059) проблемы с Центром сценариев в Windows 95 (1076) проблемы со всплывающими справками в OS/2 (1071) устранение неисправностей (1069) устранение неисправностей на платформах UNIX (1070) Центр управления сателлитами Версия 6, использование для управления средой сателлитов (1028) Центр хранилищ данных использование хранимых процедур (1283) синтаксис команды iwh2exp2 (1285) Ш шифрование данных (936) шифрование данных (937) шифрование информации функция ENCRYPT (1147) функция GETHINT (1151) шлюзы трехуровневая среда (1107) Я языки стран Балтии поддержка кодовых страниц (906) японский параметры национальной версии в Linux (837) 1 При запуске триггера, функции или хранимой процедуры инициируется новый уровень обработки. 2 Интерфейсы, выполняющие автоматическое принятие после каждого оператора, будут возвращать пустое значение при вызове этой функции в отдельном операторе (если не отключен режим автоматического принятия). 3 Это относится и к триггерам AFTER операции вставки типа FOR EACH ROW, и к таким триггерам типа FOR EACH STATEMENT. 4 Правила службы определяет набор опций качества обслуживания (QoS), используемых при этой операции с сообщениями. Эти опции включают приоритет сообщения и срок действия сообщения. Дальнейшие подробности смотрите в руководстве MQSeries Application Messaging Interface. 5 Символьная строка с подтипом BIT DATA не допускается. 6 Перед полной выборкой может идти общее-табличное-выражение 7 Перед полной выборкой может задаваться общее-табличное-выражение. 8 Перед вычислениями не выполняется преобразование предыдущего значения в исходный тип данных.