Введение в DB2
В этой главе описывается история DB2, ее версий, выпусков и соответствующих функций.
обзор
DB2 — это продукт базы данных от IBM. Это система управления реляционными базами данных (RDBMS). DB2 предназначена для эффективного хранения, анализа и извлечения данных. Продукт DB2 расширен за счет поддержки объектно-ориентированных функций и нереляционных структур с XML.
история
Первоначально IBM разработала продукт DB2 для своей конкретной платформы. С 1990 года было решено разработать сервер DB2 Universal Database (UDB), который может работать в любых авторитетных операционных системах, таких как Linux, UNIX и Windows.
Версии
Для IBM DB2 текущая версия UDB — 10.5 с функциями BLU Acceleration и его кодовым названием «Kepler». Все версии DB2 до сегодняшнего дня перечислены ниже:
Версия | Кодовое имя |
---|---|
3,4 | паутина |
8.1, 8.2 | Жало |
9,1 | гадюка |
9,5 | Viper 2 |
9,7 | кобра |
9,8 | Он добавил функции только с PureScale |
10,1 | Галилео |
10,5 | Kepler |
Выпуски и функции сервера данных
В зависимости от требований необходимых функций DB2 организации выбирают соответствующую версию DB2. В следующей таблице показаны серверные редакции DB2 и их возможности:
издания | Характеристики |
---|---|
Advanced Enterprise Server Edition и Enterprise Server Edition (AESE / ESE) | Он предназначен для средних и крупных бизнес-организаций. Платформа — Linux, UNIX и Windows. Разделение таблиц Материализованная таблица запросов (MQT) с высокой готовностью к аварийному восстановлению (MQT) Многомерная кластеризация (MDC) Концентратор соединений Сжатие с резервным копированием чистого XML Однородные федерации |
Workgroup Server Edition (WSE) | Он предназначен для рабочих групп или организаций среднего бизнеса. С помощью этого WSE вы можете работать с: — Высокая доступность после аварийного восстановления (HARD) Онлайн-реорганизация Поддержка федерации веб-служб Pure XML Поддержка однородных федераций DB2 Гомогенная репликация SQL Сжатие резервных копий |
Экспресс -C | Он предоставляет все возможности DB2 без взимания платы. Он может работать на любых физических или виртуальных системах с любым размером конфигурации. |
Express Edition | Он предназначен для организаций начального и среднего бизнеса. Это полнофункциональный сервер данных DB2. Он предлагает только ограниченные услуги. Этот выпуск поставляется с: — федерации веб-служб, однородные федерации DB2, гомогенные репликации SQL, сжатие резервных копий. |
Enterprise Developer Edition | Он предлагает только один разработчик приложений. Полезно проектировать, создавать и создавать прототипы приложений для развертывания на любом сервере IBM. Программное обеспечение не может быть использовано для разработки приложений. |
Установка сервера DB2
В этой главе описываются этапы установки сервера DB2.
Вступление
Вы можете загрузить пробную версию сервера DB2 или приобрести лицензию на веб-сайт www.ibm.com . Для загрузки доступно два отдельных сервера DB2, в зависимости от размера операционной системы, на которой он предназначен. Например, если вы хотите загрузить сервер DB2 для 32-битной операционной системы Linux или UNIX, вам необходимо загрузить 32-битный сервер DB2. То же самое относится и к 64-битному серверу DB2.
Требования к оборудованию
Процессор: Minimum Core 2Duo
RAM: минимум 1 ГБ
Жесткий диск: минимум 30 ГБ
Требования к программному обеспечению
Перед установкой сервера DB2 вашей системе необходимо подготовить необходимое программное обеспечение. Для Linux вам нужно установить «libstdc ++ 6.0».
Проверка совместимости системы
Перед установкой сервера DB2 необходимо проверить, совместима ли ваша система с сервером DB2. Для подтверждения совместимости вам нужно вызвать команду ‘db2prereqcheck’ в командной консоли.
Установка DB2 в операционной системе Linux
Откройте Терминал и задайте путь к папке установочного образа db2 на консоли с помощью команды «CD <папка установки DB2>». Затем введите команду «./db2prereqcheck», которая подтверждает совместимость вашей системы с сервером DB2.
./db2prereqcheck
На рисунке 1 показаны требования совместимости операционной системы Linux и аппаратной системы.
Выполните указанные шаги для установки DB2 в вашей системе Linux:
- Откройте терминал.
- Войдите в систему как пользователь root.
- Откройте папку установки DB2.
- Введите «./db2setup» и нажмите Enter.
Этот процесс начнет выполнение установки сервера DB2.
Введите «./db2setup» и нажмите Enter на корневом терминале, чтобы начать процесс установки DB2 Server.
При этом появится экран «Настройка панели запуска». [Фигура 2]
На странице панели запуска установки выберите опцию «Установить продукт» в боковом меню. Выберите опцию «DB2 Advanced Enterprise Server Edition». Выберите кнопку «Установить новый».
Появится новый фрейм с именем «Мастер установки DB2». Нажмите кнопку «Далее». [Рисунок-3]
Появится следующий экран с лицензионным соглашением DB2. Выберите «Я принимаю условия…». Нажмите «Далее». [Рисунок-4]
На следующем экране появится предложение типа установки, для которого по умолчанию установлено значение «Обычный».
Держите тот же выбор. Нажмите кнопку «Далее». [Рисунок-5]
Появится следующий экран с действием установки.
Выберите «Установить DB2 Advanced Enterprise Server Edition…»
Нажмите кнопку «Далее». [Рисунок-6]
На следующем экране программа установки попросит выбрать каталог установки.
Оставьте значение по умолчанию и нажмите «Далее».
На следующем экране появится аутентификация пользователя. Введите пароль для пользователя «dasusr1».
(Ваш пароль может быть идентичен имени пользователя, чтобы его было удобно запомнить.)
На следующем экране программа установки попросит вас создать экземпляр сервера DB2.
Здесь он создает экземпляр DB2 с именем «db2inst1».
На следующем экране запрашивается количество разделов, необходимых для экземпляра по умолчанию.
У вас есть выбор «одного или нескольких» разделов.
Выберите «экземпляр одного раздела». Нажмите кнопку «Далее».
На следующем экране программа установки запрашивает аутентификацию для создаваемого экземпляра DB2.
Здесь по умолчанию имя пользователя создается как «db2inst1». Вы можете ввести пароль так же, как имя пользователя.
Нажмите кнопку «Далее».
На следующем экране программа установки запрашивает информацию для аутентификации пользователя «db2fenc».
Здесь вы можете ввести пароль так же, как имя пользователя.
Нажмите кнопку «Далее».
На следующем экране вы можете выбрать опцию «Не настраивать сервер db2 для отправки уведомлений в это время».
Нажмите кнопку «Далее».
На следующем экране отображается информация о настройке db2.
Нажмите «Готово».
На этом этапе процедура установки DB2 завершена.
Проверка установки DB2
Вам нужно проверить установку сервера DB2 на его полезность. После завершения установки сервера DB2 выйдите из режима текущего пользователя и войдите в систему как пользователь «db2inst1». В пользовательской среде «db2inst1» вы можете открыть терминал и выполнить следующие команды, чтобы проверить, правильно ли установлен ваш продукт db2.
db2level
Эта команда показывает текущую версию и уровень обслуживания установленного продукта DB2 для текущего экземпляра.
Синтаксис:
db2level
Пример:
db2level
Выход:
DB21085I Instance "db2inst2" uses "64" bits And DB2 code release "SQL10010" with level identifier "0201010E". Informational tokens are "DB2 v10.1.0.0", "s120403", "LINUXAMD64101", and Fix Pack "0". Product is installed at "/home/db2inst2/sqllib".
db2licm
Эта команда показывает всю информацию о лицензии нашего продукта DB2.
Синтаксис:
db2licm <parameter>
Пример:
db2licm -l
Выход:
Product name: "DB2 Advanced Enterprise Server Edition" License type: "Trial" Expiry date: "10/02/2014" Product identifier: "db2aese" Version information: "10.1" Product name: "DB2 Connect Server" License type: "Trial" Expiry date: "10/02/2014" Product identifier: "db2consv" Version information: "10.1"
Процессор командной строки (CLP)
CLP может быть запущен в одном из трех режимов:
-
Командный режим : в этом режиме каждая команда и оператор SQL должны иметь префикс «db2». Например, запрос «db2 активировать образец базы данных».
-
Режим интерактивного ввода : вы можете запустить этот режим с помощью команды «db2». Здесь вы можете передавать операторы SQL без префикса. Например, «активировать образец базы данных».
-
Пакетный режим : здесь вам необходимо создать файл сценария, который содержит все запросы SQL-запросов и сохранить файл с расширением «.db2». Вы можете вызвать это в командной строке, используя синтаксис «db2 –tf <filename.db2>».
Командный режим : в этом режиме каждая команда и оператор SQL должны иметь префикс «db2». Например, запрос «db2 активировать образец базы данных».
Режим интерактивного ввода : вы можете запустить этот режим с помощью команды «db2». Здесь вы можете передавать операторы SQL без префикса. Например, «активировать образец базы данных».
Пакетный режим : здесь вам необходимо создать файл сценария, который содержит все запросы SQL-запросов и сохранить файл с расширением «.db2». Вы можете вызвать это в командной строке, используя синтаксис «db2 –tf <filename.db2>».
Экземпляр DB2
Вступление
Экземпляр — это логическая среда для менеджера баз данных DB2. Используя экземпляр, вы можете управлять базами данных. В зависимости от наших требований вы можете создать несколько экземпляров на одном физическом компьютере. Содержимое каталога Instance:
- Файл конфигурации менеджера баз данных
- Системный каталог баз данных
- Каталог узлов
- Файл конфигурации узла [db2nodes.cfg]
- Отладка файлов, дамп файлов
Для сервера баз данных DB2 экземпляром по умолчанию является «DB2». Изменить каталог Instance после его создания невозможно. Экземпляр может управлять несколькими базами данных. В каждом случае каждая база данных имеет уникальное имя, собственный набор таблиц каталога, файлы конфигурации, права доступа и привилегии.
Архитектура экземпляра в продукте DB2
Несколько экземпляров
Вы можете создать несколько экземпляров в одном DB2Server в Linux, UNIX и Windows. Можно установить несколько серверов DB2Server на физический компьютер.
Создание экземпляра в Linux
Вы можете создать несколько экземпляров в Linux и UNIX, если сервер DB2 установлен от имени пользователя root. Экземпляр может работать одновременно в Linux и UNIX независимо. Вы можете одновременно работать с одним экземпляром менеджера баз данных.
Папка Instance содержит файлы конфигурации и папки базы данных. Каталог Instance хранится в разных местах Windows, в зависимости от версии операционной системы.
Перечисление экземпляров
Следующая команда используется для перечисления экземпляров:
db2ilist
Эта команда перечисляет все экземпляры, которые доступны в системе.
Синтаксис:
db2ilist
Пример: [Чтобы увидеть, сколько экземпляров создано в копии DB2]
db2ilist
Выход:
db2inst1
db2inst2
db2inst3
Команды среды экземпляра
Эти команды полезны для работы с расположением экземпляров в CLI DB2.
Получить экземпляр
Эта команда показывает подробности текущего запущенного экземпляра.
Синтаксис:
db2 get instance
Пример: [Чтобы увидеть текущий экземпляр, который активировал текущего пользователя]
db2 get instance
Выход:
The current database manager instance is : db2inst1
Установить экземпляр
Чтобы запустить или остановить менеджер базы данных экземпляра в DB2 UDB, для текущего экземпляра выполняется следующая команда.
Синтаксис:
set db2instance=<instance_name>
Пример: [Организация среды «db2inst1» для текущего пользователя]
set db2instance=db2inst1
db2start
Используя эту команду, вы можете запустить экземпляр. Перед этим вам нужно запустить «установить экземпляр».
Синтаксис:
db2start
Пример: [Чтобы запустить экземпляр]
db2start
Выход:
SQL1063N DB2START processing was successful
db2stop
С помощью этой команды вы можете остановить работающий экземпляр.
Синтаксис:
db2stop
Выход:
SQL1064N DB2STOP processing was successful.
Создание экземпляра
Давайте посмотрим, как создать новый экземпляр.
db2icrt
Если вы хотите создать новый экземпляр, вам нужно войти в систему как root. Идентификатор экземпляра не является корневым идентификатором или корневым именем.
Вот шаги для создания нового экземпляра:
Шаг 1 : Создайте пользователя операционной системы, например.
Синтаксис:
useradd -u <ID> -g <group name> -m -d <user location> <user name> -p <password>
Пример : [Создать пользователя, например, с именем ‘db2inst2’ в группе ‘db2iadm1’ и паролем ‘db2inst2’]
useradd -u 1000 -g db2iadm1 -m -d /home/db2inst2 db2inst2 -p db2inst2
Шаг 2. Перейдите в каталог экземпляра DB2 в корневом пользователе, чтобы создать новый экземпляр.
Место нахождения:
cd /opt/ibm/db2/v10.1/instance
Шаг 3. Создайте экземпляр, используя следующий синтаксис:
Синтаксис:
./db2icrt -s ese -u <inst id> <instance name>
Пример : [Чтобы создать новый экземпляр ‘db2inst2’ в пользователе ‘db2inst2’ с функциями ‘ESE’ (Enterprise Server Edition)]
./db2icrt -s ese -u db2inst2 db2inst2
Выход:
DBI1446I The db2icrt command is running, please wait. …. ….. DBI1070I Program db2icrt completed successfully.
Организация порта связи и хоста для экземпляра
Отредактируйте файл / etc / services и добавьте номер порта. В приведенном ниже синтаксисе «имя_экземпляра» указывает имя экземпляра, а «имя_экземпляра» указывает номер порта экземпляра.
Синтаксис:
db2c_<inst name> <inst_port>/tcp
Пример : [Добавление номера порта «50001 / tcp» для экземпляра «db2inst2» с переменной «db2c_db2inst2» в файле «services»]
db2c_db2inst2 50001/tcp
Синтаксис 1 : [Обновить конфигурацию менеджера баз данных с помощью имени службы. Следующий синтаксис ‘svcename’ указывает имя службы экземпляра, а ‘имя_экземпляра’ указывает имя экземпляра]
db2 update database manager configuration using svcename db2c_&<inst_name>
Пример 1 : [Обновление конфигурации DBM с помощью переменной svcename со значением ‘db2c_db2inst2’, например, ‘db2inst2’
db2 update database manager configuration using svcename db2c_db2inst2
Выход
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully.
Синтаксис 2 : установить протокол связи «tcpip» для текущего экземпляра
db2set DB2COMM=tcpip
Синтаксис 3 : [Остановка и запуск текущего экземпляра для получения обновленных значений из конфигурации менеджера баз данных]
db2stop
db2start
Обновление экземпляра
Вы можете обновить экземпляр, используя следующую команду:
db2iupdt
Эта команда используется для обновления экземпляра в том же выпуске версии. Перед выполнением этой команды необходимо остановить менеджер базы данных экземпляра с помощью команды «db2stop». Синтаксис ниже «имя_экземпляра» указывает имя ранее выпущенного или установленного экземпляра сервера db2, которое вы хотите обновить до более новой версии или установленной версии сервера db2.
Синтаксис 1 : обновить экземпляр в обычном режиме
db2iupdt <inst_name>
Example1:
./db2iupdt db2inst2
Синтаксис 2 : обновить экземпляр в режиме отладки
db2iupdt -D <inst_name>
пример
db2iupdt -D db2inst2
Обновление экземпляра
Вы можете обновить экземпляр с предыдущей версии копии DB2 до текущей вновь установленной версии копии DB2.
db2iupgrade
В системе Linux или UNIX эта команда находится в каталоге DB2DIR / instance. В следующих синтаксисах «имя_экземпляра» указывает на предыдущую версию экземпляра DB2, а «имя_экземпляра» указывает на текущую установленную версию пользователя экземпляра копии DB2.
Синтаксис 2 :
db2iupgrade -d -k -u <inst_username> <inst_name>
Пример :
db2iupgrade -d -k -u db2inst2 db2inst2
Параметры команды:
-d : включает режим отладки.
-k : Сохраняет тип экземпляра перед обновлением, если он поддерживается в копии DB2, откуда вы запускаете эту команду.
Если вы используете Super User (su) в Linux для команды db2iupgrade, вы должны выполнить команду «su» с опцией «-».
Отбрасывание экземпляра
Вы можете удалить или удалить экземпляр, который был создан командой «db2icrt».
db2idrop
В операционной системе Linux и UNIX эта команда находится в каталоге DB2_installation_folder / instance.
Синтаксис : [в следующем синтаксисе «inst_username» указывает имя пользователя экземпляра, а «inst_name» указывает имя экземпляра]
db2idrop -u <inst_username> <inst_name>
Пример : [Чтобы удалить db2inst2]
./db2idrop -u db2inst2 db2inst2
Использование других команд с экземпляром
Команда, чтобы узнать, с каким экземпляром DB2 мы работаем сейчас.
Синтаксис 1 : [проверить текущий экземпляр, активированный менеджером баз данных]
db2 get instance
Выход:
The current database manager instance is: db2inst1
Синтаксис 2 : [Чтобы увидеть текущий экземпляр с рабочими битами и версией выпуска]
db2pd -inst | head -2
Пример:
db2pd -inst | head -2
Выход:
Instance db2inst1 uses 64 bits and DB2 code release SQL10010
Синтаксис 3 : [Чтобы проверить имя работающего в данный момент экземпляра]
db2 select inst_name from sysibmadm.env_inst_info
Пример:
db2 select inst_name from sysibmadm.env_inst_info
Выход:
INST_NAME -------------------------------------- db2inst1 1 record(s) selected.
Синтаксис : [Чтобы установить новый экземпляр по умолчанию]
db2set db2instdef=<inst_name> -g
Пример : [Для массива вновь созданного экземпляра как экземпляра по умолчанию]
db2set db2instdef=db2inst2 -g
Базы данных DB2
В этой главе описывается создание, активация и деактивация баз данных с соответствующим синтаксисом.
Архитектура базы данных
База данных — это набор таблиц, схем, буферных пулов, журналов, групп хранения и табличных пространств, работающих вместе для эффективной обработки операций с базой данных.
Каталог базы данных
Каталог баз данных — это организованное хранилище баз данных. При создании базы данных все сведения о базе данных сохраняются в каталоге базы данных, такие как сведения о запоминающих устройствах по умолчанию, файлы конфигурации, список временных таблиц и т. Д.
Глобальный каталог раздела создается в папке экземпляра. Этот каталог содержит всю глобальную информацию, связанную с базой данных. Этот глобальный каталог раздела называется NODExxxx / SQLyyy, где xxxx — номер раздела данных, а yyy — токен базы данных.
В глобальном каталоге partition создается каталог для конкретного члена. Этот каталог содержит информацию о локальной базе данных. Каталог для конкретного члена называется MEMBERxxxx, где xxxx — это номер участника. Среда DB2 Enterprise Server Edition работает на одном члене и имеет только один каталог, специфичный для этого члена. Этот каталог для конкретного члена имеет уникальное имя MEMBER0000.
Разделенный глобальный каталог
Расположение каталога: <экземпляр> / NODExxx / SQLxxx
Глобальный каталог partition содержит файлы, относящиеся к базе данных, как указано ниже.
- Глобальные тупиковые файлы мониторинга событий записи в файл
- Информационные файлы табличного пространства [SQLSPCS.1, SQLSPCS.2]
- Управляющие файлы группы хранения [SQLSGF.1, SQLSGF.2]
- Временные файлы контейнера табличного пространства. [/ путь хранения /
/T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA] - Файл глобальной конфигурации [SQLDBCONF]
- Файлы истории [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
- Файлы, связанные с журналированием [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
- Блокировка файлов [SQLINSLK, SQLTMPLK]
- Контейнеры автоматического хранения
Специальный каталог для членов
Расположение каталога: / NODExxxx / SQLxxxx / MEMBER0000
Этот каталог содержит:
- Объекты, связанные с базами данных
- Информационные файлы пула буферов [SQLBP.1, SQLBP.2]
- Локальные файлы мониторинга событий
- Файлы, связанные с журналированием [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
- Локальные файлы конфигурации
- Файл монитора событий взаимоблокировок. Подробные файлы монитора событий взаимоблокировки хранятся в каталоге базы данных узла каталога в случае ESE и среды многораздельных баз данных.
Создание базы данных
Вы можете создать базу данных, используя команду «CREATE DATABASE». Все базы данных создаются с группой хранения по умолчанию «IBMSTOGROUP», которая создается во время создания экземпляра. В DB2 все таблицы базы данных хранятся в «табличном пространстве», в котором используются соответствующие группы хранения.
Привилегии для базы данных автоматически устанавливаются как PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA и SELECT], однако, если присутствует опция RESTRICTIVE, привилегии не предоставляются как PUBLIC.
Создание неограничительной базы данных
Эта команда используется для создания неограничительной базы данных.
Синтаксис : [Для создания новой базы данных. ‘database_name’ указывает новое имя базы данных, которое вы хотите создать.]
db2 create database <database name>
Пример : [Создать новую неограничительную базу данных с именем ‘one’]
db2 create database one
Выход:
DB20000I The CREATE DATABASE command completed successfully.
Создание ограничительной базы данных
Ограничительная база данных создается при вызове этой команды.
Синтаксис : [В приведенном ниже синтаксисе «db_name» обозначает имя базы данных.]
db2 create database <db_name> restrictive
Пример : [Создать новую ограничительную базу данных с именем ‘two’]
db2 create database two restrictive
Создание базы данных с другим определенным пользователем местоположением
Создайте базу данных с группой хранения по умолчанию «IBMSTOGROUP» по другому пути. Ранее вы вызывали команду «создать базу данных» без какого-либо определенного пользователем местоположения для хранения или создания базы данных в определенном месте. Чтобы создать базу данных с использованием пользовательского расположения базы данных, выполните следующую процедуру:
Синтаксис : [В приведенном ниже синтаксисе «db_name» указывает «имя базы данных», а «data_location» указывает, где нужно хранить данные в папках, а «db_path_location» указывает расположение драйвера «data_location».]
db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'
Пример : [Создать базу данных с именем ‘four’, где данные хранятся в ‘data1’, а эта папка хранится в ‘dbpath1’]
db2 create database four on '/data1' dbpath on '/dbpath1'
Просмотр файлов каталогов локальной или системной базы данных
Вы выполняете эту команду, чтобы увидеть список каталогов, доступных в текущем экземпляре.
Синтаксис:
db2 list database directory
Пример:
db2 list database directory
Выход:
System Database Directory Number of entries in the directory = 6 Database 1 entry: Database alias = FOUR Database name = FOUR Local database directory = /home/db2inst4/Desktop/dbpath Database release level = f.00 Comment = Directory entry type = Indirect Catalog database partition number = 0 Alternate server hostname = Alternate server port number = Database 2 entry: Database alias = SIX Database name = SIX Local database directory = /home/db2inst4 Database release level = f.00 Comment = Directory entry type = Indirect Catalog database partition number = 0 Alternate server hostname = Alternate server port number =
Активация базы данных
Эта команда запускает все необходимые службы для конкретной базы данных, чтобы база данных была доступна для приложения.
Синтаксис : [‘db_name’ указывает имя базы данных]
db2 activate db <db_name>
Пример : [Активация базы данных ‘one’]
db2 activate db one
Деактивация базы данных
Используя эту команду, вы можете остановить службы базы данных.
Синтаксис:
db2 deactivate db <db_name>
Пример : [Деактивировать базу данных ‘one’]
db2 deactivate db one
Подключение к базе данных
После создания базы данных, чтобы использовать ее, необходимо подключить или запустить базу данных.
Синтаксис:
db2 connect to <database name>
Пример : [Чтобы подключить базу данных один к текущему CLI]
db2 connect to one
Выход:
Database Connection Information Database server = DB2/LINUXX8664 10.1.0 SQL authorization ID = DB2INST4 Local database alias = ONE
Проверка, является ли база данных ограничительной
Чтобы проверить, является ли эта база данных ограничительной или нет, вот синтаксис:
Синтаксис : [В следующем синтаксисе «db» обозначает базу данных, «cfg» обозначает конфигурацию, «db_name» обозначает имя базы данных]
db2 get db cfg for <db_name> | grep -i restrict
Пример : [Чтобы проверить, ограничена ли база данных «один» или нет]
db2 get db cfg for one | grep -i restrict
Выход:
Restrict access = NO
Конфигурирование менеджера базы данных и базы данных
Конфигурация экземпляра (конфигурация менеджера баз данных) хранится в файле с именем «db2system», а конфигурация, связанная с базой данных, хранится в файле с именем «SQLDBCON». Эти файлы нельзя редактировать напрямую. Вы можете редактировать эти файлы, используя инструменты, которые вызывают API. Используя процессор командной строки, вы можете использовать эти команды.
Параметры конфигурации менеджера баз данных
Синтаксис : [Чтобы получить информацию менеджера баз данных экземпляра]
db2 get database manager configuration
ИЛИ ЖЕ
db2 get dbm cfg
Синтаксис : [Чтобы обновить менеджер базы данных экземпляра]
db2 update database manager configuration
ИЛИ ЖЕ
db2 update dbm cfg
Синтаксис : [Для сброса предыдущих конфигураций]
db2 reset database manager configuration
ИЛИ ЖЕ
db2 reset dbm cfg
Параметры конфигурации базы данных
Синтаксис : [Получить информацию о базе данных]
db2 get database configuration
ИЛИ ЖЕ
db2 get db cfg
Синтаксис : [Чтобы обновить конфигурацию базы данных]
db2 update database configuration
ИЛИ ЖЕ
db2 update db cfg
Синтаксис : [Для сброса ранее настроенных значений в конфигурации базы данных
db2 reset database configuration
ИЛИ ЖЕ
db2 reset db cfg
Синтаксис : [Чтобы проверить размер текущей активной базы данных]
db2 "call get_dbsize_info(?,?,?,-1)"
Пример : [Чтобы проверить размер Активируемой базы данных]
db2 "call get_dbsize_info(?,?,?,-1)"
Выход:
Value of output parameters -------------------------- Parameter Name : SNAPSHOTTIMESTAMP Parameter Value : 2014-07-02-10.27.15.556775 Parameter Name : DATABASESIZE Parameter Value : 105795584 Parameter Name : DATABASECAPACITY Parameter Value : 396784705536 Return Status = 0
Оценка места, необходимого для базы данных
Чтобы оценить размер базы данных, необходимо учитывать вклад следующих факторов:
- Таблицы системного каталога
- Данные таблицы пользователя
- Длинные полевые данные
- Данные больших объектов (LOB)
- Индекс Пространство
- Временное рабочее пространство
- Данные XML
- Пространство файлов журнала
- Каталог локальной базы данных
- Системные файлы
Проверка полномочий базы данных
Вы можете использовать следующий синтаксис, чтобы проверить, какие полномочия базы данных предоставлены PUBLIC в неограничительной базе данных.
Шаг 1 : подключитесь к базе данных с аутентификационным идентификатором пользователя и паролем экземпляра.
Синтаксис : [Для подключения к базе данных с именем пользователя и паролем]
db2 connect to <db_name> user <userid> using <password>
Пример : [Соединить «одну» базу данных с идентификатором пользователя «db2inst4» и паролем «db2inst4»]
db2 connect to one user db2inst4 using db2inst4
Выход:
Database Connection Information Database server = DB2/LINUXX8664 10.1.0 SQL authorization ID = DB2INST4 Local database alias = ONE
Шаг 2 : Проверить полномочия базы данных.
Синтаксис : [Синтаксис ниже показывает результат службы авторизации для текущей базы данных]
db2 "select substr(authority,1,25) as authority, d_user, d_group, d_public, role_user, role_group, role_public,d_role from table( sysproc.auth_list_authorities_for_authid ('public','g'))as t order by authority"
Пример:
db2 "select substr(authority,1,25) as authority, d_user, d_group, d_public, role_user, role_group, role_public,d_role from table( sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t order by authority"
Выход:
AUTHORITY D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE ------------------------- ------ ------- -------- --------- ---------- ----------- ------ ACCESSCTRL * * N * * N * BINDADD * * Y * * N * CONNECT * * Y * * N * CREATETAB * * Y * * N * CREATE_EXTERNAL_ROUTINE * * N * * N * CREATE_NOT_FENCED_ROUTINE * * N * * N * CREATE_SECURE_OBJECT * * N * * N * DATAACCESS * * N * * N * DBADM * * N * * N * EXPLAIN * * N * * N * IMPLICIT_SCHEMA * * Y * * N * LOAD * * N * * N * QUIESCE_CONNECT * * N * * N * SECADM * * N * * N * SQLADM * * N * * N * SYSADM * * * * * * * SYSCTRL * * * * * * * SYSMAINT * * * * * * * SYSMON * * * * * * * WLMADM * * N * * N * 20 record(s) selected.
Удаление базы данных
Используя команду Drop, вы можете удалить нашу базу данных из каталога базы данных экземпляра. Эта команда может удалить все свои объекты, таблицы, пространства, контейнеры и связанные файлы.
Синтаксис : [Чтобы удалить любую базу данных из экземпляра]
db2 drop database <db_name>
Пример : [Удалить базу данных «шесть» из экземпляра]
db2 drop database six
Выход:
DB20000I The DROP DATABASE command completed successfully
Буферные пулы DB2
Эта глава знакомит вас с Bufferpools в базе данных.
Вступление
Буферный пул является частью основного пространства памяти, которое выделяется менеджером базы данных. Целью буферных пулов является кэширование таблицы и индексирование данных с диска. Все базы данных имеют свои собственные буферные пулы. Пул буферов по умолчанию создается во время создания новой базы данных. Он называется «IBMDEFAULTBP». В зависимости от требований пользователя, можно создать несколько буферных пулов. В пуле буферов менеджер базы данных помещает данные строки таблицы в виде страницы. Эта страница остается в пуле буферов до тех пор, пока база данных не будет закрыта или пока в пространство не будут записаны новые данные. Страницы в пуле буферов, которые обновляются данными, но не записываются на диск, называются «грязными» страницами. После того, как обновленные страницы данных в пуле буферов будут записаны на диск, пул буферов будет готов принять другие данные.
Связь между табличными пространствами и буферными пулами
Каждое табличное пространство связано с конкретным буферным пулом в базе данных. Одно табличное пространство связано с одним буферным пулом. Размер пула буферов и табличного пространства должен быть одинаковым. Несколько буферных пулов позволяют вам сконфигурировать память, используемую базой данных, чтобы повысить ее общую производительность.
Размеры буфера
Размер страницы буферного пула задается при использовании команды «CREATE DATABASE». Если вы не укажете размер страницы, он примет размер страницы по умолчанию, равный 4 КБ. После создания пула буферов невозможно изменить размер страницы позже.
Список доступных буферных пулов в текущем каталоге базы данных
Синтаксис : [Синтаксис ниже показывает все доступные буферные пулы в базе данных]
db2 select * from syscat.bufferpools
Пример : [Чтобы увидеть доступные буферные пулы в текущей базе данных]
db2 select * from syscat.bufferpools
Выход:
BPNAME BUFFERPOOLID DBPGNAME NPAGES PAGESIZE ESTORE NUMBLOCKPAGES BLOCKSIZE NGNAME ------------------------------------------------------------ IBMDEFAULTBP 1 - -2 4096 N 0 0 - 1 record(s) selected.
Создание буферного пула
Чтобы создать новый пул буферов для сервера базы данных, вам понадобятся два параметра, а именно «имя буферного пула» и «размер страницы». Следующий запрос выполняется для создания нового пула буферов.
Синтаксис: [В приведенном ниже синтаксисе «bp_name» указывает имя пула буферов, а «размер» указывает размер страницы, которую необходимо объявить для буферных пулов (4K, 8K, 16K, 32K)]
db2 create bufferpool <bp_name> pagesize <size>
Пример : [Создать новый пул буферов с именем «bpnew» и размером «8192» (8Kb).]
db2 create bufferpool bpnew pagesize 8192
Выход
DB20000I The SQL command completed successfully.
Отбрасывание буферного пула
Перед удалением пула буферов необходимо проверить, назначено ли ему какое-либо табличное пространство.
Синтаксис : [Чтобы удалить буферный пул]
drop bufferpool <bp_name>
Пример : [Чтобы удалить ‘bpnew’ с именем bufferpool]
db2 drop bufferpool bpnew
Выход
DB20000I The SQL command completed successfully.
Табличные пространства DB2
В этой главе подробно описаны табличные пространства
Вступление
Табличное пространство — это структура хранения, она содержит таблицы, индексы, большие объекты и длинные данные. Он может использоваться для организации данных в базе данных в логическую группу хранения, которая связана с тем, где данные хранятся в системе. Эти табличные пространства хранятся в группах разделов базы данных
Преимущества табличных пространств в базе данных
Табличные пространства полезны в базе данных по-разному:
Возможность восстановления. Табличные пространства делают операции резервного копирования и восстановления более удобными. Используя одну команду, вы можете сделать резервную копию или восстановить все объекты базы данных в табличных пространствах.
Автоматическое управление хранением : менеджер баз данных создает и расширяет контейнеры в зависимости от потребностей.
Использование памяти : один буферный пул может управлять несколькими табличными пространствами. Вы можете назначить временные табличные пространства их собственному пулу буферов, чтобы повысить производительность таких действий, как сортировки или объединения.
Контейнер
Табличные пространства содержат один или несколько контейнеров. Контейнер может быть именем каталога, именем устройства или именем файла. В базе данных одно табличное пространство может иметь несколько контейнеров на одном физическом устройстве хранения. Если табличное пространство создается с опцией автоматического хранения табличного пространства, менеджер баз данных автоматически создает и управляет контейнерами. Если он не создан с параметром табличного пространства автоматического хранения, вам необходимо определить и управлять контейнерами самостоятельно.
Табличные пространства по умолчанию
При создании новой базы данных менеджер базы данных создает некоторые табличные пространства по умолчанию для базы данных. Эти табличные пространства используются как хранилище для пользовательских и временных данных. Каждая база данных должна содержать как минимум три табличных пространства, как указано здесь:
- Табличное пространство каталога
- Табличное пространство пользователя
- Временное табличное пространство
Табличное пространство каталога : содержит таблицы системного каталога для базы данных. Он называется SYSCATSPACE и не может быть удален.
Пользовательское табличное пространство : это табличное пространство содержит пользовательские таблицы. В базе данных у нас есть одно пользовательское табличное пространство по умолчанию, которое называется USERSPACE1. Если вы не определяете пользовательское табличное пространство для таблицы во время ее создания, тогда менеджер баз данных выбирает пользовательское табличное пространство по умолчанию для вас.
Временное табличное пространство : временное табличное пространство содержит данные временных таблиц. Это табличное пространство содержит системные временные табличные пространства или пользовательские временные табличные пространства.
Системное временное табличное пространство содержит временные данные, необходимые для менеджера баз данных при выполнении таких операций, как сортировки или объединения. База данных должна иметь хотя бы одно системное временное табличное пространство, и она называется TEMPSPACE1. Он создается во время создания базы данных. Пользовательское временное табличное пространство содержит временные данные из таблиц. Он создается с помощью оператора DECLARE GLOBAL TEMPORARY TABLE или CREATE GLOBAL TEMPORARY TABLE. Это временное табличное пространство не создается по умолчанию во время создания базы данных.
Табличные пространства и управление хранением:
Табличные пространства могут быть настроены по-разному, в зависимости от того, как вы хотите их использовать. Вы можете настроить операционную систему для управления распределением табличного пространства, позволить диспетчеру базы данных выделять пространство или выбрать автоматическое выделение табличного пространства для ваших данных.
Доступны следующие три типа управляемых пространств:
System Managed Space (SMS) : Менеджер файловой системы операционной системы выделяет и управляет пространством, в котором хранится таблица. Место для хранения выделяется по запросу. Эта модель состоит из файлов, представляющих объекты базы данных. Этот тип табличного пространства объявлен устаревшим в версии 10.1 для пользовательских табличных пространств и не рекомендуется для каталога и временных табличных пространств.
Управляемое пространство базы данных (DMS) . Сервер базы данных контролирует пространство хранения. Пространство памяти предварительно выделяется в файловой системе на основе определения контейнера, которое вы указываете при создании табличного пространства DMS. Он не рекомендуется в версии 10.1 с пакетом исправлений 1 для пользовательских табличных пространств, но не рекомендуется для системных табличных пространств и временных табличных пространств.
Автоматическое хранение табличного пространства : сервером базы данных можно управлять автоматически. Сервер базы данных создает и расширяет контейнеры в зависимости от данных в базе данных. При автоматическом управлении хранением не требуется предоставлять определения контейнеров. Сервер базы данных наблюдает за созданием и расширением контейнеров, чтобы использовать хранилище, выделенное для базы данных. Если вы добавите пространство хранения в группу хранения, новые контейнеры будут автоматически созданы, когда существующий контейнер достигнет максимальной емкости. Если вы хотите использовать добавленное хранилище немедленно, вы можете перебалансировать табличное пространство.
Размер страницы, таблицы и табличного пространства:
Для временных табличных пространств DMS и автоматического хранения размер страницы, который вы выбираете для своей базы данных, определяет максимальный предел для размера табличного пространства. Для табличных пространств SMS и временных автоматических хранилищ размер страницы ограничивает размер самой таблицы. Размер страницы может быть 4 КБ, 8 КБ, 16 КБ или 32 КБ.
Тип табличного пространства | Ограничение размера страницы 4K | 8K ограничение размера страницы | 16K ограничение размера страницы | Ограничение размера страницы 32K |
---|---|---|---|---|
DMS, обычное автоматическое хранение табличного пространства | 64G | 128G | 256G | 512 г |
DMS, временное DMS и временное автоматическое табличное пространство для хранения данных большие | 1892G | 16384G | 32768G | 65536G |
DB2 Storagegroups
В этой главе описываются группы хранения базы данных.
Вступление
Набор путей хранения для хранения таблицы или объектов базы данных — это группа хранения. Вы можете назначить табличные пространства группе хранения. Когда вы создаете базу данных, все табличные пространства принимают стандартное хранилище. Группой хранения по умолчанию для базы данных является «IBMSTOGROUP». При создании новой базы данных группа хранения по умолчанию активна, если вы передаете параметр «AUTOMATIC STOGROUP NO» в конце команды «CREATE DATABASE». База данных не имеет групп хранения по умолчанию.
Список групп хранения
Вы можете перечислить все группы хранения в базе данных.
Синтаксис : [Чтобы увидеть список доступных групп хранения в текущей базе данных]
db2 select * from syscat.stogroups
Пример : [Чтобы увидеть список доступных групп хранения в текущей базе данных]
db2 select * from syscat.stogroups
Создание группы хранения
Вот синтаксис для создания группы хранения в базе данных:
Синтаксис : [Создать новую группу. ‘Stogropu_name’ указывает имя новой группы хранения, а ‘path’ указывает место, где хранятся данные (таблицы)]
db2 create stogroupon ‘path’
Пример : [Чтобы создать новую стогруппу ‘stg1’ в папке ‘data1’ path]
db2 create stogroup stg1 on ‘/data1’
Выход:
DB20000I The SQL command completed succesfully
Создание табличного пространства с помощью Stogroup
Вот как вы можете создать табличное пространство с помощью storegroup:
Синтаксис : [Чтобы создать новое табличное пространство, используя существующую группу хранения]
db2 create tablespace <tablespace_name> using stogroup <stogroup_name>
Пример : [Чтобы создать новое табличное пространство с именем ‘ts1’, используя существующую группу хранения ‘stg1’]
db2 create tablespace ts1 using stogroup stg1
Выход:
DB20000I The SQL command completed succesfully
Изменение группы хранения
Вы можете изменить местоположение группы магазинов, используя следующий синтаксис:
Синтаксис : [Чтобы переместить группу хранения из старого местоположения в новое местоположение]
db2 alter stogroupadd ‘location’, ‘location’
Пример : [Чтобы изменить путь расположения из старого расположения в новое расположение для группы хранения с именем ‘sg1’]
db2 alter stogroup sg1 add ‘/path/data3’, ‘/path/data4’
Удаление пути к папке группы хранения
Перед удалением пути к папке группы хранения вы можете добавить новое расположение для группы хранения с помощью команды alter.
Синтаксис : [Чтобы удалить старый путь из расположения группы хранения]
db2 alter stogroupdrop ‘/path’
Пример : [Чтобы удалить местоположение группы хранения из ‘stg1’]
db2 alter stogroup stg1 drop ‘/path/data1’
Перебалансировка табличного пространства
Перебалансировка табличного пространства требуется, когда мы создаем новую папку для группы хранения или табличных пространств, когда транзакции выполняются в базе данных, и табличное пространство заполняется. Перебалансировка обновляет файлы конфигурации базы данных с новой группой хранения.
Синтаксис : [Чтобы сбалансировать табличное пространство от старого пути группы хранения к новой группе хранения]
db2 alter tablspace <ts_name> rebalance
Пример : [Чтобы сбалансировать]
db2 alter tablespace ts1 rebalance
Переименование группы хранения
Синтаксис : [Чтобы изменить имя существующего имени хранилища]
db2 rename stogroup <old_stg_name> to <new_stg_name>
Пример : [Чтобы изменить имя группы хранения с ‘sg1’ на новое имя ‘sgroup1’]
db2 rename stogroup sg1 to sgroup1
Удаление группы хранения
Шаг 1 : Перед удалением любой группы хранения вы можете назначить другую табличную группу для табличных пространств.
Синтаксис : [Чтобы назначить другую группу хранения для табличного пространства.]
db2 alter tablspace <ts_name> using stogroup <another sto_group_name>
Пример : [Чтобы изменить одну стогруппу на новую стогруппу с именем ‘sg2’ для табличного пространства ‘ts1’]
db2 alter tablespace ts1 using stogroup sg2
Шаг 2:
Синтаксис : [Чтобы удалить существующую группу)
db2 drop stogorup <stogroup_name>
Пример : [Чтобы удалить строгруппу ‘stg1’ из базы данных]
db2 drop stogroup stg1
Схемы DB2
Эта глава знакомит и описывает концепцию схемы.
Вступление
Схема — это коллекция именованных объектов, классифицированных логически в базе данных.
В базе данных вы не можете создать несколько объектов базы данных с одним и тем же именем. Для этого в схеме предусмотрена групповая среда. Вы можете создать несколько схем в базе данных, и вы можете создать несколько объектов базы данных с одним и тем же именем, с разными группами схем.
Схема может содержать таблицы, функции, индексы, табличные пространства, процедуры, триггеры и т. Д. Например, вы создаете две разные схемы с именами «Professional» и «Personal» для базы данных «employee». Можно составить две разные таблицы с одним и тем же именем «Сотрудник». В этой среде одна таблица содержит профессиональную информацию, а другая — личную информацию сотрудника. Несмотря на наличие двух таблиц с одинаковыми именами, они имеют две разные схемы «Личная» и «Профессиональная». Следовательно, пользователь может работать с обоими без каких-либо проблем. Эта функция полезна, когда существуют ограничения на именование таблиц.
Давайте посмотрим несколько команд, связанных со схемой:
Получение текущей активной схемы
Синтаксис:
db2 get schema
Пример : [Чтобы получить текущую схему базы данных]
db2 get schema
Установка другой схемы для текущей среды
Синтаксис:
db2 set schema=<schema_name>
Пример : [Чтобы разместить ‘schema1’ в текущей среде экземпляра]
db2 set schema=schema1
Создание новой схемы
Синтаксис : [Для создания новой схемы с идентификатором авторизованного пользователя]
db2 create schema <schema_name> authroization <inst_user>
Пример : [Чтобы создать схему «schema1», авторизованную с помощью «db2inst2»]
db2 create schema schema1 authorization db2inst2
Упражнение
Давайте создадим две разные таблицы с одинаковыми именами, но с двумя разными схемами. Здесь вы создаете таблицу сотрудников с двумя разными схемами, одну для личной и другой для профессиональной информации.
Шаг 1 : Создайте две схемы.
Схема 1 : [Для создания схемы с именем Professional]
db2 create schema professional authorization db2inst2
Схема 2 : [Для создания схемы с именем personal]
db2 create schema personal authorization db2inst2
Шаг 2. Создайте две таблицы с одинаковым именем для сведений о сотруднике.
Table1 : professional.employee
[Создать новую таблицу ’employee’ в базе данных, используя схему с именем ‘professional’]
db2 create table professional.employee(id number, name varchar(20), profession varchar(20), join_date date, salary number);
Table2 : personal.employee
[Создать новую таблицу ’employee’ в той же базе данных с именем схемы ‘personal’]
db2 create table personal.employee(id number, name varchar(20), d_birth date, phone bigint, address varchar(200));
Выполнив эти шаги, вы получите две таблицы с одинаковым именем ’employee’, с двумя разными схемами.
Типы данных DB2
В этой главе представлены различные типы данных, используемые в DB2.
Вступление
В таблицах базы данных DB2 каждый столбец имеет свой собственный тип данных в зависимости от требований разработчика. Тип данных называется типом и диапазоном значений в столбцах таблицы.
Встроенные типы данных
- Datetime
- ВРЕМЯ : представляет время дня в часах, минутах и секундах.
- TIMESTAMP : представляет семь значений даты и времени в форме года, месяца, дня, часов, минут, секунд и микросекунд.
- ДАТА : представляет дату дня в трех частях в виде года, месяца и дня.
- строка
- символ
- CHAR (фиксированная длина) : фиксированная длина строки символов.
- Варьируемая длина
- VARCHAR : символьные строки переменной длины.
- CLOB : строки больших объектов, вы используете это, когда строка символов может превысить пределы типа данных VARCHAR.
- графический
- ГРАФИКА
- Фиксированная длина : графическая строка фиксированной длины, которая содержит двухбайтовые символы
- Варьируемая длина
- VARGRAPHIC : графическая строка с изменяющимися символами, которая содержит двойные символы.
- DBCLOB : тип большого объекта
- двоичный
- BLOB (различной длины): двоичная строка в большом объекте
- BOOLEAN : в форме 0 и 1.
- Числовой подпись
- точная
- Двоичное целое число
- SMALLINT [16BIT] : с его помощью вы можете вставить небольшие значения int в столбцы
- INTEGER [32BIT] : С его помощью вы можете вставлять большие значения int в столбцы
- BIGINT [64BIT] : с его помощью вы можете вставлять большие значения int в столбцы
- Десятичный
- ДЕЦИМАЛЬНЫЙ (упакованный)
- DECFLOAT (десятичная с плавающей запятой): Используя это, вы можете вставить десятичные числа с плавающей запятой
- приближенный
- Плавающие точки
- REAL (одинарная точность): используя этот тип данных, вы можете вставлять числа с плавающей запятой одинарной точности.
- DOUBLE (двойная точность): используя этот тип данных, вы можете вставлять числа с плавающей запятой двойной точности.
- расширяемый язык разметки
- XML : Вы можете хранить данные XML в этом столбце типа данных.
Таблицы DB2
Таблицы представляют собой логическую структуру, поддерживаемую менеджером баз данных. В таблице каждый вертикальный блок называется столбцом (Tuple), а каждый горизонтальный блок называется строкой (Entity). Коллекция данных, хранящихся в форме столбцов и строк, называется таблицей. В таблицах каждый столбец имеет различный тип данных. Таблицы используются для хранения постоянных данных.
Тип столов
- Базовые таблицы : они содержат постоянные данные. Существуют различные виды базовых таблиц, в том числе:
- Обычные таблицы : таблицы общего назначения, общие таблицы с индексами — это таблицы общего назначения.
- Таблица многомерных кластеров (MDC) . Этот тип таблиц физически сгруппирован по нескольким ключам и используется для поддержки сред больших баз данных. Таблицы такого типа не поддерживаются в DB2 pureScale.
- Таблица кластеризации по времени вставки (ITC) . Подобно таблицам MDC, строки кластеризуются по времени, когда они вставляются в таблицы. Они могут быть секционированными таблицами. Они тоже не поддерживают среду pureScale.
- Таблица с кластеризацией по диапазону (RCT) : таблицы этого типа обеспечивают быстрый и прямой доступ к данным. Они реализованы в виде последовательных кластеров. Каждая запись в таблице имеет идентификатор записи. Таблицы такого типа используются, когда данные плотно кластеризованы с одним или несколькими столбцами в таблице. Таблицы этого типа также не поддерживаются в DB2 pureScale.
- Секционированные таблицы : Таблицы этого типа используются в схеме организации данных, в которой данные таблицы делятся на несколько объектов хранения. Разделы данных могут быть добавлены, присоединены и отделены от многораздельной таблицы. Вы можете хранить несколько разделов данных из таблицы в одном табличном пространстве.
- Временные таблицы : история таблицы в базе данных хранится во временных таблицах, таких как детали ранее сделанных изменений.
- Временные таблицы : для временной работы различных операций с базой данных вам необходимо использовать временные таблицы. Временные таблицы (DGTT) не отображаются в системном каталоге, столбцы XML нельзя использовать в созданных временных таблицах.
- Материализованные таблицы запросов : MQT можно использовать для повышения производительности запросов. Эти типы таблиц определяются запросом, который используется для определения данных в таблицах.
Создание таблиц
Следующий синтаксис создает таблицу:
Синтаксис : [Создать новую таблицу]
db2 create table <schema_name>.<table_name> (column_name column_type....) in <tablespace_name>
Пример : мы создаем таблицу для хранения данных «сотрудника» в схеме «профессионал». Эта таблица имеет поля «id, name, jobrole, joindate, salary», и данные этой таблицы будут храниться в табличном пространстве «ts1».
db2 create table professional.employee(id int, name varchar(50),jobrole varchar(30),joindate date, salary double) in ts1
Выход:
DB20000I The SQL command completed successfully.
Детали таблицы
Следующий синтаксис используется для перечисления деталей таблицы:
Синтаксис : [Чтобы увидеть список таблиц, созданных со схемами]
db2 select tabname, tabschema, tbspace from syscat.tables
Пример : [Чтобы увидеть список таблиц в текущей базе данных]
db2 select tabname, tabschema, tbspace from syscat.tables
Выход:
TABNAME TABSCHEMA TBSPACE ------------ ------------- -------- EMPLOYEE PROFESSIONAL TS1 1 record(s) selected.
Список столбцов в таблице
Следующий синтаксис перечисляет столбцы в таблице:
Синтаксис : [Чтобы увидеть столбцы и типы данных таблицы]
db2 describe table <table_name>
Пример : [Чтобы увидеть столбцы и типы данных таблицы ’employee’]
db2 describe table professional.employee
Выход:
Data type Column Column name schema Data type name Length Scale Nulls ------ ----- --------- ----------------- --------- ----- ------ ID SYSIBM INTEGER 4 0 Yes NAME SYSIBM VARCHAR 50 0 Yes JOBROLE SYSIBM VARCHAR 30 0 Yes JOINDATE SYSIBM DATE 4 0 Yes SALARY SYSIBM DOUBLE 8 0 Yes 5 record(s) selected.
Скрытые колонны
Вы можете скрыть весь столбец таблицы. Если вы вызываете запрос «выбрать * из», скрытые столбцы не возвращаются в результирующей таблице. Когда вы вставляете данные в таблицу, оператор «INSERT» без списка столбцов не ожидает значений для неявно скрытых столбцов. На столбцы этого типа часто ссылаются в материализованных таблицах запросов. Столбцы такого типа не поддерживают создание временных таблиц.
Создание таблицы со скрытым столбцом
Следующий синтаксис создает таблицу со скрытыми столбцами:
Синтаксис : [Создать таблицу со скрытыми столбцами]
db2 create table <tab_name> (col1 datatype,col2 datatype implicitly hidden)
Пример : [Чтобы создать таблицу ‘customer’ со скрытыми столбцами ‘phone’]
db2 create table professional.customer(custid integer not null, fullname varchar(100), phone char(10) implicitly hidden)
Вставка значений данных в таблицу
Следующий синтаксис вставляет значения в таблицу:
Синтаксис : [Вставить значения в таблицу]
db2 insert into <tab_name>(col1,col2,...) values(val1,val2,..)
Пример : [Вставить значения в таблицу ‘customer’]
db2 insert into professional.customer(custid, fullname, phone) values(100,'ravi','9898989') db2 insert into professional.customer(custid, fullname, phone) values(101,'krathi','87996659') db2 insert into professional.customer(custid, fullname, phone) values(102,'gopal','768678687')
Выход:
DB20000I The SQL command completed successfully.
Получение значений из таблицы
Следующий синтаксис извлекает значения из таблицы:
Синтаксис : [Чтобы получить значения из таблицы]
db2 select * from <tab_name>
Пример : [Чтобы получить значения из таблицы ‘customer’]
db2 select * from professional.customer
Выход:
CUSTID FULLNAME ----------- ------------------------ 100 ravi 101 krathi 102 gopal 3 record(s) selected.
Получение значений из таблицы, включая скрытые столбцы
Следующий синтаксис извлекает значения из выбранных столбцов:
Синтаксис : [Извлечение значений выбранных скрытых столбцов из таблицы]
db2 select col1,col2,col3 from <tab_name>
Пример : [Извлечение значений выбранных столбцов из таблицы]
db2 select custid,fullname,phone from professional.customer
Выход:
CUSTID FULLNAME PHONE ------- --------- ------------ 100 ravi 9898989 101 krathi 87996659 102 gopal 768678687 3 record(s) selected.
Если вы хотите увидеть данные в скрытых столбцах, вам нужно выполнить команду «DESCRIBE».
Синтаксис :
db2 describe table <table_name> show detail
Пример:
db2 describe table professional.customer show detail
Выход:
Column name Data type schema Data type name Column column Partitionkey code Length Scale Nulls number sequence page Hidden Default --------------- -------------------- --------------- -------- ---- ---- -------- ---------- ------------- -------- ----------- ------ --- CUSTID SYSIBM INTEGER 4 0 No 0 0 0 No FULLNAME SYSIBM VARCHAR 100 0 Yes 1 0 1208 No PHONE SYSIBM CHARACTER 10 0 Yes 2 0 1208 Implicitly 3 record(s) selected.
Изменение типа столбцов таблицы
Вы можете изменить нашу структуру таблицы, используя эту команду «alter» следующим образом:
Синтаксис :
db2 alter table <tab_name> alter column <col_name> set data type <data_type>
Пример: [Чтобы изменить тип данных для столбца «id» с «int» на «bigint» для таблицы сотрудников]
db2 alter table professional.employee alter column id set data type bigint
Выход :
DB20000I The SQL command completed successfully.
Изменение названия столбца
Вы можете изменить имя столбца, как показано ниже:
Синтаксис : [Чтобы изменить имя столбца со старого имени на новое имя таблицы]
db2 alter table <tab_name> rename column <old_name> to <new_name>
Пример: [Чтобы изменить имя столбца с «полное имя» на «имя пользователя» в таблице «клиенты».]
db2 alter table professional.customer rename column fullname to custname
Отбрасывать столы
Чтобы удалить любую таблицу, вам нужно использовать команду «DROP» следующим образом:
Синтаксис :
db2 drop table <tab_name>
Пример: [Чтобы удалить базу данных из таблицы клиентов]
db2 drop table professional.customers
Чтобы удалить всю иерархию таблицы (включая триггеры и отношения), вам нужно использовать команду «DROP TABLE HIERARCHY».
Синтаксис :
db2 drop table hierarchy <tab_name>
Пример: [Чтобы удалить всю иерархию таблицы ‘customer’]
db2 drop table hierarchy professional.customers
DB2 Alias
В этой главе описывается создание псевдонима и извлечение данных с использованием псевдонима объектов базы данных.
Вступление
Псевдоним — это альтернативное имя для объектов базы данных. Может использоваться для ссылки на объект базы данных. Вы можете сказать, что это псевдоним для объектов базы данных. Псевдонимы определены для объектов, чтобы их имена были короткими, тем самым уменьшая размер запроса и увеличивая читаемость запроса.
Создание псевдонимов объектов базы данных
Вы можете создать псевдоним объекта базы данных, как показано ниже:
Синтаксис :
db2 create alias <alias_name> for <table_name>
Пример : создание псевдонима для таблицы «professional.customer»
db2 create alias pro_cust for professional.customer
Если вы передадите «SELECT * FROM PRO_CUST» или «SELECT * FROM PROFESSIONAL.CUSTOMER», сервер базы данных покажет тот же результат.
Синтаксис : [Извлечение значений из таблицы напрямую с именем схемы]
db2 select * from <schema_name>.<table_name>
Пример : [Извлечь значения из таблицы customer]
db2 select * from professional.customer
Выход:
CUSTID FULLNAME PHONE ------- --------- ------------ 100 ravi 9898989 101 krathi 87996659 102 gopal 768678687 3 record(s) selected.
Получение значений с использованием псевдонима таблицы
Вы можете извлечь значения из базы данных, используя псевдоним, как показано ниже:
Синтаксис : [Чтобы извлечь значения из таблицы, вызвав псевдоним таблицы]
db2 select * from <alias_name>
Пример : [Чтобы получить значения из таблицы customer, используя псевдоним]
db2 select * from pro_cust
Выход:
CUSTID FULLNAME PHONE ------- --------- ------------ 100 ravi 9898989 101 krathi 87996659 102 gopal 768678687 3 record(s) selected.
Ограничения DB2
Эта глава описывает различные ограничения в базе данных.
Вступление
Для обеспечения целостности базы данных определен набор правил, называемых ограничениями. Ограничения разрешают или запрещают значения в столбцах.
При работе с базой данных в реальном времени данные должны быть добавлены с определенными ограничениями. Например, в базе данных продаж идентификатор продаж или идентификатор транзакции должны быть уникальными. Типы ограничений:
- НЕНУЛЕВОЙ
- уникальный
- Основной ключ
- Иностранный ключ
- Проверьте
- информационный
Ограничения связаны только с таблицами. Они применяются только к конкретным таблицам. Они определяются и применяются к таблице во время создания таблицы.
Объяснение каждого ограничения:
НЕНУЛЕВОЙ
Это правило запрещает нулевые значения из одного или нескольких столбцов в таблице.
Синтаксис:
db2 create table <table_name>(col_name col_type not null,..)
Пример : [Чтобы создать таблицу продаж с четырьмя столбцами (id, itemname, qty, price), добавив ограничения «not null» для всех столбцов, чтобы избежать образования нулевой ячейки в таблице.]
db2 create table shopper.sales(id bigint not null, itemname varchar(40) not null, qty int not null,price double not null)
Вставка значений NOT NULL в таблицу
Вы можете вставить значения в таблицу, как показано ниже:
Пример: [ERRORoneous Query]
db2 insert into shopper.sales(id,itemname,qty) values(1,'raagi',12)
Вывод: [правильный запрос]
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0407N Assignment of a NULL value to a NOT NULL column "TBSPACEID=5, TABLEID=4, COLNO=3" is not allowed. SQLSTATE=23502
Пример: [Правильный запрос]
db2 insert into shopper.sales(id,itemname,qty,price) values(1,'raagi',12, 120.00) db2 insert into shopper.sales(id,itemname,qty,price) values(1,'raagi',12, 120.00)
Выход:
DB20000I The SQL command completed successfully.
Уникальные ограничения
Используя эти ограничения, вы можете установить значения столбцов уникальным образом. Для этого уникальные ограничения объявляются с ограничением «не ноль» во время создания таблицы.
Синтаксис:
db2 create table <tab_name>(<col> <col_type> not null unique, ...)
Пример:
db2 create table shopper.sales1(id bigint not null unique, itemname varchar(40) not null, qty int not null,price double not null)
Вставка значений в таблицу
Пример: для вставки четырех разных строк с уникальными идентификаторами 1, 2, 3 и 4.
db2 insert into shopper.sales1(id, itemname, qty, price) values(1, 'sweet', 100, 89) db2 insert into shopper.sales1(id, itemname, qty, price) values(2, 'choco', 50, 60) db2 insert into shopper.sales1(id, itemname, qty, price) values(3, 'butter', 30, 40) db2 insert into shopper.sales1(id, itemname, qty, price) values(4, 'milk', 1000, 12)
Пример: вставить новую строку со значением «id» 3
db2 insert into shopper.sales1(id, itemname, qty, price) values(3, 'cheese', 60, 80)
Вывод : при попытке вставить новую строку с существующим значением идентификатора будет показан следующий результат:
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0803N One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "1" constrains table "SHOPPER.SALES1" from having duplicate values for the index key. SQLSTATE=23505
Основной ключ
Подобно ограничениям уникальности, вы можете использовать ограничения «первичный ключ» и «внешний ключ» для объявления отношений между несколькими таблицами.
Синтаксис:
db2 create table <tab_name>(,.., primary key ())
Пример : для создания таблицы «salesboys» с «sid» в качестве первичного ключа
db2 create table shopper.salesboys(sid int not null, name varchar(40) not null, salary double not null, constraint pk_boy_id primary key (sid))
Иностранный ключ
Внешний ключ — это набор столбцов в таблице, которые должны соответствовать по крайней мере одному первичному ключу строки в другой таблице. Это ссылочное ограничение или ограничение ссылочной целостности. Это логическое правило для значений в нескольких столбцах одной или нескольких таблиц. Это обеспечивает необходимые отношения между таблицами.
Ранее вы создали таблицу с именем «shopper.salesboys». Для этой таблицы первичным ключом является «sid». Теперь вы создаете новую таблицу с личными данными продавца с другой схемой с именем «работник» и таблицей с именем «продавец». В этом случае «sid» является внешним ключом.
Синтаксис:
db2 create table <tab_name>(<col> <col_type>,constraint <const_name> foreign key (<col_name>) reference <ref_table> (<ref_col>)
Пример : [Чтобы создать таблицу с именем ‘salesboys’ со столбцом внешнего ключа ‘sid’]
db2 create table employee.salesboys( sid int, name varchar(30) not null, phone int not null, constraint fk_boy_id foreign key (sid) references shopper.salesboys (sid) on delete restrict )
Пример : [Вставка значений в таблицу первичных ключей «shopper.salesboys»]
db2 insert into shopper.salesboys values(100,'raju',20000.00), (101,'kiran',15000.00), (102,'radha',10000.00), (103,'wali',20000.00), (104,'rayan',15000.00)
Пример : [Вставка значений в таблицу внешнего ключа «employee.salesboys» [без ошибки]]
db2 insert into employee.salesboys values(100,'raju',98998976), (101,'kiran',98911176), (102,'radha',943245176), (103,'wali',89857330), (104,'rayan',89851130)
Если вы ввели неизвестный номер, который не хранится в таблице «shopper.salesboys», он покажет вам ошибку SQL.
Пример : [ошибка выполнения]
db2 insert into employee.salesboys values(105,'rayan',89851130)
Выход:
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0530N The insert or update value of the FOREIGN KEY "EMPLOYEE.SALESBOYS.FK_BOY_ID" is not equal to any value of the parent key of the parent table. SQLSTATE=23503
Проверка ограничения
Вам нужно использовать это ограничение, чтобы добавить условные ограничения для определенного столбца в таблице.
Синтаксис:
db2 create table( primary key ( ), constraint check (condition or condition) )
Пример : [Создать таблицу emp1 со значениями ограничений]
db2 create table empl (id smallint not null, name varchar(9), dept smallint check (dept between 10 and 100), job char(5) check (job in ('sales', 'mgr', 'clerk')), hiredate date, salary decimal(7,2), comm decimal(7,2), primary key (id), constraint yearsal check (year(hiredate) > 1986 or salary > 40500) )
Вставка значений
Вы можете вставить значения в таблицу, как показано ниже:
db2 insert into empl values (1,'lee', 15, 'mgr', '1985-01-01' , 40000.00, 1000.00)
Отбрасывание ограничения
Давайте посмотрим синтаксис для отбрасывания различных ограничений.
Отбрасывание УНИКАЛЬНОГО ограничения
Синтаксис:
db2 alter table <tab_name> drop unique <const_name>
Отбрасывание первичного ключа
Синтаксис:
db2 alter table <tab_name> drop primary key
Отбросить проверочное ограничение
Синтаксис:
db2 alter table <tab_name> drop check <check_const_name>
Отбрасывание внешнего ключа
Синтаксис:
db2 alter table <tab_name> drop foreigh key <foreign_key_name>
Индексы DB2
Эта глава охватывает введение в индексы, их типы, создание и удаление.
Вступление
Индекс — это набор указателей, которые могут ссылаться на строки в таблице, блоки в таблицах MDC или ITC, данные XML в объекте хранения XML, которые логически упорядочены по значениям одного или нескольких ключей. Он создается в столбцах таблицы DB2 для ускорения доступа к данным для запросов, а также для эффективной кластеризации и разделения данных. Это также может улучшить производительность работы на представлении. Таблица с уникальным индексом может иметь строки с уникальными ключами. В зависимости от требований к таблице вы можете использовать разные типы индексов.
Типы указателей
- Уникальные и неуникальные индексы
- Кластерные и некластеризованные индексы
Создание индексов
Для создания уникальных индексов вы используете следующий синтаксис:
Синтаксис:
db2 create unique index <index_name> on <table_name>(<unique_column>) include (<column_names..>)
Пример : создать индекс для таблицы «shopper.sales1».
db2 create unique index sales1_indx on shopper.sales1(id) include (itemname)
Сбрасывание индексов
Для удаления индекса вы используете следующий синтаксис:
Синтаксис:
db2 create unique index <index_name> on <table_name>(<unique_column>) include (<column_names..>)
Пример:
db2 drop index sales_index
Триггеры DB2
В этой главе описываются триггеры, их типы, создание и удаление триггеров.
Вступление
Триггер — это набор действий, которые выполняются для ответа на операцию INSERT, UPDATE или DELETE для указанной таблицы в базе данных. Триггеры хранятся в базе данных сразу. Они управляют управлением данными. Они могут быть доступны и доступны для нескольких приложений. Преимущество использования триггеров состоит в том, что если в приложении необходимо внести какие-либо изменения, это делается в триггере; вместо изменения каждого приложения, которое обращается к триггеру. Триггеры просты в обслуживании и обеспечивают более быструю разработку приложений. Триггеры определяются с помощью оператора SQL «CREATE TRIGGER».
Типы триггеров
Есть два типа триггеров:
1. ДО триггеров
Они выполняются перед любой операцией SQL.
2. ПОСЛЕ триггеров
Они выполняются после любой операции SQL.
Создание ПЕРЕД триггером
Давайте посмотрим, как создать последовательность триггера:
Синтаксис:
db2 create sequence <seq_name>
Пример : создание последовательности триггеров для таблицы shopper.sales1
db2 create sequence sales1_seq as int start with 1 increment by 1
Синтаксис:
db2 create trigger <trigger_name> no cascade before insert on <table_name> referencing new as <table_object> for each row set <table_object>.<col_name>=nextval for <sequence_name>
Пример : создание триггера для таблицы shopper.sales1 для автоматической вставки номеров первичных ключей
db2 create trigger sales1_trigger no cascade before insert on shopper.sales1 referencing new as obj for each row set obj.id=nextval for sales1_seq
Теперь попробуйте вставить любые значения:
db2 insert into shopper.sales1(itemname, qty, price) values('bicks', 100, 24.00)
Получение значений из таблицы
Давайте посмотрим, как получить значения из таблицы:
Синтаксис:
db2 select * from <tablename>
Пример :
db2 select * from shopper.sales1
Выход :
ID ITEMNAME QTY ------- ------------ ---------- 3 bicks 100 2 bread 100 2 record(s) selected.
Создание триггера ПОСЛЕ
Давайте посмотрим, как создать триггер после:
Синтаксис:
db2 create trigger <trigger_name> no cascade before insert on <table_name> referencing new as <table_object> for each row set <table_object>.<col_name>=nextval for <sequence_name>
Пример: [Вставить и получить значения]
db2 create trigger sales1_tri_after after insert on shopper.sales1 for each row mode db2sql begin atomic update shopper.sales1 set price=qty*price; end
Выход:
//inseting values in shopper.sales1 db2 insert into shopper.sales1(itemname,qty,price) values('chiken',100,124.00) //output ID ITEMNAME QTY PRICE ----- -------------- ----------- ----------- 3 bicks 100 2400.00 4 chiken 100 12400.00 2 bread 100 2400.00 3 record(s) selected.
Отпустить курок
Вот как сбрасывается триггер базы данных:
Синтаксис:
db2 drop trigger <trigger_name>
Пример:
db2 drop trigger slaes1_trigger
DB2 — последовательности
Эта глава знакомит вас с концепцией последовательности, созданием последовательности, просмотром последовательности и удалением их.
Вступление
Последовательность — это программная функция, которая генерирует целые числа в возрастающем или убывающем порядке в пределах определенного диапазона для генерации первичного ключа и координации других ключей в таблице. Вы используете последовательность для использования целых чисел, скажем, для employee_id илиaction_id. Последовательность может поддерживать типы данных SMALLINT, BIGINT, INTEGER и DECIMAL. Последовательность может быть разделена между несколькими приложениями. Последовательность увеличивается или уменьшается независимо от транзакций.
Последовательность создается оператором CREATE SEQUENCE.
Типы последовательностей
Доступны два типа последовательностей:
-
NEXTVAL : возвращает увеличенное значение для порядкового номера.
-
ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ : Возвращает недавно сгенерированное значение.
NEXTVAL : возвращает увеличенное значение для порядкового номера.
ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ : Возвращает недавно сгенерированное значение.
Параметры последовательностей
Следующие параметры используются для последовательностей:
Тип данных : это тип данных возвращенного увеличенного значения. (МАЛЕНЬКИЙ, БОЛЬШОЙ, ЦЕЛЫЙ, НОМЕР, ДВОЙНОЙ)
НАЧАТЬ С : ссылочное значение, с которого начинается последовательность.
MINVALUE : минимальное значение для начала последовательности.
MAXVALUE : максимальное значение для последовательности.
INCREMENT BY : значение шага, на которое увеличивается последовательность.
Цикл последовательности : предложение CYCLE вызывает генерацию последовательности несколько раз. Генерация последовательности осуществляется путем обращения к возвращенному значению, которое сохраняется в базе данных предыдущей генерацией последовательности.
Создание последовательности
Вы можете создать последовательность, используя следующий синтаксис:
Синтаксис:
db2 create sequence <seq_name>
Пример : [Создать новую последовательность с именем ‘sales1_seq’ и увеличением значений от 1]
db2 create sequence sales1_seq as int start with 1 increment by 1
Просмотр последовательностей
Вы можете просмотреть последовательность, используя синтаксис, приведенный ниже:
Синтаксис:
db2 value <previous/next> value for <seq_name>
Пример : [Чтобы увидеть список предыдущих обновленных значений в последовательности ‘sales1_seq’]
db2 values previous value for sales1_seq
Выход:
1 ----------- 4 1 record(s) selected.
Отбрасывание последовательности
Чтобы удалить последовательность, вам нужно использовать «DROP SEQUENCE»
Синтаксис:
db2 drop sequence <seq_name>>
Пример : [Удалить последовательность ‘sales1_seq’ из базы данных]
db2 drop sequence sales1_seq
Выход:
DB20000I The SQL command completed successfully.
DB2 Views
В этой главе описывается введение представлений, создание, изменение и удаление представлений.
Вступление
Представление — это альтернативный способ представления данных, хранящихся в таблицах. Это не фактическая таблица, и у нее нет постоянного хранилища. Представление позволяет просматривать данные в одной или нескольких таблицах. Это именованная спецификация таблицы результатов.
Создание вида
Вы можете создать представление, используя следующий синтаксис:
Синтаксис:
db2 create view <view_name> (<col_name>, <col_name1...) as select <cols>.. from <table_name>
Пример : создание представления для таблицы shopper.sales1
db2 create view view_sales1(id, itemname, qty, price) as select id, itemname, qty, price from shopper.sales1
Изменение вида
Вы можете изменить представление, используя следующий синтаксис:
Синтаксис:
db2 alter view <view_name> alter <col_name> add scope <table_or_view_name>
Пример : [Добавить новый столбец таблицы в существующее представление ‘view_sales1’]
db2 alter view view_sales1 alter id add scope shopper.sales1
Отбрасывание зрения
Вы можете удалить представление, используя следующий синтаксис:
Синтаксис:
db2 drop view <view_name>
Пример:
db2 drop view sales1_view
DB2 с XML
В этой главе описывается использование XML с DB2.
Вступление
Функция PureXML позволяет хранить правильно сформированные документы XML в столбцах таблиц базы данных. Эти столбцы имеют базу данных XML. Данные хранятся в своей исходной иерархической форме, сохраняя данные XML в столбце XML. Хранимые данные XML могут быть доступны и управляться функциями сервера баз данных DB2. Хранение XML-данных в их собственной иерархической форме обеспечивает эффективный поиск, поиск и обновление XML. Чтобы обновить значение в данных XML, вам нужно использовать XQuery, SQL или их комбинацию.
Создание базы данных и таблицы для хранения данных XML
Создайте базу данных, введя следующий синтаксис:
Синтаксис:
db2 create database xmldb
По умолчанию базы данных используют кодовый набор UTF-8 (UNICODE). Активируйте базу данных и подключитесь к ней:
Синтаксис:
db2 activate db <db_name> db2 connect to <db_name>
Пример:
db2 activate db xmldb
db2 connect to xmldb
Создайте правильно сформированный файл XML и создайте таблицу с типом данных столбца как «XML». Обязательно передавать SQL-запрос, содержащий синтаксис XML, в двойных кавычках.
Синтаксис:
db2 “create table <schema>.<table>(col <datatype>, col <xml datatype>)”
Пример:
db2 "create table shope.books(id bigint not null primary key, book XML)"
Вставьте значения XML в таблицу, правильно сформированные документы XML вставляются в столбец типа XML с помощью оператора SQL «INSERT».
Синтаксис:
db2 “insert into <table_name> values(value1, value2)”
Пример:
db2 "insert into shope.books values(1000, '<catalog> <book> <author> Gambardella Matthew</author> <title>XML Developers Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating application with XML</description> </book> </catalog>')"
Обновление данных XML в таблице
Вы можете обновить данные XML в таблице, используя следующий синтаксис:
Синтаксис:
db2 “update <table_name> set <column>=<value> where <column>=<value>”
Пример:
db2 "update shope.books set book='<catalog> <book> <author> Gambardella, Matthew</author> <title>XML Developers Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth XML</description> </book> </catalog>' where id=1000"
DB2 — Резервное копирование и восстановление
В этой главе описываются методы резервного копирования и восстановления базы данных.
Вступление
Методы резервного копирования и восстановления предназначены для обеспечения безопасности нашей информации. В интерфейсе командной строки (CLI) или графическом интерфейсе пользователя (GUI) с помощью утилит резервного копирования и восстановления вы можете выполнять резервное копирование или восстановление данных баз данных в DB2 UDB.
логирование
Файлы журнала состоят из журналов ошибок, которые используются для восстановления после ошибок приложения. В журналах ведется учет изменений в базе данных. Существует два типа регистрации, как описано ниже:
Круговая регистрация
Это метод, при котором старые журналы транзакций перезаписываются, когда возникает необходимость выделить новый файл журнала транзакций, тем самым стирая последовательности файлов журналов и используя их повторно. Вам разрешено делать только полное резервное копирование в автономном режиме. т.е. база данных должна быть в автономном режиме для полного резервного копирования.
Архивирование журнала
Этот режим поддерживает резервное копирование в онлайн-хранилище и восстановление базы данных с использованием файлов журналов, называемых восстановлением с повтором транзакций. Режим резервного копирования можно изменить с циклического на архивный, установив для logretain или userexit значение ON. Для ведения архива для базы данных параметров резервного копирования требуется каталог, доступный для записи для процесса DB2.
Резервное копирование
Используя команду Backup, вы можете получить копию всей базы данных. Эта резервная копия включает системные файлы базы данных, файлы данных, файлы журналов, управляющую информацию и так далее.
Вы можете сделать резервную копию, работая как в автономном режиме, так и в Интернете.
Автономное резервное копирование
Синтаксис: [Для отображения активных приложений / баз данных]
db2 list application
Выход:
Auth Id Application Appl. Application Id DB # of Name Handle Name Agents -------- -------------- ---------- --------------------- ----------------------------------------- -------- ----- DB2INST1 db2bp 39 *LOCAL.db2inst1.140722043938 ONE 1
Синтаксис: [Чтобы заставить приложение использовать приложение. Обработанный идентификатор]
db2 "force application (39)"
Выход:
DB20000I The FORCE APPLICATION command completed successfully. DB21024I This command is asynchronous and may not be effective immediately.
Синтаксис: [Чтобы разорвать соединение с базой данных]
db2 terminate
Синтаксис: [Деактивировать базу данных]
db2 deactivate database one
Синтаксис: [Взять файл резервной копии]
db2 backup database <db_name> to <location>
Пример:
db2 backup database one to /home/db2inst1/
Выход:
Backup successful. The timestamp for this backup image is : 20140722105345
Резервное копирование онлайн
Для начала вам нужно изменить режим с Циклического ведения журнала на Архивное ведение журнала .
Синтаксис: [Чтобы проверить, использует ли база данных циклическое или архивное ведение журнала]
db2 get db cfg for one | grep LOGARCH
Выход:
First log archive method (LOGARCHMETH1) = OFF Archive compression for logarchmeth1 (LOGARCHCOMPR1) = OFF Options for logarchmeth1 (LOGARCHOPT1) = Second log archive method (LOGARCHMETH2) = OFF Archive compression for logarchmeth2 (LOGARCHCOMPR2) = OFF Options for logarchmeth2 (LOGARCHOPT2) =
В приведенном выше выводе выделенными значениями являются [logarchmeth1 и logarchmeth2] в выключенном режиме, что означает, что текущая база данных находится в режиме «CIRCULLAR LOGGING». Если вам нужно работать с режимом «ARCHIVE LOGGING», вам нужно изменить или добавить путь в переменных logarchmeth1 и logarchmeth2, присутствующих в файле конфигурации.
Обновление logarchmeth1 с необходимым каталогом архива
Синтаксис: [Чтобы сделать каталоги]
mkdir backup mkdir backup/ArchiveDest
Синтаксис: [Чтобы предоставить пользователю права доступа к папке]
chown db2inst1:db2iadm1 backup/ArchiveDest
Синтаксис: [Чтобы обновить конфигурацию LOGARCHMETH1]
db2 update database configuration for one using LOGARCHMETH1 'DISK:/home/db2inst1/backup/ArchiveDest'
Вы можете сделать резервную копию в автономном режиме для безопасности, активировать базу данных и подключиться к ней.
Синтаксис: [Для резервного копирования в онлайн]
db2 backup database one online to /home/db2inst1/onlinebackup/ compress include logs
Выход:
db2 backup database one online to /home/db2inst1/onlinebackup/ compress include logs
Проверьте файл резервной копии, используя следующую команду:
Синтаксис:
db2ckbkp <location/backup file>
Пример:
db2ckbkp /home/db2inst1/ONE.0.db2inst1.DBPART000.20140722112743.001
Список истории файлов резервных копий
Синтаксис:
db2 list history backup all for one
Выход:
List History File for one Number of matching file entries = 4 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID -- --- ------------------ ---- --- ------------ ------------ -------------- B D 20140722105345001 F D S0000000.LOG S0000000.LOG ------------------------------------------------------------ ---------------- Contains 4 tablespace(s): 00001 SYSCATSPACE 00002 USERSPACE1 00003 SYSTOOLSPACE 00004 TS1 ------------------------------------------------------------ ---------------- Comment: DB2 BACKUP ONE OFFLINE Start Time: 20140722105345 End Time: 20140722105347 Status: A ------------------------------------------------------------ ---------------- EID: 3 Location: /home/db2inst1 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID -- --- ------------------ ---- --- ------------ ------------ -------------- B D 20140722112239000 N S0000000.LOG S0000000.LOG ------------------------------------------------------------ ------------------------------------------------------------- ------------------------------- Comment: DB2 BACKUP ONE ONLINE Start Time: 20140722112239 End Time: 20140722112240 Status: A ------------------------------------------------------------ ---------------- EID: 4 Location: SQLCA Information sqlcaid : SQLCA sqlcabc: 136 sqlcode: -2413 sqlerrml: 0 sqlerrmc: sqlerrp : sqlubIni sqlerrd : (1) 0 (2) 0 (3) 0 (4) 0 (5) 0 (6) 0 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID -- --- ------------------ ---- --- ------------ ------------ -------------- B D 20140722112743001 F D S0000000.LOG S0000000.LOG ------------------------------------------------------------ ---------------- Contains 4 tablespace(s): 00001 SYSCATSPACE 00002 USERSPACE1 00003 SYSTOOLSPACE 00004 TS1 ------------------------------------------------------------- ---------------- Comment: DB2 BACKUP ONE OFFLINE Start Time: 20140722112743 End Time: 20140722112743 Status: A ------------------------------------------------------------- ---------------- EID: 5 Location: /home/db2inst1 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID ------------------------------------------------------------- ---------------- R D 20140722114519001 F 20140722112743 ------------------------------------------------------------ ---------------- Contains 4 tablespace(s): 00001 SYSCATSPACE 00002 USERSPACE1 00003 SYSTOOLSPACE 00004 TS1 ------------------------------------------------------------ ---------------- Comment: RESTORE ONE WITH RF Start Time: 20140722114519 End Time: 20140722115015 Status: A ------------------------------------------------------------ ---------------- EID: 6 Location:
Восстановление базы данных из резервной копии
Чтобы восстановить базу данных из файла резервной копии, вам необходимо следовать заданному синтаксису:
Синтаксис:
db2 restore database <db_name> from <location> taken at <timestamp>
Пример:
db2 restore database one from /home/db2inst1/ taken at 20140722112743
Выход:
SQL2523W Warning! Restoring to an existing database that is different from the database on the backup image, but have matching names. The target database will be overwritten by the backup version. The Roll-forward recovery logs associated with the target database will be deleted. Do you want to continue ? (y/n) y DB20000I The RESTORE DATABASE command completed successfully.
Выполните откат всех журналов, расположенных в каталоге журналов, включая последние изменения непосредственно перед отказом дисковода.
Синтаксис:
db2 rollforward db <db_name> to end of logs and stop
Пример:
db2 rollforward db one to end of logs and stop
Выход:
Rollforward Status Input database alias = one Number of members have returned status = 1 Member ID = 0 Rollforward status = not pending Next log file to be read = Log files processed = S0000000.LOG - S0000001.LOG Last committed transaction = 2014-07-22- 06.00.33.000000 UTC DB20000I The ROLLFORWARD command completed successfully.
DB2 — Безопасность базы данных
Эта глава описывает безопасность базы данных.
Вступление
База данных и функции DB2 могут управляться двумя различными режимами контроля безопасности:
- Аутентификация
- авторизация
Аутентификация
Аутентификация — это процесс подтверждения того, что пользователь входит в систему только в соответствии с правами на выполнение действий, которые ему разрешено выполнять. Аутентификация пользователя может выполняться на уровне операционной системы или самой базы данных. Использование средств аутентификации для биометрических данных, таких как сетчатка и распечатки рисунков, используются для защиты базы данных от хакеров или злоумышленников.
Безопасность базы данных может управляться извне системы базы данных db2. Вот некоторый тип процесса аутентификации безопасности:
- Основано на аутентификации операционной системы.
- Облегченный протокол доступа к каталогам (LDAP)
Для DB2 служба безопасности является частью операционной системы как отдельный продукт. Для аутентификации требуются два различных учетных данных: идентификатор пользователя или имя пользователя и пароль.
авторизация
Вы можете получить доступ к базе данных DB2 и ее функциям в системе баз данных DB2, которая управляется менеджером баз данных DB2. Авторизация — это процесс, управляемый менеджером баз данных DB2. Менеджер получает информацию о текущем аутентифицированном пользователе, которая указывает, какую операцию базы данных пользователь может выполнить или получить к ней доступ.
Вот различные способы разрешений, доступных для авторизации:
Основное разрешение : предоставляет идентификатор авторизации напрямую.
Вторичное разрешение : Предоставляет группам и ролям, если пользователь является участником
Публичное разрешение : Предоставляет всем пользователям публично.
Контекстно-зависимое разрешение . Предоставляет доверенную контекстную роль.
Авторизация может быть предоставлена пользователям на основе категорий ниже:
- Авторизация на уровне системы
- Системный администратор [SYSADM]
- Управление системой [SYSCTRL]
- Обслуживание системы [SYSMAINT]
- Системный монитор [SYSMON]
Власти обеспечивают контроль над функциональностью уровня экземпляра. Полномочия предоставляют групповым привилегиям, контролировать обслуживание и полномочия операций. Например, база данных и объекты базы данных.
- Авторизация на уровне базы данных
- Администратор безопасности [SECADM]
- Администратор базы данных [DBADM]
- Контроль доступа [ACCESSCTRL]
- Доступ к данным [DATAACCESS]
- Администратор SQL. [SQLADM]
- Администратор управления рабочей нагрузкой [WLMADM]
- Объясните [ОБЪЯСНИТЬ]
Власти обеспечивают контроль в базе данных. Другие полномочия для базы данных включают с LDAD и CONNECT.
- Авторизация на уровне объекта. Авторизация на уровне объекта включает проверку привилегий при выполнении операции над объектом.
- Контентная авторизация . Пользователь может иметь доступ на чтение и запись к отдельным строкам и столбцам в конкретной таблице, используя управление доступом на основе меток [LBAC].
Таблицы и файлы конфигурации DB2 используются для записи разрешений, связанных с именами авторизации. Когда пользователь пытается получить доступ к данным, записанные разрешения проверяют следующие разрешения:
- Авторизационное имя пользователя
- Какая группа принадлежит пользователю
- Какие роли предоставляются непосредственно пользователю или косвенно группе
- Разрешения, полученные через доверенный контекст.
При работе с операторами SQL модель авторизации DB2 учитывает комбинацию следующих разрешений:
- Разрешения, предоставленные первичному идентификатору авторизации, связанному с операторами SQL.
- Вторичные идентификаторы авторизации, связанные с операторами SQL.
- Предоставлено ПУБЛИЧНО
- Предоставлено роли доверенного контекста.
Органы уровня инстанции
Давайте обсудим некоторые инстанции, связанные с властями.
Системный администратор (SYSADM)
Это административный орган высшего уровня на уровне экземпляра. Пользователи с полномочиями SYSADM могут выполнять некоторые базы данных и команды менеджера баз данных в экземпляре. Пользователи с полномочиями SYSADM могут выполнять следующие операции:
- Обновить базу данных
- Восстановить базу данных
- Обновить файл конфигурации менеджера баз данных.
Орган управления системой (SYSCTRL)
Это самый высокий уровень в системе контроля над системой. Он обеспечивает выполнение операций обслуживания и утилит в отношении экземпляра менеджера баз данных и его баз данных. Эти операции могут влиять на системные ресурсы, но они не разрешают прямой доступ к данным в базе данных.
Пользователи с полномочиями SYSCTRL могут выполнять следующие действия:
- Обновление базы данных, узла или каталога службы распределенного подключения (DCS)
- Вынуждение пользователей от системного уровня
- Создание или удаление уровня базы данных
- Создание, изменение или удаление табличного пространства
- Использование любого табличного пространства
- Восстановление базы данных
Центр обслуживания системы (SYSMAINT)
Это второй уровень управления системой. Он обеспечивает выполнение операций обслуживания и утилит в отношении экземпляра менеджера баз данных и его баз данных. Эти операции влияют на системные ресурсы, не позволяя прямой доступ к данным в базе данных. Эти полномочия предназначены для пользователей, чтобы поддерживать базы данных в экземпляре менеджера баз данных, который содержит конфиденциальные данные.
Только пользователи с полномочиями системы SYSMAINT или более высокого уровня могут выполнять следующие задачи:
- Принимая резервную копию
- Восстановление резервной копии
- Восстановление с повтором
- Запуск или остановка экземпляра
- Восстановление табличных пространств
- Выполнение команды db2trc
- Создание снимков системного монитора в случае пользователя уровня экземпляра или пользователя уровня базы данных.
Пользователь с SYSMAINT может выполнять следующие задачи:
- Запросить состояние табличного пространства
- Обновление файлов истории журнала
- Реорганизация таблиц
- Использование RUNSTATS (коллекция каталогов статистики)
Полномочия системного монитора (SYSMON)
С этими полномочиями пользователь может отслеживать или делать снимки экземпляра менеджера баз данных или его базы данных. Полномочия SYSMON позволяют пользователю выполнять следующие задачи:
- ПОЛУЧИТЕ ПЕРЕКЛЮЧАТЕЛИ БАЗЫ ДАННЫХ МЕНЕДЖЕРА
- ПОЛУЧИТЬ ПЕРЕКЛЮЧАТЕЛИ МОНИТОРА
- ПОЛУЧИТЬ СНЕЙШОТ
- СПИСОК
- СПИСОК АКТИВНЫХ БАЗ ДАННЫХ
- СПИСОК ПРИЛОЖЕНИЙ
- СПИСОК БАЗ ДАННЫХ
- СПИСОК ПРИЛОЖЕНИЙ DCS
- СПИСОК ПАКЕТОВ
- СПИСОК ТАБЛИЦ
- СПИСОК СТОЛОВЫХ КОНТЕЙНЕРОВ
- СПИСОК СТОЛОВ
- СПИСОК ПОЛЬЗОВАТЕЛЕЙ
- СБРОС МОНИТОРА
- ПЕРЕКЛЮЧАТЕЛИ МОНИТОРА ОБНОВЛЕНИЯ
База данных органов
Каждый орган базы данных содержит идентификатор авторизации для выполнения некоторых действий с базой данных. Эти полномочия базы данных отличаются от привилегий. Вот список некоторых органов управления базами данных:
ACCESSCTRL : позволяет предоставлять и отзывать все привилегии объекта и полномочия базы данных.
BINDADD : позволяет создать новый пакет в базе данных.
CONNECT : позволяет подключаться к базе данных.
CREATETAB : позволяет создавать новые таблицы в базе данных.
CREATE_EXTERNAL_ROUTINE : Позволяет создать процедуру, которая будет использоваться приложениями и пользователями баз данных.
DATAACCESS : позволяет получить доступ к данным, хранящимся в таблицах базы данных.
DBADM : выступать в роли администратора базы данных. Он предоставляет все остальные права доступа к базе данных, кроме ACCESSCTRL, DATAACCESS и SECADM.
ОБЪЯСНИТЬ : Позволяет объяснить планы запросов, не требуя от них обладания правами доступа к данным в таблицах.
IMPLICIT_SCHEMA : позволяет пользователю неявно создавать схему, создавая объект с помощью оператора CREATE.
LOAD : позволяет загружать данные в таблицу.
QUIESCE_CONNECT : позволяет получить доступ к базе данных, пока она находится в состоянии покоя (временно отключена).
SECADM : позволяет выступать в роли администратора безопасности для базы данных.
SQLADM : позволяет отслеживать и настраивать операторы SQL.
WLMADM : позволяет выступать в роли администратора рабочей нагрузки.
привилегии
SETSESSIONUSER
Привилегии ID авторизации включают действия с ID авторизации. Существует только одна привилегия, называемая привилегией SETSESSIONUSER. Он может быть предоставлен пользователю или группе и позволяет пользователю сеанса переключать идентификаторы на любой из идентификаторов авторизации, для которых предоставляются привилегии. Эта привилегия предоставляется полномочиями пользователя SECADM.
Схема привилегий
Эти привилегии включают действия над схемой в базе данных. Владелец схемы имеет все полномочия для управления объектами схемы, такими как таблицы, представления, индексы, пакеты, типы данных, функции, триггеры, процедуры и псевдонимы. Пользователь, группа, роль или PUBLIC могут быть предоставлены любому пользователю со следующими привилегиями:
- CREATEIN : позволяет создавать объекты в схеме
- ALTERIN : позволяет изменять объекты в схеме.
DROPIN
Это позволяет удалять объекты в схеме.
Привилегии табличного пространства
Эти привилегии включают действия с табличными пространствами в базе данных. Пользователю может быть предоставлена привилегия USE для табличных пространств. Затем привилегии позволяют им создавать таблицы в табличных пространствах. Владелец привилегии может предоставить привилегию USE с помощью команды WITH GRANT OPTION для табличного пространства при создании табличного пространства. А полномочия SECADM или ACCESSCTRL имеют разрешения на использование привилегий USE в табличном пространстве.
Привилегии таблиц и представлений
Пользователь должен иметь полномочия CONNECT для базы данных, чтобы иметь возможность использовать таблицы и просматривать привилегии. Привилегии для таблиц и представлений приведены ниже:
КОНТРОЛЬ
Он предоставляет все привилегии для таблицы или представления, включая удаление и предоставление, отзыв отдельных привилегий таблицы для пользователя.
ALTER
Это позволяет пользователю изменять таблицу.
УДАЛЯТЬ
Это позволяет пользователю удалять строки из таблицы или представления.
ИНДЕКС
Это позволяет пользователю вставить строку в таблицу или представление. Он также может запустить утилиту импорта.
РЕКОМЕНДАЦИИ
Это позволяет пользователям создавать и удалять внешний ключ.
ВЫБРАТЬ
Это позволяет пользователю получать строки из таблицы или представления.
ОБНОВИТЬ
Позволяет пользователю изменять записи в таблице, просматривать.
Пакетные привилегии
Пользователь должен иметь полномочия CONNECT для базы данных. Пакет — это объект базы данных, который содержит информацию менеджера базы данных для наиболее эффективного доступа к данным для конкретного приложения.
КОНТРОЛЬ
Он предоставляет пользователю привилегии перепривязывания, удаления или выполнения пакетов. Пользователю с этими привилегиями предоставляются привилегии BIND и EXECUTE.
BIND
Это позволяет пользователю связывать или перепривязывать этот пакет.
ВЫПОЛНИТЬ
Позволяет выполнить пакет.
Индекс привилегий
Эта привилегия автоматически получает привилегию CONTROL для индекса.
Привилегии последовательности
Sequence автоматически получает привилегии USAGE и ALTER для последовательности.
Обычные привилегии
Он включает в себя действие подпрограмм, таких как функции, процедуры и методы в базе данных.
DB2 — роли
Вступление
Роль — это объект базы данных, который группирует несколько привилегий, которые могут быть назначены пользователям, группам, PUBLIC или другим ролям с помощью оператора GRANT.
Ограничения на роли
- Роль не может владеть объектами базы данных.
- Разрешения и роли, предоставленные группам, не учитываются при создании следующих объектов базы данных.
- Пакет, содержащий статический SQL
- Просмотры
- Материализованные таблицы запросов (MQT)
- Триггеры
- SQL подпрограммы
Создание и предоставление членства в ролях
Синтаксис: [Создать новую роль]
db2 create role <role_name>
Пример : [Чтобы создать новую роль с именем ‘sales’, чтобы добавить таблицу для управления каким-либо пользователем или группой]
db2 create role sales
Выход:
DB20000I The SQL command completed successfully.
Предоставление роли из DBADM определенной таблице
Синтаксис: [Предоставить разрешение роли для таблицы]
db2 grant select on table <table_name> to role <role_name>
Пример : [Добавить разрешение на управление таблицей «shope.books» для роли «продажи»]
db2 grant select on table shope.books to role sales
Выход:
DB20000I The SQL command completed successfully.
Администратор безопасности предоставляет роль нужным пользователям. (Прежде чем использовать эту команду, вам нужно создать пользователей.)
Синтаксис: [Добавить пользователей в роль]
db2 grant role <role_name> to user <username>
Пример : [Чтобы добавить пользователя ‘mastanvali’ к роли ‘sales’]
db2 grant sales to user mastanvali
Выход:
DB20000I The SQL command completed successfully.
Ролевые иерархии
Для создания иерархий для ролей каждой роли предоставляются разрешения / членство с другой ролью.
Синтаксис: [перед этим синтаксисом создайте новую роль с именем «production»]
db2 grant role <roll_name> to role <role_name>
Пример : [Чтобы предоставить разрешение роли «продажа» другой роли «производство»]
db2 grant sales to role production
DB2 — LDAP
Вступление
LDAP — это облегченный протокол доступа к каталогам. LDAP — это глобальная служба каталогов, стандартный протокол, основанный на модели клиент-сервер и работающий на уровне выше стека TCP / IP. LDAP предоставляет средство для подключения, доступа, изменения и поиска в интернет-каталоге.
Серверы LDAP содержат информацию, которая организована в форме дерева каталогов. Клиенты просят сервер предоставить информацию или выполнить некоторую операцию с определенной информацией. Сервер отвечает клиенту, предоставляя требуемую информацию, если таковая имеется, или направляет клиента на другой сервер для действия с требуемой информацией. Затем клиент получает желаемую информацию с другого сервера.
Древовидная структура каталога поддерживается одинаковой на всех участвующих серверах. Это важная особенность службы каталогов LDAP. Следовательно, независимо от того, на какой сервер ссылается клиент, клиент всегда получает необходимую информацию без ошибок. Здесь мы используем LDAP для аутентификации IBM DB2 в качестве замены аутентификации операционной системы.
Существует два типа LDAP:
- прозрачный
- Вставной
Давайте посмотрим, как настроить прозрачный LDAP.
Настройка прозрачного LDAP
Чтобы начать с настройки прозрачного LDAP, вам необходимо настроить сервер LDAP.
Конфигурация сервера LDAP
Создайте файл SLAPD.conf, который содержит всю информацию о пользователях и объектах группы в LDAP. Когда вы устанавливаете сервер LDAP, по умолчанию он настроен с базовым деревом каталогов LDAP на вашем компьютере.
В приведенной ниже таблице указана конфигурация файла после модификации.
Текст, выделенный желтым цветом, означает следующее:
DBA user-id = «db2my1», group = «db1my1adm», password = «db2my1» Admin user-id = «my1adm», group = «dbmy1ctl».
# base dn: example.com dn: dc=example,dc=com dc: example o: example objectClass: organization objectClass: dcObject # pc box db dn: dc=db697,dc=example,dc=com dc: db697 o: db697 objectClass: organization objectClass: dcObject # # Group: dbadm # dn: cn=dbmy1adm,dc=db697,dc=example,dc=com cn: dbmy1adm objectClass: top objectClass: posixGroup gidNumber: 400 objectClass: groupOfNames member: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com memberUid: db2my1 # # User: db2 # dn: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com cn: db2my1 sn: db2my1 uid: db2my1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 400 gidNumber: 400 loginShell: /bin/csh homeDirectory: /db2/db2my1 # # Group: db ctl # dn: cn=dbmy1ctl,dc=db697,dc=example,dc=com cn: dbmy1ctl objectClass: top objectClass: posixGroup gidNumber: 404 objectClass: groupOfNames member: uid=my1adm,cn=dbmy1adm,dc=db697,dc=example,dc=com memberUid: my1adm # # User: adm # dn: uid=my1adm,cn=dbmy1ctl,dc=db697,dc=example,dc=com cn: my1adm sn: my1adm uid: my1adm objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 404 gidNumber: 404 loginShell: /bin/csh homeDirectory: /home/my1adm
Сохраните указанный выше файл с именем «/var/lib/slapd.conf», затем выполните этот файл, выполнив следующую команду, чтобы добавить эти значения на сервер LDAP. Это команда Linux; не команда db2.
ldapadd r- -D ‘cn=Manager,dc=example,dc=com” –W –f /var/lib/slapd.conf
После регистрации пользователей DB2 и группы DB2 на сервере LDAP войдите в систему для конкретного пользователя, где вы установили экземпляр и базу данных. Вам необходимо настроить клиент LDAP для подтверждения клиенту, где находится ваш сервер, будь то удаленный или локальный.
Конфигурация клиента LDAP
Конфигурация клиента LDAP сохраняется в файле ‘ldap.conf’. Для параметров конфигурации доступны два файла: один общий, а другой — конкретный. Вы должны найти первый в /etc/ldap.conf, а последний находится в /etc/openldap/ldap.conf.
Следующие данные доступны в общем файле конфигурации клиента LDAP
# File: /etc/ldap.conf # The file contains lots of more entries and many of them # are comments. You show only the interesting values for now host localhost base dc=example,dc=com ldap_version 3 pam_password crypt pam_filter objectclass=posixAccount nss_map_attribute uniqueMember member nss_base_passwd dc=example,dc=com nss_base_shadow dc=example,dc=com nss_base_group dc=example,dc=com
Вам необходимо изменить расположение информации о сервере и домене в соответствии с конфигурацией DB2. Если мы используем сервер в той же системе, то упомяните его как «localhost» в «host» и «base», вы можете настроить, что упомянуто в файле «SLAPD.conf» для сервера LDAP.
Сменная модель аутентификации (PAM) — это API для сервисов аутентификации. Это общий интерфейс для аутентификации LDAP с зашифрованным паролем и специальным объектом LDAP типа posixAccount. Все объекты LDAP этого типа представляют собой абстракцию учетной записи с атрибутами переносимого интерфейса операционной системы (POSIX).
Службы сетевой безопасности (NSS) — это набор библиотек для поддержки кроссплатформенной разработки клиентских и серверных приложений с включенной безопасностью. Это включает в себя библиотеки, такие как SSL, TLS, PKCS S / MIME и другие стандарты безопасности.
Вам нужно указать базовое DN для этого интерфейса и два дополнительных атрибута сопоставления. Файл конфигурации клиента OpenLDAP содержит следующие записи:
host localhost base dc=example,dc=com
До этого вы просто определяете хост подачи LDAP и базовый DN.
Проверка среды OpenLDAP
После того, как вы настроили сервер LDAP и клиент LDAP, проверьте оба соединения.
Шаг 1 : Проверьте, работает ли ваш локальный сервер LDAP. Используя команду ниже:
ps -ef | grep -i ldap
Эта команда должна перечислить демон LDAP, который представляет ваш сервер LDAP:
/usr/lib/openldap/slapd -h ldap:/// -u ldap -g ldap -o slp=on
Это означает, что ваш сервер LDAP работает и ожидает запроса от клиентов. Если для предыдущих команд такого процесса не существует, вы можете запустить сервер LDAP с помощью команды ‘rcldap’.
rcldap start
Когда сервер запускается, вы можете отслеживать это в файле ‘/ var / log / messages /, выполнив следующую команду.
tail –f /var/log/messages
Тестирование соединения с сервером LDAP с помощью ldapsearch
Команда ldapsearch открывает соединение с сервером LDAP, связывается с ним и выполняет поисковый запрос, который можно указать, используя специальные параметры ‘-x’, подключаются к вашему серверу LDAP с помощью простого механизма аутентификации, используя параметр –x вместо более сложный механизм, такой как простая аутентификация и уровень безопасности (SASL)
ldapsearch –x
Сервер LDAP должен ответить приведенным ниже ответом, содержащим все ваши записи LDAP в формате обмена данными LDAP (LDIF).
# extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (objectclass=*) # requesting: ALL # example.com dn: dc=example, dc=com dc: example o: example objectClass: organization objectClass: dcObject # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Конфигурирование DB2
После работы с сервером и клиентом LDAP вам необходимо сконфигурировать нашу базу данных DB2 для использования с LDAP. Давайте обсудим, как вы можете установить и настроить базу данных для использования нашей среды LDAP для процесса аутентификации пользователя DB2.
Конфигурирование подключаемых модулей взаимодействия DB2 и LDAP
IBM предоставляет бесплатный пакет с плагинами LDAP для DB2. Пакет DB2 включает три подключаемых модуля защиты DB2 для каждого из следующих компонентов:
- аутентификация на стороне сервера
- аутентификация на стороне клиента
- поиск группы
В зависимости от ваших требований вы можете использовать любой из трех плагинов или все из них. Этот плагин не поддерживает среды, в которых одни пользователи определены в LDAP, а другие — в операционных системах. Если вы решите использовать подключаемые модули LDAP, вам необходимо определить всех пользователей, связанных с базой данных на сервере LDAP. Тот же принцип применим к групповому плагину.
Вы должны решить, какие плагины являются обязательными для нашей системы. Подключаемые модули аутентификации клиента, используемые в сценариях, в которых идентификатор пользователя и проверка пароля, указанные в операторе CONNECT или ATTACH, происходят в клиентской системе. Поэтому параметры конфигурации менеджера баз данных SRVCON_AUTH или AUTHENTICATION должны быть установлены в значение CLIENT. Аутентификация клиента трудна для обеспечения безопасности и обычно не рекомендуется. Обычно рекомендуется подключаемый модуль сервера, поскольку он выполняет проверку идентификаторов пользователей и паролей на стороне сервера, если клиент выполняет инструкцию CONNECT или ATTACH, и это безопасный способ. Плагин сервера также предоставляет способ сопоставления идентификаторов пользователей LDAP с идентификаторами авторизации DB2.
Теперь вы можете начать установку и настройку подключаемых модулей защиты DB2, вам нужно подумать о необходимом дереве информации о каталогах для DB2. DB2 использует косвенную авторизацию, что означает, что пользователь принадлежит к группе, и этой группе предоставлено меньше полномочий. Вам нужно определить всех пользователей DB2 и группы DB2 в каталоге LDAP.
Образ
Файл LDIF openldap.ldif должен содержать следующий код:
# # LDAP root object # example.com # dn: dc=example, dc=com dc: example o: example objectClass: organization objectClass: dcObject # # db2 groups # dn: cn=dasadm1,dc=example,dc=com cn: dasadm1 objectClass: top objectClass: posixGroup gidNumber: 300 objectClass: groupOfNames member: uid=dasusr1,cn=dasadm1,dc=example,dc=com memberUid: dasusr1 dn: cn=db2grp1,dc=example,dc=com cn: db2grp1 objectClass: top objectClass: posixGroup gidNumber: 301 objectClass: groupOfNames member: uid=db2inst2,cn=db2grp1,dc=example,dc=com memberUid: db2inst2 dn: cn=db2fgrp1,dc=example,dc=com cn: db2fgrp1 objectClass: top objectClass: posixGroup gidNumber: 302 objectClass: groupOfNames member: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com memberUid: db2fenc1 # # db2 users # dn: uid=dasusr1, cn=dasadm1, dc=example,dc=com cn: dasusr1 sn: dasusr1 uid: dasusr1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 300 gidNumber: 300 loginShell: /bin/bash homeDirectory: /home/dasusr1 dn: uid=db2inst2,cn=db2grp1,dc=example,dc=com cn: db2inst2 sn: db2inst2 uid: db2inst2 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 301 gidNumber: 301 loginShell: /bin/bash homeDirectory: /home/db2inst2 dn: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com cn: db2fenc1 sn: db2fenc1 uid: db2fenc1 objectClass: top objectClass: inetOrgPerson objectClass: posixAccount uidNumber: 303 gidNumber: 303 loginShell: /bin/bash homeDirectory: /home/db2fenc1
Создайте файл с именем ‘db2.ldif’ и вставьте в него приведенный выше пример. Используя этот файл, добавьте определенные структуры в каталог LDAP.
Чтобы добавить пользователей DB2 и группы DB2 в каталог LDAP, вам необходимо привязать пользователя как «rootdn» к серверу LDAP, чтобы получить точные привилегии.
Выполните следующие синтаксисы, чтобы заполнить информационный каталог LDAP всеми нашими объектами, определенными в файле LDIF ‘db2.ldif’
ldapadd –x –D “cn=Manager, dc=example,dc=com” –W –f <path>/db2.ldif
Выполните результат поиска с большим параметром
ldapsearch –x |more
Подготовка файловой системы для использования DB2
Создание экземпляра для нашего пользователя LDAP db2inst2. Для этого пользователя требуется домашний каталог с двумя пустыми файлами внутри домашнего каталога. Перед созданием нового экземпляра необходимо создать пользователя, который будет владельцем экземпляра.
После создания пользователя экземпляра вам нужно будет создать файлы «.profile» и «.login» в домашнем каталоге пользователя, которые будут изменены DB2. Чтобы создать этот файл в каталоге, выполните следующую команду:
mkdir /home/db2inst2 mkdir /home/db2inst2/.login mkdir /home/db2inst2/.profile
Вы зарегистрировали всех пользователей и группы, связанные с DB2, в каталоге LDAP, теперь вы можете создать экземпляр с именем ‘db2inst2’ с идентификатором владельца экземпляра ‘db2inst2’ и использовать идентификатор изолированного пользователя ‘db2fenc1’, который необходим для запуска пользователя определенные функции (UDF) или хранимые процедуры.
/opt/ibm/db2/V10.1/instance/db2icrt –u db2fenc1 db2inst2 DBI1070I Program db2icrt completed successfully.
Теперь проверьте домашний каталог экземпляра. Вы можете увидеть новый подкаталог с именем ‘sqllib’ и файлы .profile и .login, настроенные для использования DB2.
Настройка общедоступных модулей аутентификации для поддержки LDAP в DB2
Скопируйте необходимые плагины LDAP в соответствующий каталог DB2:
cp // /v10/IBMLDAPauthserver.so /home/db2inst2/sqllib/security /plugin/server/. cp / / /v10/IBMLDAPgroups.so /home/db2inst2/sqllib/security /plugin/group/.
После того, как плагины скопированы в указанный каталог, вы настроили вход в систему для владельца экземпляра DB2 и изменили конфигурацию менеджера баз данных, чтобы использовать эти плагины.
Su – db2inst2 db2inst2> db2 update dbm cfg using svrcon_pw_plugin IBMLDAPauthserver db2inst2> db2 update dbm cfg using group_plugin IBMLDAPgroups db2inst2> db2 update dbm cfg using authentication SERVER_ENCRYPT db2inst2> db2stop db2inst2> db2start
Эта модификация вступает в силу после запуска экземпляра DB2. После перезапуска экземпляра вам необходимо установить и настроить основной файл конфигурации DB2 LDAP с именем «IBMLDAPSecurity.ini», чтобы подключаемые модули DB2 работали с текущей конфигурацией LDAP.
Файл IBMLDAPSecurity.ini содержит
;----------------------------------------------------------- ; SERVER RELATED VALUES ;----------------------------------------------------------- ; Name of your LDAP server(s). ; This is a space separated list of LDAP server addresses, ; with an optional port number for each one: ; host1[:port] [host2:[port2] ... ] ; The default port number is 389, or 636 if SSL is enabled. LDAP_HOST = my.ldap.server ;----------------------------------------------------------- ; USER RELATED VALUES ;----------------------------------------------------------- rs ; LDAP object class used for use USER_OBJECTCLASS = posixAccount ; LDAP user attribute that represents the "userid" ; This attribute is combined with the USER_OBJECTCLASS and ; USER_BASEDN (if specified) to construct an LDAP search ; filter when a user issues a DB2 CONNECT statement with an ; unqualified userid. For example, using the default values ; in this configuration file, (db2 connect to MYDB user bob ; using bobpass) results in the following search filter: OrgPerson)(uid=bob) ; &(objectClass=inet USERID_ATTRIBUTE = uid representing the DB2 authorization ID ; LDAP user attribute, AUTHID_ATTRIBUTE = uid ;----------------------------------------------------------- ; GROUP RELATED VALUES ;----------------------------------------------------------- ps ; LDAP object class used for grou GROUP_OBJECTCLASS = groupOfNames at represents the name of the group ; LDAP group attribute th GROUPNAME_ATTRIBUTE = cn ; Determines the method used to find the group memberships ; for a user. Possible values are: ; SEARCH_BY_DN - Search for groups that list the user as ; a member. Membership is indicated by the ; group attribute defined as ; GROUP_LOOKUP_ATTRIBUTE. ; USER_ATTRIBUTE - A user's groups are listed as attributes ; of the user object itself. Search for the ; user attribute defined as TRIBUTE to get the groups. ; GROUP_LOOKUP_AT GROUP_LOOKUP_METHOD = SEARCH_BY_DN ; GROUP_LOOKUP_ATTRIBUTE ; Name of the attribute used to determine group membership, ; as described above. llGroups ; GROUP_LOOKUP_ATTRIBUTE = ibm-a GROUP_LOOKUP_ATTRIBUTE = member
Теперь найдите файл IBMLDAPSecurity.ini в каталоге текущего экземпляра. Скопируйте вышеуказанный пример содержимого в тот же.
Cp //db2_ldap_pkg/IBMLDAPSecurity.ini /home/db2inst2/sqllib/cfg/
Теперь вам нужно перезапустить ваш экземпляр DB2, используя два синтаксиса, приведенные ниже:
db2inst2> db2stop Db2inst2> db2start
На этом этапе, если вы попробуете команду ‘db2start’, вы получите сообщение об ошибке безопасности. Потому что конфигурация безопасности DB2 еще не настроена правильно для вашей среды LDAP.
Настройка обеих конфигураций
Держите под рукой имя LDAP_HOST, которое настраивается в файле slapd.conf.
Теперь отредактируйте файл IMBLDAPSecurity.ini и введите имя LDAP_HOST. Имя LDAP_HOST в обоих указанных файлах должно быть одинаковым.
Содержимое файла показано ниже:
;----------------------------------------------------------- ; SERVER RELATED VALUES ;----------------------------------------------------------- LDAP_HOST = localhost ;----------------------------------------------------------- ; USER RELATED VALUES ---------------------------- ;------------------------------- USER_OBJECTCLASS = posixAccount USER_BASEDN = dc=example,dc=com USERID_ATTRIBUTE = uid AUTHID_ATTRIBUTE = uid ;----------------------------------------------------------- ; GROUP RELATED VALUES ;----------------------------------------------------------- GROUP_OBJECTCLASS = groupOfNames GROUP_BASEDN = dc=example,dc=com GROUPNAME_ATTRIBUTE = cn GROUP_LOOKUP_METHOD = SEARCH_BY_DN GROUP_LOOKUP_ATTRIBUTE = member
После изменения этих значений LDAP немедленно вступает в силу, и ваша среда DB2 с LDAP работает отлично.
Вы можете выйти и снова войти в систему для пользователя ‘db2inst2’.
Теперь ваш экземпляр работает с каталогом LDAP.