В этой главе описывается создание, активация и деактивация баз данных с соответствующим синтаксисом.
Архитектура базы данных
База данных — это набор таблиц, схем, буферных пулов, журналов, групп хранения и табличных пространств, работающих вместе для эффективной обработки операций с базой данных.
Каталог базы данных
Каталог баз данных — это организованное хранилище баз данных. При создании базы данных все сведения о базе данных сохраняются в каталоге базы данных, такие как сведения о запоминающих устройствах по умолчанию, файлы конфигурации, список временных таблиц и т. Д.
Глобальный каталог раздела создается в папке экземпляра. Этот каталог содержит всю глобальную информацию, связанную с базой данных. Этот глобальный каталог раздела называется 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
Выход: