Использование опыта работы с Oracle 11g при изучении DB2 9.7 для Linux, UNIX и Windows

Если вы являетесь специалистом в области баз данных и хотите усовершенствовать свои навыки работы с DB2® 9, вероятнее всего, у вас уже есть прежний опыт работы с какой-либо другой реляционной базой данных. В данной статье, отредактированной с учетом последних версий DB2 и Oracle, рассказывается, как использовать имеющиеся знания Oracle 11g для быстрого приобретения навыков работы с IBM® DB2 9.7 для Linux®, UNIX® и Windows®.

Суита Гупта, специалист технической поддержки DB2, IBM

Суита Гупта (Suita Gupta) входит в состав группы поддержки информационного управления GTS (Information Management Support) IBM, Фарнборо. Она обеспечивает техническую поддержку DB2 для заказчиков в Великобритании и Ирландии. Ранее Суита работала техническим специалистом в инновационном центре IBM (Innovation Center IBM), Куала-Лумпур, помогая ISV-партнерам перейти на DB2 с других СУБД. Связаться с Суитой можно по электронной почте suitagup@uk.ibm.com.



24.03.2011 (Впервые опубликовано 17.07.2003)

Введение

IBM DB2 e-kit for Database Professionals

Узнайте, как можно легко пройти подготовку и сертификацию по DB2 для Linux, UNIX и Windows при помощи комплекта IBM DB2 e-kit for Database Professionals. Зарегистрируйтесь, чтобы расширить свои навыки или включить DB2 в поддерживаемые вами системы управления базами данных.

В предыдущей статье на developerWorks (EN) рассказывалось о том, как использовать опыт работы с MS SQL Server 2000 при изучении DB2. Если раньше вы работали с Oracle, а не с SQL Server, читайте дальше. В данной статье мы покажем, как опереться на имеющиеся знания Oracle 11g при изучении DB2 9.7.

DB2 9.7 имеет новые возможности для управления издержками и упрощения разработки приложений. Усовершенствования затрагивают такие области, как сжатие, pureXML, управляемость и производительность. Статья посвящена сравнению фундаментальных концепций DB2 и Oracle, а также новым функциональным возможностям DB2 9.7.

Примечание. В данной статье мы используем термин "Oracle" для обозначения Oracle 11g, а "DB2" - для обозначения DB2 9.7 для Linux, UNIX и Windows.


Описание системных структур

Для начала нужно понять архитектуру Oracle и сравнить ее с DB2. На рисунке 1 показана системная структура Oracle. Сравните ее с системной структурой DB2, показанной на рисунке 2. Обращайтесь к этим рисункам, чтобы лучше понимать прочитанное.

Рисунок 1. Системная структура Oracle для Linux, UNIX и Windows
Рисунок 1. Системная структура Oracle для Linux, UNIX и Windows
Рисунок 2. Системная структура DB2 для Linux, UNIX и Windows
Рисунок 2. Системная структура DB2 для Linux, UNIX для Windows

Экземпляры

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

В Oracle экземпляр создается неявно при создании базы данных с помощью команды CREATE DATABASE, поскольку между базами данных и экземплярами существует взаимно однозначное соответствие. Альтернативным способом создания экземпляра Oracle на вашей машине может быть использование Database Configuration Assistant или утилиты ORADIM с параметром NEW, доступной в Oracle 9i. Вы также должны предоставить определенную информацию, включая системный идентификатор (SID) или имя сервиса, пароль экземпляра, максимальное количество пользователей, режим запуска и т.д. Аналогично, чтобы удалить экземпляр, можно использовать утилиту ORADIM с параметром DELETE. Необходимо предоставить либо SID, либо имя сервиса. При новой установке Oracle экземпляр по умолчанию не создается, если только в процессе установки вы не создаете новую базу данных.

В DB2 после установки продукта на платформе Windows по умолчанию создается экземпляр с именем "DB2". В Linux и UNIX экземпляр по умолчанию имеет имя "db2inst1". Чтобы создать другой экземпляр на той же машине, нужно просто выполнить команду db2icrt <instance name>.

На рисунке 3 показан экземпляр под названием DB2_01, созданный при помощи команды db2icrt графического пользовательского интерфейса DB2 Control Center.

Рисунок 3. Графический пользовательский интерфейс DB2 Control Center, отображающий экземпляр DB2
Рисунок 3. Графический пользовательский интерфейс DB2 Control Center, отображающий экземпляр DB2

Чтобы обратиться к конкретному экземпляру DB2 из командной строки интерфейса, используйте переменную среды DB2INSTANCE. Эта переменная позволяет указать активный на данный момент экземпляр, к которому будут применяться все команды. Например, если переменной DB2INSTANCE присвоено значение PROD, а затем выполняется команда create database MYDB1, будет создана база данных, ассоциированная с экземпляром PROD. Чтобы создать эту базу данных в экземпляре DB2, необходимо сначала изменить значение переменной DB2INSTANCE на DB2. Это похоже на ORACLE_SID (системный идентификатор), который используется при переключении между экземплярами.

Еще одним простым способом определения рабочего экземпляра является использование графического пользовательского интерфейса DB2 Control Center (см. рисунок 3). Чтобы увидеть в интерфейсе строку нового экземпляра, нужно добавить новый экзмпляр в интерфейс, щелкнув правой кнопкой мыши на Instances и выбрав Add. Чтобы удалить экземпляр DB2, можно выполнить команду db2idrop <instance name>.

Таким образом, в Oracle для создания, изменения, запуска, останова и удаления экземпляра используется Database Configuration Assistant, а в DB2 для аналогичных целей используется графический пользовательский интерфейс Control Center. Между экземпляром Oracle и базой данных может существовать отношение только типа "один к одному", в то время как в DB2 дело обстоит иначе. В экземпляре DB2 могут существовать и одновременно использоваться несколько баз данных.


Базы данных

В Oracle базу данных можно создать либо вручную при помощи команды CREATE DATABASE, либо при помощи Database Configuration Assistant. Создание базы данных вручную требует выполнения последовательности действий до выполнения команды CREATE DATABASE, включая установку переменных операционной системы, подготовку файла параметров и создание файла паролей.

Для хранения метаданных и управления ими служит словарь данных (Data Dictionary), состоящий из базовых таблиц и соответствующих представлений. Базовые таблицы создаются автоматически при создании базы данных, а представления строятся путем выполнения сценариев catalog.sql и catproc.sql.

Вследствие этого база данных Oracle рассматривается как коллекция трех видов файлов:

  • Файлы данных: собственно данные, физическая реализация базы данных (напоминают контейнеры в DB2).
  • Файлы повторного выполнения: эквивалент журналов транзакций в DB2.
  • Управляющие файлы: информация для обслуживания и проверки целостности базы данных.

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

При создании экземпляра база данных по умолчанию не создается. Необходимо явно создать базу данных с помощью команды создания базы данных. Базу данных также можно создать, используя Control Center (см. рисунки 4 и 5).

Рисунок 4. Создание базы данных DB2 при помощи графического пользовательского интерфейса Control Center
Рисунок 4. Создание базы данных DB2 при помощи графического пользовательского интерфейса Control Center
Рисунок 5. Создание базы данных DB2 при помощи графического пользовательского интерфейса Control Center (продолжение)
Рисунок 5. Создание базы данных DB2 при помощи графического пользовательского интерфейса Control Center (продолжение)

На рисунке 5 также показано, что происходит после нажатия кнопки Show Command. Все экраны интерфейса DB2 Control Center позволяют увидеть выполняющийся в данный момент в фоновом режиме SQL-оператор или команду. Эти команды можно записать в сценарий для выполнения в будущем или скопировать и выполнить из процессора командной строки (Command Line Processor - CLP) или графического пользовательского интерфейса Command Center. Данные инструменты эквивалентны Oracle-утилитам SQL*Plus и iSQL*Plus соответственно.

Базу данных DB2 можно удалить при помощи команды DROP DATABASE или из интерфейса DB2 Control Center. В Oracle нет такой команды; база данных удаляется посредством удаления всех ассоциированных файлов данных.

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


Контейнеры, табличные пространства, буферные пулы и страницы

В Oracle данные физически хранятся в файлах, называемых файлами данных. Они похожи на контейнеры DB2, в которых физически хранятся данные. Каждая база данных Oracle содержит табличное пространство под названием SYSTEM, которое Oracle создает автоматически при создании базы данных. Другие табличные пространства для пользовательских, временных и индексных данных необходимо создать после создания базы данных и перед использованием назначить им пользователя.

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

При создании базы данных в DB2 командой CREATE DATABASE с параметрами по умолчанию автоматически создаются три табличных пространства по умолчанию. В таблице 1 описаны табличные пространства DB2 по умолчанию.

Таблица 1. Табличные пространства DB2, создаваемые по умолчанию при создании базы данных с параметрами по умолчанию
Имя табличного пространстваОписание
SYSCATSPACEТабличное пространство каталога, содержащее метаданные.
TEMPSPACE1Временное системное табличное пространство, используемое для выполнения операций, таких как соединения и сортировки. Имя этого табличного пространства может быть изменено.
USERSPACE1Это табличное пространство не является обязательным и может использоваться для хранения пользовательских таблиц, когда табличное пространство не указано явно в момент создания таблицы.

Т.к. базы данных в DB2 представляют собой автономные единицы, табличные пространства не являются общими для баз данных. Поскольку они известны только в пределах базы данных, две разные базы могут иметь табличные пространства с одинаковыми именами. Это можно видеть на рисунке 2, где база данных MYDB1 имеет табличное пространство MYTBLS, и база данных MYDB2 имеет табличное пространство с тем же именем.

Табличные пространства DB2 можно разделить на пространства, управляемые системой (SMS - system-managed spaces), и пространства, управляемые базой данных (DMS - database-managed spaces). Табличные пространства SMS управляются операционной системой и могут быть только каталогами. При необходимости они автоматически увеличиваются; SMS обеспечивают хорошую производительность при минимуме администрирования. Табличные пространства DMS управляются DB2 и могут быть файлами или неформатированными устройствами. Этот вид табличного пространства обеспечивает лучшую производительность, но требует некоторого администрирования. Например, нужно заранее указать объем дискового пространства, выделяемого для табличного пространства, потому что автоматическое увеличение не выполняется.

В модели хранения данных Oracle отсутствует концепция SMS, но ее файлы данных похожи на табличные пространства DMS в DB2. Таким образом, размер базы данных можно увеличить следующими способами: добавив файл данных в табличное пространство, увеличив размер файла данных, добавив новое табличное пространство.

В таблице 2 приведено соответствие баз данных и табличных пространств Oracle базам данных и табличным пространствам DB2.

Таблица 2. Соответствие баз данных и табличных пространств Oracle базам данных и табличным пространствам DB2
База данных или табличное пространство OracleБаза данных или табличное пространство DB2
Табличное пространство SYSTEM хранит информацию каталога (словарь данных).SYSCATSPACE (табличное пространство каталога); как и в Oracle, эта информация хранится только на уровне базы данных.
Словарь данных (содержит метаданные в виде таблиц и представлений) находится внутри табличного пространства SYSTEM.Таблицы системного каталога (определенные схемой SYSIBM) и системные представления (определенные схемой SYSCAT или SYSSTAT) находятся внутри табличного пространства SYSCATSPACE.
База данных SCOTT.База данных SAMPLE.
Табличное пространство TEMP.Временное системное табличное пространство (имя по умолчанию - tempspace1).
Табличное пространство UNDO.Отсутствует.
Табличное пространство USER.Табличное пространство пользователя. Обычно после создания базы данных по умолчанию создается USERSPACE1.

Как отмечалось выше, концепция буфера данных в Oracle эквивалентна буферному пулу в DB2, однако DB2 допускает существование нескольких буферных пулов. Число создаваемых буферных пулов заранее не определено, и они могут иметь любое имя.

Концепция блока в Oracle очень похожа на страницу в DB2. Таблица в DB2 может иметь размер 4 КБ, 8 КБ, 16 КБ или 32 КБ. Строка таблицы должна принадлежать только одной странице; ее нельзя распространить на другие страницы, как в Oracle.


Имена объектов

В Oracle имя объекта имеет следующий вид:

[имя_схемы.]имя_объекта[@база_данных]

В DB2 имена объектов тоже состоят из двух частей:

имя_схемы.имя_объекта

Как и в Oracle, имя схемы в DB2 используется для логического группирования объектов. Однако существует важное отличие: в DB2 имя схемы не привязывается к идентификатору пользователя. Любой пользователь с привилегией IMPLICIT_SCHEMA может создать объект, используя несуществующую схему. Предположим, например, что Peter имеет привилегию IMPLICIT_SCHEMA и выполняет следующую команду:

CREATE TABLE WORLD.TABLEA (lastname char(10))

В данном случае создается таблица WORLD.TABLEA, где WORLD - это только что созданная схема. Если Peter не указал схему явно, будет создана таблица PETER.TABLEA, потому что по умолчанию используется идентификатор подключения.

В DB2 пользователь всегда подключается к базе данных до выполнения команд базы данных; таким образом, в этой архитектуре нет необходимости включать в имена объектов имя базы данных.


Таблицы, представления и индексы

Таблицы, представления и индексы в Oracle и DB2 в основном идентичны.

В DB2 есть утилита Design Advisor, которую можно использовать для предоставления индексов конкретному запросу или рабочей нагрузке. Утилиту Design Advisor можно вызвать из DB2 Control Center или DB2 CLP при помощи команды db2advis. В DB2 индексы непосредственно связаны с определением таблицы. Например, при использовании табличных пространств DMS можно указать, в каком табличном пространстве находятся индексы:

CREATE TABLE mytable (col1 integer, col2 char(10)) in tbls1 index in tbls2

Этот пример показывает, что данные для таблицы будут храниться в табличном пространстве tbls1, в то время как страницы индексов будут храниться в табличном пространстве tbls2. Это отличается от синтаксиса Oracle, где оператор CREATE INDEX позволяет указать, в каком табличном пространстве будет находиться индекс.

Кроме того, в созданном в DB2 индексе нельзя изменить элементы определения индекса. Чтобы изменить индекс, нужно удалить его и создать заново.

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


Хранимые процедуры, триггеры и определяемые пользователем функции (UDF)

Хранимые процедуры в DB2 можно писать на любом языке, поддерживаемом прекомпиляторами DB2, включая Java, C, C++, REXX, Fortran и COBOL. Однако рекомендуется язык SQL Procedural Language (SQL PL), который довольно похож на язык PL/SQL в Oracle. Хранимые процедуры на языке SQL PL легки в разработке и имеют хорошую производительность. Разработка хранимых процедур в DB2 также возможна на SQLJ и Java с использованием JDBC-драйверов типа 2 и 4. Использование типа 3 прекращено.

При разработке триггеров и функций можно использовать встроенный SQL/PL, являющийся подмножеством языка SQL PL. Чтобы легко создавать, компоновать, отлаживать и развертывать в DB2 хранимые процедуры и определяемые пользователем функции, можно использовать инструмент Data Studio.


Конфигурационные файлы

Традиционно Oracle хранит все сеансы и системные параметры в текстовом файле, обычно с именем initSID.ora. Поскольку этот файл не является персистентным по своей природе, в Oracle, начиная с версии Oracle 9i, появился серверный файл параметров (Server Parameter File - SPFILE) - двоичный файл параметров, хранящийся на сервере. Он сохраняет свое состояние в период между остановом и запуском экземпляра. Файл initSID.ora все еще используется, однако только когда SPFILE не доступен. До появления файла SPFILE любые команды ALTER SYSTEM и ALTER SESSION, затрагивающие параметры, могли сохранять персистентность только в экземпляре или сеансе. При откате экземпляра базы данных администратору приходилось всякий раз вручную менять текстовый файл initSID.ora. Настройки сетевого доступа обычно хранятся в listener.ora для прослушивателя и в tnsnames.ora для клиента.

В DB2 конфигурационные параметры хранятся на уровне экземпляра (конфигурационный файл менеджера базы данных) и на уровне базы данных (конфигурационный файл базы данных). Большинство этих параметров может меняться динамически, т.е. нет никакой необходимости останавливать и перезапускать экземпляр или переустанавливать все соединения с базой данных, чтобы изменение значения параметра вступило в силу. Файлы, в которых DB2 хранит конфигурационную информацию, нельзя редактировать непосредственно.

При необходимости изменить из CLP конкретный параметр менеджера базы данных используйте команду UPDATE DBM CFG USING <имя параметра> <новое значение>.

При необходимости изменить из CLP конкретный параметр базы данных используйте команду UPDATE DB CFG FOR <имя базы данных> USING <имя параметра> <новое значение>.

Эти команды эквивалентны командам ALTER SYSTEM и ALTER SESSION в Oracle. Кроме того, просмотреть и изменить значения параметров можно с помощью Control Center; щелкнув правой кнопкой мыши на экземпляре и выбрав Configure Parameters, вы увидите окно, показанное на рисунке 6.

Рисунок 6. Конфигурационные параметры менеджера базы данных DB2 (уровень экземпляра)
Рисунок 6. Конфигурационные параметры менеджера базы данных DB2 (уровень экземпляра)

На уровне базы данных, щелкнув правой кнопкой мыши на базе данных и выбрав Configure Parameters, вы увидите окно, показанное на рисунке 7.

Рисунок 7. Конфигурационные параметры базы данных (уровень базы данных)
Рисунок 7. Конфигурационные параметры базы данных (уровень базы данных)

DB2 предоставляет много параметров для настройки системы. Однако если вы ищете простой способ настроить систему автоматически, используйте команду autoconfigure (или графический пользовательский интерфейс Configuration Advisor), которая присваивает конфигурационным параметрам менеджера базы данных и базы данных оптимальные значения на основе предоставленной вами информации. На рисунке 8 показан Configuration Advisor.

Рисунок 8. DB2 Configuration Advisor
Рисунок 8. DB2 Configuration Advisor

В дополнение к конфигурационным файлам в DB2 также используются переменные реестра DB2, обычно для платформенно-зависимых конфигураций. Обратите внимание, что переменные реестра DB2 не имеют никакого отношения к реестру Windows. Чтобы просмотреть или изменить эти переменные, используйте команду db2set.

Сведения о подключении (сетевом доступе) хранятся в системном каталоге баз данных, локальном каталоге баз данных и каталоге узлов. Это двоичные файлы, которые можно изменить при помощи команд CATALOG и UNCATALOG.


Архитектура памяти, фоновые процессы и потоки

Далее мы рассмотрим архитектуру памяти, фоновые процессы и потоки и сравним их использование в Oracle и DB2.

Рисунок 9. Архитектура памяти и фоновые процессы Oracle
Рисунок 9. Архитектура памяти и фоновые процессы Oracle

Системная глобальная область (System Global Area - SGA) Oracle - это группа совместно используемых областей памяти, где хранится информация для экземпляра. Например, это может быть кэш выражений, буферы журналов повторного выполнения и кэш-буфер данных. Программная глобальная область (Program Global Area- PGA) и глобальная область пользователя (User Global Area - UGA) - это совместно используемые области памяти, содержащие данные и управляющую информацию для серверных процессов и пользовательских сеансов.

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

Рисунок 10. Архитектура памяти, фоновые процессы и потоки DB2
Рисунок 10. Архитектура памяти, фоновые процессы и потоки DB2

Как в DB2, так и в Oracle используются совместно используемые области памяти, но в DB2 архитектура памяти реализована несколько иначе, чем в Oracle. Поскольку экземпляр DB2 может содержать более одной базы данных, существует два уровня настройки. Как говорилось в предыдущем разделе, настройка на уровне экземпляра выполняется в файле DBM CFG, в то время как настройка на уровне базы данных выполняется в файле DB CFG. Для настройки использования памяти можно корректировать конфигурационные параметры на обоих уровнях. В следующем разделе представлена более подробная информация о структурах памяти DB2 и различных фоновых процессах.

В отличие от Oracle, где память для экземпляра и базы данных выделяется во время запуска, в DB2 память выделяется на разных уровнях. Главным образом благодаря этому экземпляр DB2 может содержать несколько баз данных. В DB2 есть три основные структуры памяти:

  • Совместно используемая память экземпляра. Этим термином обозначается глобальная совместно используемая память менеджера базы данных, которая выделяется при запуске экземпляра при помощи команды db2start и освобождается в момент его останова при помощи команды db2stop.
  • Совместно используемая память базы данных. Этим термином обозначается глобальная память базы данных, которая выделяется при активации базы данных или при первом подключении к ней. Выделенная память включает буферные пулы, пул памяти locklist, кучу базы данных, сервисную кучу, кэш пакетов и кэш каталога.
  • Совместно используемая память приложений. Этим термином обозначается память, выделяемая при подключении приложения к базе данных и используемая агентами, которые выполняют запросы подключенных клиентов. Память выделяется каждому подключенному к базе данных приложению, поэтому точная настройка параметров, затрагивающих совместно используемую память приложений, приобретает решающее значение.

Сервер баз данных DB2 выполняет много разных задач, например, обработку запросов приложений баз данных или контроль записи журналов на диск. Каждую задачу выполняет отдельная управляемая единица ядра (Engine Dispatchable Unit - EDU). В DB2 для Windows, Linux и UNIX активность сервера осуществляется в виде потоков. Потоки и процессы DB2 работают на следующих уровнях (этот список не является исчерпывающим, но мы постарались выделить наиболее важные потоки и процессы):

  • Уровень экземпляра - процессы и потоки, которые инициализируются при запуске экземпляра:
    1. DB2 Daemon Spawner (db2gds) - глобальный демон-процессор, запускаемый для каждого экземпляра (только в UNIX).
    2. DB2 System Controller (db2sysc) - главный процесс DB2.
    3. DB2 Watchdog (db2wdog) - родительский процесс для всех других процессов.
    4. DB2 Format Log (db2fmtlg) - подобно процессу ARCn в Oracle, размещает журнальные файлы по адресу журнала.
    5. Autonomic computing daemon (db2acd) - содержит монитор состояния, утилиты автоматизированного обслуживания и планировщик административных задач. Этот процесс ранее назывался db2hmon.
  • Уровень базы данных - процессы, которые инициализируются при соединении с базой данных:
    1. DB2 Log Reader (db2loggr) - похож на подмножество процесса PMON в Oracle. Этот процесс читает журнальные файлы во время отката, восстановления с перезапуском и отмены отката.
    2. DB2 Log Writer (db2loggw) - сбрасывает журнал из буфера журнала в журнальные файлы транзакций на диске. Эквивалентен процессу LGWR в Oracle.
    3. DB2 Page Cleaner (db2pclnr) - эквивалентен процессу DBWR в Oracle; очищает буферный пул до загрузки в него страниц с диска.
    4. DB2 Prefetcher (db2pfchr) - извлекает страницы с диска и загружает их в буферный пул до его использования.
    5. DB2 Deadlock Detector (db2dlock) - процесс определения взаимной блокировки.
    6. DB2 Self-Tuning Memory Manager (db2stmm) - автономная самонастраивающаяся функция управления памятью.
  • Уровень приложения - каждое соединение приложения с базой данных имеет свои собственные ассоциированные с ним фоновые процессы уровня приложения:
    1. DB2 Communication Manager (db2ipccm) - процесс межпроцессного взаимодействия для каждого локально подключившегося клиента.
    2. DB2 TCP Manager (db2tcpcm) - процесс менеджера TCP-взаимодействия для удаленных клиентов, подключившихся по протоколу TCP/IP.
    3. DB2 Coordinating Agent (db2agent) - поток, который обрабатывает все запросы приложения.
    4. DB2 Pooled Gateway Agent (db2agntgp и db2agntgp) - агент, загруженный в пул удаленной и локальной базы данных соответственно.

Исчерпывающая информация о процессах DB2 приведена в статье Все, что вы хотели бы знать о процессах DB2.


Механизмы блокировки

Блокировка в Oracle может выполняться либо вручную, либо автоматически. Диспетчер блокировок Oracle по умолчанию осуществляет неявную блокировку данных таблицы на уровне строки, которую можно переопределить на блокировку на уровне транзакции или сеанса, используя следующие SQL-операторы:
1. SET TRANSACTION ISOLATION LEVEL
2. LOCK TABLE
3. SELECT FOR UPDATE

В Oracle поддерживается механизм обеспечения согласованности данных с помощью многоверсионности (Multi-Version Read Consistency - MVRC), реализованный посредством данных отката в сегментах отката.

В DB2 реализованы уровни изоляции стандарта ANSI: Uncommitted Read (многократное чтение), Cursor stability (стабильность на уровне указателя), Read stability (стабильность чтения) и Repeatable Read (чтение непринятого). Пока не используется уровень изоляции Uncommitted Read, пользователь будет видеть только зафиксированные данные. Блокировка строк запрашивается неявно в соответствии с уровнем изоляции. Блокируемыми являются такие объекты базы данных как табличные пространства, таблицы и строки, однако только таблицы и табличные пространства можно заблокировать явно. Вместо используемой по умолчанию блокировки строк можно выполнить блокировку таблицы при помощи команды LOCK TABLE.

В отличие от Oracle, в DB2 блокировки хранятся в памяти, а не в страницах данных. Для настройки доступной для блокировок памяти используется конфигурационный параметр базы данных LOCKLIST, а конфигурационный параметр MAXLOCKS определяет максимальный размер памяти для блокировок конкретного приложения.

В версии DB2 9.7 расширен отчет о событии блокировки. Новый монитор события блокировки собирает информацию о таймаутах блокировок, взаимных блокировках и ожиданиях блокировок, превышающих указанное время. Эти данные можно получить либо из xml-документа, либо из таблиц базы данных, а также с помощью java-инструмента (db2evmonfmt) для чтения xml- или текстового документа.

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


Безопасность

Oracle и DB2 являются защищенными базами данных и имеют базовые и расширенные функции обеспечения безопасности. В Oracle есть 4 способа аутентификации пользователя:

  • На уровне базы данных. Идентификацию и аутентификацию пользователей выполняет база данных.
  • Внешняя аутентификация. Аутентификацию выполняет операционная система или сетевой сервис.
  • Глобальная аутентификация и авторизация. Выполняется глобальная аутентификация пользователя по SSL.
  • Аутентификация и авторизация через посредника. Аутентификацию выполняет сервер-посредник.

