Учебники

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 

Выход: