Учебники

Краткое руководство по DB2

Введение в 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.

Установка сервера DB2

Введите «./db2setup» и нажмите Enter на корневом терминале, чтобы начать процесс установки DB2 Server.

При этом появится экран «Настройка панели запуска». [Фигура 2]

Настройка Launch Pad

На странице панели запуска установки выберите опцию «Установить продукт» в боковом меню. Выберите опцию «DB2 Advanced Enterprise Server Edition». Выберите кнопку «Установить новый».

Появится новый фрейм с именем «Мастер установки DB2». Нажмите кнопку “Далее”. [Рисунок-3]

Мастер установки DB2

Появится следующий экран с лицензионным соглашением DB2. Выберите «Я принимаю условия…». Нажмите «Далее». [Рисунок-4]

Лицензионное соглашение DB2

На следующем экране появится предложение типа установки, для которого по умолчанию установлено значение «Обычный».

Держите тот же выбор. Нажмите кнопку “Далее”. [Рисунок-5]

Действие по установке

Появится следующий экран с действием установки.

Выберите «Установить DB2 Advanced Enterprise Server Edition…»

Нажмите кнопку “Далее”. [Рисунок-6]

Каталог установки

На следующем экране программа установки попросит выбрать каталог установки.

Оставьте значение по умолчанию и нажмите «Далее».

Информация о сервере

На следующем экране появится аутентификация пользователя. Введите пароль для пользователя «dasusr1».

(Ваш пароль может быть идентичен имени пользователя, чтобы его было удобно запомнить.)

Экземпляр DB2

На следующем экране программа установки попросит вас создать экземпляр сервера DB2.

Здесь он создает экземпляр DB2 с именем «db2inst1».

Имя экземпляра DB2

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

У вас есть выбор «одного или нескольких» разделов.

Выберите «экземпляр одного раздела». Нажмите кнопку “Далее”.

Раздел DB2

На следующем экране программа установки запрашивает аутентификацию для создаваемого экземпляра 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>».

Доступ к DB22

Экземпляр DB2

Вступление

Экземпляр – это логическая среда для менеджера баз данных DB2. Используя экземпляр, вы можете управлять базами данных. В зависимости от наших требований вы можете создать несколько экземпляров на одном физическом компьютере. Содержимое каталога Instance:

  • Файл конфигурации менеджера баз данных
  • Системный каталог баз данных
  • Каталог узлов
  • Файл конфигурации узла [db2nodes.cfg]
  • Отладка файлов, дамп файлов

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

Архитектура экземпляра в продукте DB2

db2_product

Несколько экземпляров

Вы можете создать несколько экземпляров в одном 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 в базе данных.

BUFFERPOOL

Вступление

Буферный пул является частью основного пространства памяти, которое выделяется менеджером базы данных. Целью буферных пулов является кэширование таблицы и индексирование данных с диска. Все базы данных имеют свои собственные буферные пулы. Пул буферов по умолчанию создается во время создания новой базы данных. Он называется «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

В этой главе подробно описаны табличные пространства

Табличные

Вступление

Табличное пространство – это структура хранения, она содержит таблицы, индексы, большие объекты и длинные данные. Он может использоваться для организации данных в базе данных в логическую группу хранения, которая связана с тем, где данные хранятся в системе. Эти табличные пространства хранятся в группах разделов базы данных

Преимущества табличных пространств в базе данных

Табличные пространства полезны в базе данных по-разному:

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

Автоматическое управление хранением : менеджер баз данных создает и расширяет контейнеры в зависимости от потребностей.

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

Контейнер

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

Табличные пространства по умолчанию

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

  1. Табличное пространство каталога
  2. Табличное пространство пользователя
  3. Временное табличное пространство

Табличное пространство каталога : содержит таблицы системного каталога для базы данных. Он называется 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 stogroup  on 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 stogroup  add location’, location 

Пример : [Чтобы изменить путь расположения из старого расположения в новое расположение для группы хранения с именем ‘sg1’]

db2 alter stogroup sg1 add ‘/path/data3’, ‘/path/data4 

Удаление пути к папке группы хранения

Перед удалением пути к папке группы хранения вы можете добавить новое расположение для группы хранения с помощью команды alter.

Синтаксис : [Чтобы удалить старый путь из расположения группы хранения]

db2 alter stogroup  drop ‘/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 могут управляться двумя различными режимами контроля безопасности:

  1. Аутентификация
  2. авторизация

Аутентификация

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

Безопасность базы данных может управляться извне системы базы данных 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:

  1. прозрачный
  2. Вставной

Давайте посмотрим, как настроить прозрачный 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: dbctl 
# 
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.