Способ аутентификации указывается с помощью команды CREATE USER при создании пользователя. Информация о пользователях содержится в нескольких представлениях словаря данных.

В DB2 пользователи существуют не в базе данных, а управляются операционной системой. Учетная информация для входа в базу данных не хранится в таблицах базы. Потенциально любой пользователь операционной системы может получить доступ к DB2, но только если он обладает полномочиями или привилегиями DB2. Полномочия и привилегии можно легко предоставить или отменить при помощи графического пользовательского интерфейса Control Center. Сначала нужно добавить пользователя или группу в Control Center от имени пользователя или группы пользователей операционной системы.

Кроме того, в DB2 отсутствуют роли; вместо них в DB2 используются полномочия, похожие на роли в базе данных Oracle, посредством которых определенным группам или пользователям предоставляются привилегии. В DB2 существуют следующие полномочия: SYSADM, SYSCTRL, SYSMAINT, SYSMON, SECADM, DBADM и LOAD.

Полномочия SYSADM, SYSCTRL и SYSMAINT нельзя предоставить при помощи SQL-оператора GRANT. Эти специальные полномочия можно предоставить только путем изменения особых конфигурационных параметров менеджера базы данных.

В DB2 также используются привилегии, которые похожи на системные привилегии и привилегии объектов схемы в Oracle. Существуют привилегии базы данных (connect, createtab и т.д.) и привилегии объектов базы данных (schema, table, view и т.д.). На рисунке 11 показана относящаяся к безопасности DB2 информация, имеющаяся в графическом пользовательском интерфейсе Control Center. Большинство вкладок окна Change User соответствует привилегиям, поддерживаемым в DB2.

Рисунок 11. Безопасность DB2
Рисунок 11. Безопасность DB2

Аутентификация в DB2 не только предполагает шифрование имен пользователей и паролей, но и позволяет шифровать данные в процессе их передачи по сети между клиентами и сервером. Значение конфигурационного параметра AUTHENTICATION менеджера базы данных определяет, где будет проходить процесс аутентификации.

Ниже приведены разрешенные опции аутентификации в DB2:

  • SERVER_ENCRYPT - указывает, что аутентификация осуществляется на сервере. Идентификатор и пароль пользователя, указанные при соединении, шифруются и отправляются на сервер, где сравниваются с идентификатором и паролем на стороне сервера. Если сравнение оказалось успешным, пользователю предоставляется доступ к базе данных.
  • KRB_SERVER_ENCRYPT - указывает, что сервер поддерживает аутентификацию KERBEROS или схемы зашифрованной серверной аутентификации.
  • DATA_ENCRYPT - указывает, что сервер поддерживает серверную аутентификацию, а данные передаются по сети между клиентом и сервером в зашифрованном виде.
  • DATA_ENCRYPT_CMP - указывает, что сервер поддерживает схемы зашифрованной серверной аутентификации и шифрование пользовательских данных. Этот вид аутентификации используется для совместимости с продуктами нижнего уровня, не поддерживающими аутентификацию DATA_ENCRYPT.
  • GSS_SERVER_ENCRYPT - указывает, что сервер поддерживает аутентификацию при помощи плагина, основанного на интерфейсе GSS-API, или схемы зашифрованной серверной аутентификации.

Чтобы изменить параметр AUTHENTICATION экземпляра (например, на DATA_ENCRYPT), используйте следующую команду:

Листинг 1. Изменение параметра AUTHENTICATION экземпляра
UPDATE DBM CFG USING AUTHENTICATION DATA_ENCRYPT
db2stop
db2start

DB2 предлагает дополнительную защиту данных с помощью механизма управления доступом на основе меток (Label Based Access Control - LBAC). Функциональность LBAC обеспечивает большую степень детализацию на уровне управления доступом на чтение и запись к отдельным строкам и столбцам таблицы. В DB2 существует роль администратора безопасности (SECADM) для управления LBAC-объектами. Пользователи, пытающиеся получить доступ к объекту, должны иметь предоставляемые им метки безопасности. При совпадении доступ разрешается, иначе - запрещается.

Помимо привилегий и полномочий, существуют и другие аспекты безопасности базы данных. Вот краткое сравнение Oracle и DB2:

Аутентификация и авторизация пользователя

В Oracle используется зашифрованный пароль, сохраняемый в словаре при создании пользователя. В DB2 поддерживаются пароли для аутентификациии пользователей, под которыми подразумеваются пользователи операционной системы. И в Oracle, и в DB2 поддерживается протокол LDAP (Oracle Internet Directory и IBM Directory Server). И в Oracle, и в DB2 поддерживается единый вход (SSO).

Шифрование данных

Oracle поддерживает шифрование данных, при помощи которого можно зашифровать конфиденциальную информацию, например, номера кредитных карт и другие важные бизнес-данные. DB2 предоставляет следующие варианты шифрования данных в хранилище:

  • Шифрование и дешифрование данных в таблицах базы данных при помощи встроенных функций ENCRYPT, DECRYPT_BIN, DECRYPT_CHAR и GETHINT.
  • Шифрование основных данных операционной системы и резервных копий при помощи пакета IBM Database Encryption Expert.
  • Шифрование данных операционной системы и резервных копий при помощи шифрованной файловой системы (EFS) в случае использования DB2 Enterprise Server Edition на операционной системе AI и необходимости шифрования только на уровне файлов.

Сетевое шифрование

Сетевое шифрование в Oracle осуществляется при помощи Oracle Advanced Security. В Oracle используются отраслевые стандарты шифрования DES, 3DES и RC4. Для шифрования данных, передаваемых между клиентами и базами данных DB2, используется тип аутентификации DATA_ENCRYPT либо системная поддержка в DB2 протокола SSL.

Контрольная запись

Oracle позволяет выполнять контрольную запись для пользователей и объектов. Также для изучения и анализа подозрительных запросов можно использовать утилиту LogMiner. DB2 предоставляет похожие средства контроля. Для этих целей используется утилита db2audit.


Поддержка XML

В этом разделе сравнивается поддержка XML в Oracle и в DB2. Поставляемая с Oracle 9i версии 2 функция Oracle XML DB предоставляет возможность управления хранением, извлечением и схемой XML-данных, определяя таблицы и столбцы типа XMLTYPE, где данные хранятся в полях типа CLOB или разделенными (разложенными) на мелкие части в реляционные таблицы. Oracle 10g имеет улучшенное управление XML-документами; например, изменения в схеме можно воспроизвести динамически, отображая существующие данные без повторного импорта. В Oracle 11G появился третий вид XML-поддержки - двоичное представление XML (binary XML). Таким образом, на данный момент в Oracle есть следующие способы хранения XML-данных:

  • Неструктурированное хранение при помощи полей CLOB (также известно как бессхемное хранение).
  • Структурированное хранение, отображающее XML-данные в объектно-реляционные.
  • Двоичное хранение XML-данных.

