sonyps4.ru

Установка (переустановка) сервера IBM DB2.

По работе пришлось в течение некоторого времени разбираться с СУБД IBM DB2. Т.к. система коммерческая, то в интернете не так много информации на русском языке, поэтому решил описать некоторые особенности работы этой СУБД.

Точка входа

Начнем со входной точки в СУБД. В SQL SERVER конечной точкой является экземпляр (instance), в котором конечно могут быть отдельные базы данных, но конфигурация и модель безопасности единая для всего экземпляра. В DB2 же точка входа выглядит так - экземпляр (который соответствует конкретному порту) - база данных. При этом конфигурация есть и для целиком экземпляра, и для отдельной базы данных.

Посмотреть конфигурацию экземпляра можно либо с помощью db2-команды:

Database Manager Configuration

Node type = Enterprise Server Edition with local and remote clients

Database manager configuration release level = 0x0b00

CPU speed (millisec/instruction) (CPUSPEED) = 2.912790e-07
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02

Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = YES
Transaction processor monitor name (TP_MON_NAME) =

Default charge-back account (DFT_ACCOUNT_STR) =

Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Default database monitor switches
Buffer pool (DFT_MON_BUFPOOL) = OFF

Где будут указаны параметры, их значение и расшифровка. Возможен также сокращенный вариант:

get dbm cfg

Либо с помощью запроса:

Select name, value from sysibmadm.dbmcfg

Из важных параметров можно отметить:

  • тип аутентификации (AUTHENTICATION)
  • путь по умолчанию для создания новых БД (DFTDBPATH)
  • обнаружение сервера по сети (DISCOVER)
Посмотреть настройки конкретной базы можно так:

connect to sample (sample - имя бд)

get database manager configuration

Либо примерно таким же запросом, как и ранее:

select name, value from sysibmadm.dbcfg

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

Большим отличием DB2 от других СУБД является модель аутентификации. Здесь нет внутренних пользователей, как в SQL Server или MySQL. Вся аутентификация производится внешними по отношению к СУБД средствами (динамически подгружаемыми плагинами) - средствами операционной системы либо внешними плагинами (Kerberos,GSS API). Тип аутентификации задается в параметре AUTHENTICATION конфигурации менеджера БД. По умолчанию выставлено значение SERVER - имя пользователя и пароль передается в открытом виде и данная пара проверяется на правильность средствами операционной системы. Если имя пользователя и пароль верны, то проверяется наличие привилегии CONNECT у пользователя или групп, в которые он входит (в т.ч. специальная группа PUBLIC, куда входят все авторизованные пользователи). Данные привилегии можно посмотреть в таблице SYSCAT.DBAUTH :

select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH = "Y"

Большой ошибкой при настройке является включение типа аутентификации CLIENT. В этом случае DB2 доверяет проведение аутентификации подключаемому клиенту и если у PUBLIC есть привилегия CONNECT, то любой пользователь сможет подключиться к БД и получит доступ ко всем данным, которые есть у PUBLIC. Имя пользователя при этом берется из операционной системы. То есть если мы подключаемся через Data Studio пользователем Administrator, то будут предоставлены все привилегии, которые есть у данного пользователя. И в этом случае нет разницы, с какого компьютера был произведен доступ. Данный тип аутентификации рекомендуется включать только тогда, когда есть защищенный канал между сервером и клиентом, и другие клиенты не смогут подключиться к СУБД.

Авторизация

Привилегии уровня конкретного экземпляра прописываются в конфигурации менеджера БД. Это следующие привилегии:

  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
Задаются данные привилегии с помощью указания группы, куда будет входить пользователь. В dbmcfg это соответственно параметры SYSADM_GROUP , SYSCTRL_GROUP , SYSMAINT_GROUP и SYSMON_GROUP .

Далее есть привилегии конкретной базы данных. Это такие привилегии, как доступ к базе данных (CONNECTAUTH), создание таблиц (CREATETABAUTH), создание подпрограмм (EXTERNALROUTINEAUTH) и тд. Данные привилегии можно просмотреть в представлении SYSCAT.DBAUTH

И наконец привилегии доступа к конкретным данным - таблицам, подпрограммам и тд. Здесь все довольно тривиально, но тоже с некоторыми особенностями.

