28.12.2016 11:41
OlegON
 
IBM DB2 (правильное произношение даже в России "диби ту") - достаточно широко известная, но в значительной мере менее распространенная в России СУБД, специалистов по ней практически нет, поэтому обращались ко мне, поскольку кто-то рассказал, что "это почти Oracle". Решил сделать небольшой свод информации по ней. Обращаю внимание, что несмотря на опыт работы с Oracle, я практически не знаю DB2, хотя чуть не прошел сертификацию. Большинство пунктов будут в сравнении DB2 и Oracle, чтобы как-то подсветить функционал.

Если кто-то захочет скачать DB2, то, в отличие от Oracle, можно скачать только триальную версию, причем, достаточно многие из нашей страны налетают на проверку в несколько дней, дескать, не под санкциями ли. В итоге извинения и повторный заход. Я зарегистрировался в четверг, а скачал только во вторник.

1. Структурно экземпляр, т.е. основной процесс СУБД включает в себя несколько баз данных. Это так же, как сделано в MS SQL, MySQL, Postgre и большинстве других СУБД, за исключением Oracle, где исторически одной базе соответствует один экземпляр (кластеры и нововведения 12с в виде контейнерных БД пока не рассматриваем). Для промышленной СУБД, я считаю, Oracle-вариант более правильный, для разработки и части тестирования допустимо все сваливать в кучу.

2. В базе DB2 нет механизмов аутентификации (за исключением SYSADM,
SYSCTRL, SYSMAINT, and SYSMON). Она нацелена на аутентификацию через ОС, что для меня громадный недостаток, особенно в свете ее кроссплатформенности. С другой стороны, работа DBMS_LDAP в том же Oracle для привязки к AD - еще тот костыль.

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

4. Архитектурную разницу надо было отметить первым пунктом. В Oracle предусмотрена версионность данных. Т.е. изоляция транзакций по умолчанию не позволяет прочитать данные, которые не были закоммичены в другой сессии. В DB2 все значительно более печально и получение данных хотя бы на момент последней транзакции - опция. База сама больше блокировочная, чем версионная.

5. Установка радует. Запустив db2install, выбираете тип установки и наблюдаете (ура!) в консоли стадии. Ставится быстро. В Oracle без Х можно только скопировать какую-то существующую инсталляцию.

6. После того, как отработает инсталляция, для установки окружения подготовлен
Код:
~/sqllib/db2profile
в Oracle я каждый раз танцую, даже где-то здесь, на форуме, выкладывал типовой профиль.

7. Посмотреть текущую конфигурацию менеджера баз данных можно командой
Код:
db2 get dbm cfg
, соответственно, для вывода конфигурации БД надо запросить get db cfg

8. Для старта и остановки экземпляра используются команды db2start/db2stop соответственно, если с остановкой, например, проблемы, можно использовать db2kill или прибить процесс db2sysc.

9. Поиск в процессах db2wdog выдаст процессы запущенных экземпляров. Можно поискать еще db2bp, но этот процесс не обозначает, что экземпляр работает, зато отображает путь к sqllib. Если профиль уже установлен, для просмотра информации можно воспользоваться утилитой db2level (это больше по лицензиям), либо db2ilist.

10. Журнал экземпляра здесь:
Код:
~/sqllib/db2dump/db2diag.log
11. Как уже писал выше, посмотреть конфигурацию БД можно командой
Код:
db2 get db cfg for ИМЯ_БАЗЫ
или запросом
SQL код:
select namevalue from sysibmadm.dbcfg 
12. Alterin, dropin, createin - команды для передачи прав на объекты схемы кому-либо. Например, db2 grant dropin on schema gmilne to all. В Oracle можно лишь пообъектно выдавать и есть нюансы присвоения юзеру или роли.

13. Изменение параметров, пример:
Код:
db2 "UPDATE database configuration for ИМЯ_БАЗЫ using applheapsz 16384 app_ctl_heap_sz 8192"
14. В утилитах управления нет автодополнения или даже вызова предыдущей команды, этим же страдает и Oracle. Однако, за счет краткого вызова командной утилиты db2, очень удобно работать прямо в командной строке, в отличие от Oracle. Не забывайте экранировать спецсимволы.

15. Табличные пространства можно посмотреть командой db2 list tablespaces show detail, суть ТП, как и в Oracle. Табличные пространства бывают двух типов SMS - System Managed Space и DMS - Database MS. В первом случае табличное пространство создается ворохом файлов.

16. Для получения доступа к удаленному instance (node) и удаленной базе
необходимо их зарегистрировать на клиенте:
Код:
db2 catalog tcpip node remote duzer sever db2cdb2 remote_instance
db2inst1 system duzer ostype sun
tcpip - сетевой протокол по которому получаем доступ к instance
duzer - имя вашей машины
db2cdb2 - имя порта в вашем /etc/services или
C:\winnt\system32\drivers\etc\services
db2inst1 - имя пользователя который владеет экземпляром DBM
system -
ostype - ваша ос (aix,hpux,sun,nt...)

17. Посмотреть права можно запросом
SQL код:
select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH 'Y' 
18. Привилегии на таблицы можно посмотреть в представлении SYSCAT.TABAUTH

19. Бекап нельзя запускать одновременно с административными утилитами вроде load, runstats, reorg и прочими. Как минимум - бекап завалится с ошибкой. RMAN ехидно хихикает.

20. Бекапы, сделанные на одной системе, можно восстанавливать только на такой же (endian) Unix или Linux. С разными endian нельзя, как нельзя и с Windows-Linux из-за разных путей. 32-битный бекап можно восстанавливать на 64-битной, но не наоборот. В принципе, как и в Oracle.

21. Бекапы
Код:
backup db bebe parallelism 6 compress
создает сжатый бекап и неплохо жмет
Код:
db2 restore db bebe from /home/prod taken at 20030909143225
22. Информация по табличным пространствам можно посмотреть командой
Код:
db2 list tablespaces show detail
23. Список установленных баз можно посмотреть командой
Код:
db2 list db directory
24. Просмотр табличных пространств (пример исследования инсталляции)
Код:
db2 list db directory 
db2 connect to movies 
db2 list tablespaces show detail
db2 list tablespace containers for 0 
db2 list tablespace containers for 1 
db2 list tablespace containers for 2 
db2 connect reset 
db2 terminate 
db2stop
25. Вариант бекапа
Код:
db2 backup db test1 online include logs
вариант восстановления
создать директорию для логов mkdir rest_logs
Код:
db2 restore db test1 logtarget /home/bkogan/rest_logs
бекап, кстати, можно не выполнять, а сделать вывод в скрипт

26. Настройки db2 делятся на нескольких уровней: реестра db2set -lr, переменные окружения, настройки инстанса и настройки базы данных

27. Просмотр блокировок в
Код:
db2 list applications
(сессии считаются приложениями)

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.