Технология DB2 pureXML позволяет хранить XML-документы в естественном виде, т.е. во внутреннем древовидном формате. Она также позволяет использовать SQL с расширениями XML - Xquery и Xpath - для доступа к реляционным и XML-данным. Хранение XML-документов в естественном виде - это оптимальный подход; исследование IBM показывает, что он обеспечивает лучшую производительность при поиске и извлечении XML-документов, а также уменьшает количество кода при написании некоторых программ. В DB2 использование данных XML-типа возможно в DB2 Control Center, процессоре командной строки, IBM Data Studio и IBM Database Add-Ins for Microsoft Visual Studio.

При использовании в своей базе данных pureXML создавайте базу в кодировке UNICODE (например, используя кодовый набор UTF-8). Если перед созданием таблицы не создать базу данных в кодировке UNICODE, возникает следующая ошибка:

SQL1239N  XML features can only be used in a Unicode database with a single database 
partition.  SQLSTATE=42997

В DB2 реляционные данные хранятся так же, как и в предыдущих версиях. Однако XML-данные хранятся в иерархическом формате (в виде дерева в соответствии со спецификацией Xquery Data Model - XDM). Реляционные и XML-сервисы тесно интегрированы. Для хранения XML-документов нужно создать таблицу и указать столбец, в котором будет использоваться новый тип данных (XML), как показано в следующем примере:

Листинг 2. Создание таблицы DB2 с данными XML-типа
CREATE TABLE T
  (ID INT PRIMARY KEY NOT NULL, COMMENT VARCHAR(1000) NOT NULL, DOCUMENT XML) 
  in ttspace compress yes@

Поскольку XML-документы хранятся в пригодном для анализа иерархическом формате в соответствии со спецификацией XQuery Data Model (XDM), необходимость в преобразовании или отображении отсутствует; XML-документы хранятся и обрабатываются в одном и том же формате. Это обеспечивает более высокую производительность.

Утилиты резервного копирования, восстановления и импорта применяются к таблицам с XML-столбцами так же, как и к любым другим таблицам. XML-данные можно поместить в XML-столбец либо при помощи оператора INSERT, либо при помощи утилиты DB2 IMPORT. До импорта XML-документов из сторонних источников желательно проверить эти документы на соответствие предопределенной XML-схеме. Чтобы зарегистрировать XML-схему, администраторы баз данных должны выполнить команду REGISTER XML SCHEMA и завершить процесс регистрации командой COMPLETE XML SCHEMA. В DB2 также поддерживается создание индексов по подмножеству XML-документа или по всему документу. При создании индекса для конкретного элемента или атрибута необходимо указать XPATH.

На данный момент в DB2 есть 4 способа доступа к реляционным и XML-данным:

  • Plain SQL (XQuery не включен).
  • SQL/XML (XQuery встроен в SQL).
  • XQuery как автономный язык (SQL не включен).
  • XQuery со встроенным SQL.

В DB2 9.7 были реализованы дополнительные XML-функции, например, поддержка XML-типа в определяемых пользователем функциях. Важным усовершенствованием в DB2 9.7 является возможность использования утилиты LOAD для загрузки XML-данных. Кроме того, индексы по XML-данным секционированных таблиц в DB2 V9.7 и более ранних версиях были несекционированными. Начиная с DB2 Version 9.7 Fix Pack 1 по XML-данным секционированных таблиц можно создавать как секционированные, так и несекционированные индексы.

На developerWorks можно найти другие статьи, в которых возможности IBM pureXML обсуждаются более глубоко, например, Запрос XML-данных в DB2 при помощи XQuery (EN) и Запрос XML-данных в DB2 при помощи SQL (EN).


Секционирование

Oracle Partitioning предлагает несколько стратегий секционирования, управляющих размещением данных в разделах. Основные стратегии секционирования - по диапазонам значений (range partitioning), по спискам значений (list partitioning) и при помощи значений хэш-функций (hash partitioning).

Секционирование таблиц в DB2 (range-секционирование) похоже на секционирование в Oracle. Оно позволяет разбить одиночную логическую таблицу на несколько физических объектов-хранилищ в одном или нескольких табличных пространствах. Каждый объект соответствует "разделу" и дает возможность хранить в каждом табличном пространстве диапазон данных, получить доступ к которым очень легко.

В DB2 существует несколько способов секционирования данных, которые можно одновременно применять к одним и тем же данным. Во избежание путаницы кратко объясним различные способы секционирования:

  • DATABASE PARTITIONING - распределение данных по хэш-ключу логических узлов базы данных (DPF).
  • RANGE/TABLE PARTITIONING (доступно в DB2 9) - разделение данных по диапазону ключей на несколько физических объектов в разделе логической базы данных.
  • MULTI DIMENSIONAL CLUSTERING (MDC) - объединение данных в таблицу (или диапазон таблицы) по нескольким значениям ключей.

В версии 9.7 допускаются индексы по строкам данных во всех разделах секционированной таблицы данных (известны как несекционированные индексы), а также индекс, секционированный таким образом, что каждому разделу данных соответствует раздел индекса. Для секционированных таблиц допускаются как несекционированные, так и секционированные индексы.

В приведенном ниже примере создается таблица customer, в которой строки с l_shipdate >= '01/01/2006' и l_shipdate <= '03/31/2006' хранятся в табличном пространстве ts1, строки с l_shipdate >= '04/01/2006' и l_shipdate <= '06/30/2006' хранятся в табличном пространстве ts2 и т.д. Исчерпывающее объяснение приведено в статье developerWorks Секционирование таблиц в DB2 9 (EN).

Листинг 3. Range-секционирование таблицы
CREATE TABLE customer (l_shipdate, l_name CHAR(30)) 
IN ts1, ts2, ts3, ts4, ts5 
PARTITION BY RANGE(l_shipdate) 
   (STARTING FROM ('01/01/2006') 
    ENDING AT ('12/31/2006') 
    EVERY (3 MONTHS))

Сравнение терминологии секционирования Oracle и DB2 приведено в таблице 1 статьи Миграция с Oracle или Sybase на DB2 за несколько недель.


Сжатие

Oracle предоставляет три функции сжатия: на уровне индекса, на уровне таблицы и на уровне строки. Неправильное использование этих функций может неблагоприятно повлиять на производительность.