Привилегии доступа к таблицам можно просмотреть в представлении SYSCAT.TABAUTH . Тип выданной привилегии хранится в отдельных колонках, в зависимости от самой привилегии (SELECTAUTH,DELETEAUTH и тд). При выдачи привилегии с помощью команды GRANT для привилегий REFERENCES и UPDATE можно также указать имена колонок, на которые будут распространяться данные привилегии. В этом случае информацию об этом можно посмотреть в представлении SYSCAT.COLAUTH

Привилегии подпрограмм (функций, процедур и методов) можно посмотреть в SYSCAT.ROUTINEAUTH . Здесь не совсем все тривиально, в зависимости от полей SPECIFICNAME и TYPENAME привилегии могут быть выданы на все подпрограммы заданной схемы.

Если читателям понравится статья, то готов рассказать по поводу защиты данных в DB2 с помощью Label-Based Access Control

сайт - электронная документация

Сервис и супорт на www.software.ibm.com/data/db2/db2tech

VA с DB2 хорошая пара, а потому www7.software.ibm.com/vad.nsf - это
IBM VisualAge Developer Domain

Www.developer.ibm.com/sdp/business/vadd.html
Subscription to VisualAge Developer Domain

VisualAge Object Connection Member Center
www.developer.ibm.com/pid_obj/ocwel.html

Выкладываются сорцы (free)
www.research.ibm.com/dx/download/index.html

Официальный журнал www.db2mag.com/spring.htm

Дока www.software.ibm.com/data/db2/library/publications

Группа пользователей DB2 - IDUG (много всякого, форумы,
правда не очень...), но ссылок полезных и информации там
много
www.idug.org

Q6: Какие типы лицензии бывают на DB2?

Нижеописанное справедливо для Сommon Platform
Common Platform NOT IN (OS/390, OS/400, VSE, VM)
Host System IN (OS/390, OS/400, VSE, VM)
Количество лицензий регулируется юридическим
образом см. (Лицензионное соглашение с IBM)

DB2 CAE (client)(Client Application Enabler) - Клиент для доступа к
серверу DB2 идет в поставке любого db2 сервера,
является бесплатным

DB2 Workgroup Edition (we)- cервер для рабочих групп, стоит ~1200 ,
отличается от Enterprise Edition, тем что internet/intranet пользователь

Равен простому пользователю (лицензия на пользователя порядка
200$), так же отсутствует

Personal Edition - локальный полнофункциональный сервер без
поддержки сетевых клиентов, является бесплатным. Доступен
под OS/2 и WinXX, Linux

Personal Developer Edition - есть бесплатный Personal Ed. с
дополнениями необходимыми для разработки.
Доступен под OS/2 и WinXX, Linux.

Enterprise Developer Edition - набор Personal, Workgroup и Enterprise
Ed.

DB2 Connect (conn)- cредство для связи с Host System, входит в DB2
UDB EE так же продается как отдельно.

DB2 Enterprise Edition (ee)- лицензирутся на количество процессоров, в
поставку входит DB2 Connect, также дает лицензию на неограниченное
количество internet/intranet пользователей

DB2 Extended Enterprise Edition (eee)- Версия DB2 для кластеров,
существует для AIX, NT, Sun Solaris

А9: На каких пратформах доступны Extenders
DB2 Extenders для os/2, nt, win95, win98, aix, hp-ux , solaris (sparc),
для
linux.

P.S. Покупка продуктов у IBM происходит за счет набора points
(points - некая у.е) В зависимости от кол-ва points вы попадаете
в определенную группу скидок.

A8: Существуют ли скидки для образовательных учереждений

Q9: Что такое instance, node, database, tablespace, container???

Instance - экземпляр СУБД, код который управляет данными, распределяет
и назначает системные ресурсы которые ему доступны. Он содержит Базы
данных (databases). К Databases которые принадлежат одному instance
другие instances доступа не имеют. Базы принадлежащие разным instance
имеют разный контроль доступа.

Database - логическая структура объединяющаяя в себе таблицы. Состоит из
табличных пространств, которые в свою очередь состоят из контейнеров.
Табличные пространства бывают трех типов
Табличное пpостpанство может быть 2 типов, пpичем в pамках одной базы
допyскается их совместное использование.

SMS - System Managed Space. Табличное пpостpаство пpедставляет собой
контейнеpы, достyп к котоpым осyществляется сpедствами ОС. Контейнеpы,
входящие
в состав табличного пpостpанства могyт pасполагаться на pазличных
логических и
физических yстpойствах. DB2 пpи этом стаpается pазносить данные
pавномеpно по
контейнеpам. Не сyществyет pазделения междy данными/индексами/блобами,
все
хpаниться в кyче.
Физически файлы откpываются сpедствами файловой системы, поэтомy
кэшиpyются
сpедствами ОС. Не фиксиpyется pазмеp пpостpанства, оно меняется
динамически,
что влияет на пpоизводительность из-за накладных pасходов на
обслyживание
стpyктypы.

DMS - Database MS. Табличное пpостpанство, контpоллиpyемое DB2.
Контейнеpами
могyт быть файлы и RAW device (в тех ОС, где поддеpживается). В отличие
от SMS
файлы для DMS откpываются в специальном pежиме без кэшиpования.
Пpостpанство
всегда пpеаллокиpyемое, т.е. пpостpанство всегда имеет опpеделенный
pазмеp.
Увеличение pазмеpа пyтем добавлением нового контейнеpа. Накладные
pасходы DB2
на обслyживание - минимальны, администpатоpа - максимальны. Следить за
DMS
db2 list tablespaces show detail. Пpимеpы pасчета pазмеpа DMS можно
найти в
pyк-ве администpатоpа (Administration Guide).

Еще одно важное отличие DMS - возможность pазмещения данных, индексов и
блобов
для таблицы в pазных табличных пpостpанствах. Это позволяет, напpимеp,
индексы
хpанить на самом быстpом yстpойстве, а блобы - на самом медленном.

Еще один важный элемент - bufferpool. Бyфеpный пyл - это кэш для
табличного
пpостpанства. Один БП может быть использован для нескольких табличных
пpостpанств. Хотя фоpмально для пpостpанства блобов тоже нyжен БП, блобы
не
кэшиpyются. Бyффеpный пyл выделяется пpи стаpте БД - не плодите лишних.

Табличное пpостpанство и бyфеpный пyл состоят из стpаниц. Размеp
стpаницы в DB2
UDB 5 веpсии 4 или 8 Кб. Размеp стpаницы БП должен соответсвовать
pазмеpy
табличного пpостpанства. Размеp стpаницы опpеделяет маскимальный pазмеp
стpоки
из _всех_ таблиц, входящих в табличное пpостpанство, т.е. сyммаpный
pазмеp всех
столбцов из всех таблиц входящих в тбс. Размеp для каждого типа данных
можно
посмотpеть в AG.

WinNT имеет свойство кэшировать файлы которые являются DMS контейнерами.
Для отключения пользуйтесь:
DB2NTNOCACHE Windows NT
Default=OFF

Comment:
В пpинципе для НТ (и только) фича полезная, но действyет на глобально. Я
не
пpотив системного пpостpанства типа SMS, оно состоит из большого числа
мелких
таблиц, где индексиpование неэффективно - для него неплохо и кэшиpование
ФС.
Вообще для мелких таблиц типа спpавочников лyчше использовать смс.
(C) Andrey Panskikh

Q9: Как получить доступ к управлению уделенным instance.

Для получения доступа к удаленному instance (node) и удаленной базе
необходимо их зарегестрировать на клиенте:

Db2 catalog tcpip node remote duzer sever db2cdb2 remote_instance
db2inst1 system duzer ostype sun
tcpip - сетевой протокол по которому получаем доступ к instance
duzer - имя вашей машины
db2cdb2 - имя порта в вашем /etc/services или
C:winntsystem32driversetcservices
db2inst1 - имя пользователя который владеет экземпляром DBM
system -
ostype - ваша ос (aix,hpux,sun,nt...)

После этого вы можете управлять удаленным instance
db2 attach to duzer user db2inst1 using ibmdb2

Q10: Как соединистся с удаленной базой данных??

Регестрирование БД
В понятиях DB2 database самая маленькая логическая еденица
которые видны для пользователя (ее содержимое это в ней)

Db2 catalog database sample at node duzer
db2 catalog database sample as test at node duzer
db2 catalog system odbc database source sample
db2 catalog system odbc database source test

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

Db2 connect to sample user db2 using ibmdb2

Создание БД sample осуществляется коммандой db2sampl.

Q11: Что такое SP, UDF, fenced и not fenced

SP - Stored Procedure, в отличии от других серверов, DB2
не имеет встроенного языка для наприсания SP
UDF - User defined function, представляет собой DLL для Intel платформ,
или Shared Library для унихов

Fenced - выполняется в отдельном адресом пространстве от сервера,
но сбой при ее выполении никакого вреда серверу не несет.
Unfenced - выполняется в том же адресном пространстве. что и сервер,
что увеличивает производительность, но сбой при ее выполении может
привести к куче безобразия:))

Q12: Какие проблемы могут возникнуть при установке DB2 на WINxx???

Для NT "пpоблема" пpи инсталяции - имя администpатоpа <=8 символам.
(Для 5.x, 6.1. Для 7.x вpоде сняли огpаничение)
Для Win95,98 надо быть "залогининым"
(т.е войти под каким-либо пользователем в системy)

Q13: Как установить DB2 на юникс.

В зависимости от того какой у вас юникс,
также предполагается, что вы работаете
в ksh или bash, и уже зашли пользователем
root

А. Поправте конфигурацию ядра в /etc/system
в соответствиями с требованиями Instalation Guide
и перегрузите систему если это нужно для вашей
системы.

B. Если у вас линукс, создайте Korn Shell
duzer$ /bin/ln -s /bin/bash /bin/ksh
c. Замонтируйте cdrom c db2
man mount

D. cd /cdrom/DB2_INST_CDROM_NAME
e. ./db2_install
f. Выберите тип установки см. пункт 5
g. Создание необходимых пользователей
duzer$ groupadd -g 65535 db2iadm #владелец instance
duzer$ groupadd -g 65536 db2as #владелец административного instance
duzer$ groupadd -g 65537 db2fenc #пользователь под которым выполняются
SP и UDF в адресном пространстве сервера
duzer$ adduser -u 655365 -g db2iadm -d /export/home/db2inst1 -s
/usr/bin/ksh db2inst1
duzer$ adduser -u 655366 -g db2as -d /export/home/db2as -s /usr/bin/ksh
db2as
duzer$ adduser -u 655367 -g db2fenc -d /export/home/db2fenc1 -s
/usr/bin/ksh db2fenc1
duzer$ echo db2cdb2 50000/tcp "#db2 connection port" >> /etc/services

Duzer$ echo db2idb2 50001/tcp "#db2 interuption port >>
/etc/services
Порты по которым работает db2
По первому порту происходит соединение и обмен данными
По второму порту определяется, а жива противоположная сторона

I. Если вы хотите создать instance EE
on Solaris, HP-UX: DB2HOME=/opt/IBMdb2/Vx.x #версия DB2, instance
который вы желаете поставить
on AIX: DB2HOME=/usr/lpp/IBMdb2/Vx.x
on Linux: DB2HOME=/usr/IBMdb2/Vx.x

Duzer$ ${DB2HOME}/instance/db2icrt -a server -s ee -u db2fenc1 db2inst1
duzer$ ${DB2HOME}/instance/dasicrt db2as

K. Настройка сетевых протоколов (на примере TCP/IP)
duzer$ su - db2inst1
duzer$ cp sqllib/db2profile .profile
duzer$ . .profile
duzer$ db2set db2comm=tcpip
duzer$ db2 update dbm cfg using SVCENAME db2cdb2
duzer$ db2start #Вы имеете рабочий экземпляр субд
duzer$ db2sampl #Вы имеете работающую базу пример
duzer$ exit; su - db2as
duzer$ db2admin start; exit

Q14: Какие начальные переменные требуется настроить после установки
DB2
1. Увеличить количество LOG файлов см. FAQ for administrators
2. Настроить переменные для работыы с UDF & SP on Java
db2 update dbm cfg using JDK11_PATH JAVA_HEAP_SZ
4096
Остальные параметры трогать не нужно если в продукте используюущем db2
это не указано.

Q15: Как установить на DB2 поддержки разные кодировки данных??
По умолчанию db2 создает базу для того языка который установлен в
системных настройках пользователя владельца instance.
Для этого

OS/2:
WINNT: Control Panel -> Regional Settings...
UNIX: echo LANG=ru >> .profile
либо нужно указывать в какой кодировке создавать базу параметром
СODEPAGE