Oracle предоставляет сжатие на уровне индекса начиная с версии 8i. Можно сжимать bitmap-индексы, btree-индексы и индексно-организованные таблицы. Сжатие индекса выполняется просто; пример создания индекса с использованием функции сжатия приведен в листинге 4:

Листинг 4. Создание индекса с использованием сжатия
CREATE INDEX ord_customer_ix_demo 
ON orders (customer_id, sales_rep_id)
COMPRESS 1;

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

Листинг 5. Изменение индекса с применением сжатия
alter index ord_customer_ix_demo rebuild compress

На данный момент в Oracle нет никакого автоматизированного советчика по определению индексов, требующих сжатия. Эффект от сжатия индексов возможен при надлежащем планировании, осуществляемом опытными администраторами баз данных, хорошо разбирающимися в Oracle CBO.

В свою очередь, сжатие таблиц появилось в Oracle 9i версии 2. Его можно использовать для сжатия таблиц полностью, разделов таблиц и реализованных представлений. Сжатие можно применять как ко всем разделам, так и к некоторым. Хотя сжатие таблиц применимо для несекционированных таблиц, его использование для несекционированных таблиц при рабочих нагрузках OLTP нежелательно, т.к. может пострадать производительность вставки и обновления. При сжатии таблицы в Oracle дубликаты значений в блоке базы данных удаляются, а информация, необходимая для восстановления исходных данных, сохраняется в этом же блоке.

В приведенном ниже примере показано создание секционированной таблицы с использованием сжатия.

Листинг 6. Создание таблицы с использованием сжатия
CREATE TABLE costs_demo (
   prod_id NUMBER(6), time_id DATE,
   unit_cost NUMBER(10,2), unit_price NUMBER(10,2))
PARTITION BY RANGE (time_id)
   (PARTITION costs_old
       VALUES LESS THAN (TO_DATE('01-JAN-2003', 'DD-MON-YYYY')) COMPRESS,
    PARTITION costs_q1_2003
       VALUES LESS THAN (TO_DATE('01-APR-2003', 'DD-MON-YYYY')),
    PARTITION costs_q2_2003
       VALUES LESS THAN (TO_DATE('01-JUN-2003', 'DD-MON-YYYY')),
    PARTITION costs_recent VALUES LESS THAN (MAXVALUE));

Чтобы применить сжатие к существующей таблице, используйте выражение alter table <имя таблицы> move compress. Однако сжатую таблицу нельзя редактировать или удалять в ней столбцы.

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

Сжатие строк в DB2, в отличие от сжатия ключей в Oracle, не требует задания ключей.

Для отдельной таблицы сжатие выполняется при помощи команд CREATE TABLE или ALTER TABLE. Например:

Листинг 7. Создание (изменение) таблицы с использованием COMPRESSION YES
CREATE TABLE Sales COMPRESS YES 
ALTER TABLE Sales COMPRESS YES

Чтобы добиться тех же результатов с помощью DB2 Control Center, во время определения столбца (второй шаг мастера создания таблиц) убедитесь, что в нижней части панели отмечен флажок Store table data in a compressed format (как показано на рисунке 12).

Рисунок 12. DB2 Control Center - создание таблицы с использованием сжатия
Рисунок 12. DB2 Control Center - создание таблицы с использованием сжатия

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

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

Кроме сжатия строк данных DB2 9.7 предлагает другие механизмы сжатия:

  • Сжатие значений NULL и значений по умолчанию (V8 GA) - сжатие значений NULL, строк нулевой длины в столбцах переменной длины и системных значений по умолчанию.
  • Многомерная кластеризация (V8 GA) - реализует сжатие индексов с помощью блочных индексов, в которых используется одна запись в индексе на тысячи записей.
  • Сжатие резервных копий базы данных (V8 FP4) - обуславливает меньший размер образов базы данных.
  • Замена XML-тегов.

Автономные функциональные возможности

В Oracle 11g появилось несколько новых усовершенствований настройки. В Oracle автоматизированы следующие области настройки:

  • Консультант по размеру журнальных файлов повторного выполнения (Redo Logfile Sizing Advisor) - рекомендует оптимальный размер журнальных файлов, чтобы избежать избыточных операций ввода/вывода, обусловленных частым копированием в контрольных точках.
  • Автоматическая настройка контрольных точек (Automatic Checkpoint Tuning) - теперь база данных Oracle может самостоятельно настраивать копирование в контрольных точках для достижения лучшего времени восстановления при незначительном влиянии на производительность. Больше нет необходимости настраивать параметры, связанные с контрольными точками.
  • Автоматическая настройка настройка совместно используемой памяти (Automatic Shared Memory Tuning) - автоматизирует настройку параметров (кэш-буфер, совместно используемый пул), относящихся к памяти системной глобальной области (SGA), посредством самонастраивающихся алгоритмов. Это упрощает конфигурацию базы данных, обеспечивает наиболее эффективное использование доступной памяти и повышает производительность.
  • Мониторинг восстановления и отката транзакций (Transaction Rollback and Recovery Monitoring) - позволяет оценить время, необходимое для отката транзакции. Также можно проследить за ходом восстановления транзакций и оценить среднюю скорость восстановления.
  • Настройка SQL-запросов - инструмент SQL Tuning Advisor автоматически настраивает ресурсозатратные SQL-выражения.
  • Automatic Storage Manager (ASM) - автоматический менеджер хранения данных упрощает управление связанными с Oracle файлами.

Oracle также предоставляет несколько советчиков, например, советчик по сегментации (segment advisor) и советчик по откату (undo advisor). Советчик по сегментации, основываясь на уровне фрагментации пространства внутри объекта, дает совет, нужно ли выполнять онлайн-операцию дефрагментации объекта. Кроме того, этот советчик предоставляет отчеты о тенденции роста сегментов в прошлом, что особенно полезно для планирования ресурсов.

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

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

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

DB2 9.7 предлагает функциональную возможность самонастройки памяти Self Tuning Memory Manager, которая упрощает задачу конфигурирования памяти, автоматически устанавливая значения некоторых конфигурационных параметров. При включении автоматическая настройка, выступающая в качестве диспетчера, определяет доступные ресурсы памяти и динамически распределяет их между потребителями памяти базы данных. Самонастройку памяти можно применять только для баз данных с одним разделом.

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

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

Автоматическое управление хранением данных

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

Автоматическое обслуживание

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

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

Инструменты

Мы рассмотрим инструменты из разных областей, таких как создание и обслуживание базы данных, сеть, административный графический пользовательский интерфейс, настройка производительности, перемещение и копирование/восстановление данных. На рисунке 13 показаны инструменты графического пользовательского интерфейса DB2 9.7.

Рисунок 13. Инструменты графического пользовательского интерфейса DB2 9.7
Рисунок 13. Инструменты графического пользовательского интерфейса DB2 9.7

Рассмотрим выполнение однотипных задач в Oracle и DB2 9.7.

Создание и обслуживание базы данных

В качестве графического пользовательского интерфейса для создания базы данных Oracle предоставляет инструмент Database Configuration Assistant (dbca). Для обслуживания базы данных Oracle предоставляет Oracle Enterprise Manager. Базы данных DB2 создаются и обслуживаются в DB2 Control Center.

Сеть

Для настройки сети Oracle предоставляет Network Configuration Assistant (netca). В качестве альтернативы для настройки именования служб, прослушивателя, профиля и серверов доменных имен Oracle можно использовать Oracle Network Manager. Для каталогизации узлов и баз данных в DB2 используется команда CATALOG. Каталогизацию также можно выполнить либо из командной строки DB2, либо при помощи графического пользовательского интерфейса Configuration Assistant.

Администрирование

Oracle Enterprise Manager предоставляет широкий спектр возможностей администрирования повседневных задач администраторов. DB2 Control Center предоставляет функциональность, похожую на Oracle Enterprise Manager. DDL- и DML-выражения можно выполнять как в DB2 Control Center, так и в процессоре командной строки DB2. Эта утилита похожа на SQLPLUS в Oracle. На рисунке 14 показан процессор командной строки DB2.

Рисунок 14. Процессор командной строки DB2
Рисунок 14. Процессор командной строки DB2

Кроме того, команды можно выполнять из интерфейса Command Center, показанного на рисунке 15.

Рисунок 15. Графический пользовательский интерфейс Command Center (графическая версия процессора командной строки DB2)
Рисунок 15. Графический пользовательский интерфейс Command Center (графическая версия процессора командной строки DB2)

Настройка производительности

Oracle Enterprise Manager поставляется с пакетами Change Management Pack, Tuning Pack и Diagnostic Pack. В DB2 для настройки производительности предоставляются инструменты графического пользовательского интерфейса, такие как Activity Monitor, Event Analyzer, Health Center, Indoubt Transaction Manager и Memory Visualizer.

Перемещение данных

Для загрузки данных в текстовом формате с разделителями Oracle предоставляет утилиту SQL Loader (sqlldr). Для выполнения импорта и экспорта с логической обработкой используются утилиты импорта (imp) и экспорта (exp). DB2 предоставляет аналогичные утилиты импорта, экспорта и загрузки. Для межплатформенного перемещения данных DB2 предоставляет утилиту db2move.

Резервное копирование и восстановление

Для горячего резервного копирования Oracle предоставляет в качестве опции продукт Recovery Manager. В DB2 резервное копирование баз данных можно выполнить при помощи команды backup или из DB2 Control Center.

Oracle 11g Enteprise Manager поставляется с новыми диаграммами обзора производительности. Расширенный HTML-интерфейс Oracle Enterprise Manager обеспечивает главную точку доступа к статистическим данным по производительности во всей базе данных и облегчает полный мониторинг и диагностику.

Помимо интерфейсов, которые поставляются с DB2 9.7, существует бесплатное средство разработки приложений на основе инфраструктуры Eclipse под названием IBM Data Studio (Data Stuidio). Data Stuidio - это универсальный центр для создания, редактирования, отладки, развертывания и тестирования хранимых процедур DB2 и определяемых пользователем функций. Кроме того, Data Stuidio можно использовать для разработки SQLJ-приложений, а также для создания, редактирования и выполнения SQL-выражений и XML-запросов.

Загрузить IBM Data Studio можно с Web-сайта Developerworks.

Подробная информация о IBM Data Studio приведена в руководстве на developerWorks. Примеры и функциональные возможности приведены на Web-странице IBM Data Studio Features and Benefits Web-сайта developerWorks.


Заключение

В статье представлен обзор DB2 9.7 для Linux, UNIX и Windows для специалистов, имеющих опыт работы с Oracle 11g. Мы кратко описали архитектуру DB2, фоновые процессы, модель памяти, безопасность, инструменты и т.п. В Oracle и DB2 9 много общего, но мы указали на некоторые отличия, чтобы вы могли использовать имеющийся опыт для успешной работы с DB2 9.7.

В таблице 3 подытожены обсуждавшиеся в статье различия и сходства между Oracle и DB2.

Таблица 3. Краткая сводка концепций Oracle и DB2
OracleDB2Комментарии
ЭкземплярЭкземплярЭкземпляр DB2 может содержать несколько баз данных
База данныхБаза данных
initSID.ora или SPFILEDBM CFG и DB CFGВ DB2 используется два уровня настройки: настройка менеджера базы данных (DBM CFG) на уровне экземпляра и настройка базы данных (DB CFG) на уровне базы данных. Как и в Oracle, многие конфигурационные параметры могут меняться динамически.
Табличные пространстваТабличные пространстваВ DB2 поддерживаются табличные пространства SMS и DMS. Табличные пространства DMS похожи на табличные пространства в Oracle.
Блоки данныхСтраницыТаблица в DB2 может иметь размер 4 КБ, 8 КБ, 16 КБ или 32 КБ. Строка должна соответствовать любому из этих размеров. Ее нельзя распространить на другие страницы, как в Oracle.
Расширения (экстенты)Расширения (экстенты)
Фалы данныхКонтейнеры табличного пространства DMSКонтейнерами для табличных пространств DMS могут быть неформатированные устройства или файлы.
Журнальные файлы повторного выполненияЖурнальные файлы транзакций
Буферы данныхБуферные пулыВ DB2 нет предопределенного набора буферных пулов, однако их можно создать столько, сколько потребуется. Буферный пул с размером конкретной страницы должен существовать до создания табличного пространства с размером этой страницы.
SGAСовместно используемая память базы данных и менеджера базы данных
Словарь данныхКаталог
Библиотечный кэшКэш пакетов
Большой пулСервисная куча
Кэш словаря данныхКэш каталога
Табличное пространство SYSTEMТабличное пространство SYSCATSPACE

Ресурсы

Научиться

Получить продукты и технологии

  • Загрузите бесплатную ознакомительную версию DB2 для Linux, UNIX и Windows.
  • Теперь вы можете использовать DB2 бесплатно. Загрузите DB2 Express-C, бесплатную версию DB2 Express Edition для сообщества, которая предлагает те же основные функции, что и DB2 Express Edtion, и предоставляет надежную основу для создания и развертывания приложений.
  • Загрузите ознакомительные версии продуктов IBM и приобретите опыт использования инструментов разработки приложений и продуктов промежуточного уровня семейств DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=777487
ArticleTitle=Использование опыта работы с Oracle 11g при изучении DB2 9.7 для Linux, UNIX и Windows
publish-date=03242011