На клиенте кодировку настраивать не надо, DB2 сама определяет в какой
кодировке работает клиент и если они совместимы выдает ему данные.
Прим.
В BDE нужно ставить кодировку "ascii" ANSI.

Special Thanks and (C) Vadim Rumyantsev, Viktor Metelitsa, Lilya
Kozlenko, Andrey Panskikh

This chapter describes installation steps of DB2 server.

Introduction

You can download the DB2 Server trial version or purchase the product license from www.ibm.com . There are two separate DB2 servers available for downloading, depending upon the size of operating system, on which it is intended to execute. For example, if you want to download a DB2 server for 32bit Linux or UNIX operating system, then you need to download a 32 bit DB2 server. The same applies for 64bit DB2 server.

Hardware requirements

Processor: Minimum Core 2Duo

Ram: 1GB minimum

Hard disk: 30GB minimum

Software requirements

Before installing the DB2 server, your system needs to get ready with the required software on it. For Linux, you need to install “libstdc++6.0”.

Checking system compatibility

Before installing DB2 Server, you need to verify if your system is compatible with the DB2 server. For confirming the compatibility, you need to call "db2prereqcheck" command on command console.

Installing DB2 on Linux operating system

Open the Terminal and set the db2 installation image folder path on console using “CD ” command. Then type “./db2prereqcheck” command, which confirms the compatibility of your system with DB2 server.

./db2prereqcheck

Figure-1 shows the compatibility requirements of Linux operating system and hardware system.

Follow the given steps for installing DB2 on your Linux system:

  • Open the terminal.
  • Login as root user.
  • Open DB2 Installation folder.
  • Type “./db2setup” and press Enter.

This process will start execution of DB2 server setup.

Type “./db2setup” and press Enter on root terminal to start setup process of DB2 Server.

On doing so, the “Set up Launch Pad” screen appears.


On Setup Launch pad page, select “Install a Product” option from left side menu. Select option “DB2 Advanced Enterprise Server Edition”. Select “Install New” Button.

A new frame appears with name “DB2 setup wizard”. Click “Next”.


The next screen appears with DB2 license agreement. Select “I accept the terms…” Click “Next”.


Next screen comes up with offer of Installation type, which is set to “Typical” by default.

Keep the same selection. Click “Next”.


The next screen appears with installation action.

Select “Install DB2 Advanced Enterprise Server Edition…”

Click “Next”.


On the next screen, the setup program asks for selection of installation directory.

Keep the default and click “Next”.


The next screen comes up with the user authentication. Enter your password for “dasusr1” user.

(Your password can be identical to username so that it is convenient to remember.)


On the following screen, the setup asks you for creation of DB2 Server Instance.

Here, it is creating a DB2 instance with name “db2inst1”.


The next screen asks you the number of partitions you require for your default instance.

You have a choice of “single or Multiple” partitions.

Select “single partition instance”. Click “next”.


On the next screen, the setup asks you for authentication for DB2 instance being created.

Here, by default username is created as “db2inst1”. You can enter password same as username.

Click “Next”.


On the next screen, the setup asks to enter authentication information for “db2fenc” user.

Here, you can enter password same as username.

Click “Next”.


On the next screen, you can select “Do not setup your db2 server to send notifications at this time” option.

Click ”Next”.


The next screen shows you the information about db2 setup.

Click “Finish”.

The DB2 Installation procedure is complete at this stage.

Verifying DB2 installation

You need to verify the installation of DB2 server for its usefulness. On completing the DB2 Server installation, logout from current user mode and login to “db2inst1” user. In “db2inst1” user environment, you can open terminal and execute the following commands to verify if your db2 product is installed properly or not.

db2level

This command shows the current version and service level of the installed DB2 product for current instance.

Db2level

Example:

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

This command shows all the license related information of our DB2 Product.

Db2licm

Example:

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"

Command Line Processor (CLP)

The CLP can be started in one of the three modes:

    Command mode : In this mode, each command and SQL statement must be prefixed by “db2”. For example, query “db2 activate database sample”.

    Interactive input mode : you can launch this mode by using the “db2” command. Here, you can pass SQL statements without prefix. For example, “activate database sample”.

    Batch mode : Here, you need to create a script file, which contains all SQL queries of requirements and save the file with “.db2” extension. You can call this in command line using syntax “db2 –tf ”.




Загрузка...