Создание БД
Примечание
Создать БД с меньшей детализацией параметров можно с помощью утилиты linadm (см. документ «СУБД ЛИНТЕР. Сетевой администратор»).
Синтаксис
<создание БД>::= [<пароль защиты БД>] [<путь к БД>] CREATE DATABASE ["<имя БД>"] [USERNAME "<имя создателя БД>"] [PASSWORD "<пароль создателя БД>"] [MESSAGE OUTPUT "<спецификация файла сообщений>"] [NO MESSAGE] [NO QUERY] [ON <переменная окружения>] [MAXTAB <количество таблиц>] [MAXCOL <количество столбцов>] [MAXUSR <количество пользователей>] [MAXROWSIZE <максимальный размер записи>] ;
Каталог, в котором будет создаваться БД, зависит от ряда условий (наличие переменной окружения SY00
, использование глобальной или локальной установки для указания местоположения БД). Алгоритм выбора каталога создаваемой БД приведен в приложении 2 (см. также команду SET данной утилиты). О выбранном местоположении создаваемой БД на консоль выдается информационное сообщение вида:
Путь к БД 'd:\Program Files\Softool2003608rust\db1
'. (переменная окружения SY01
)
-
<пароль защиты БД>
-
См. пункт Пароль защищенной БД.
-
<путь к БД>
-
См. пункт Путь к БД.
-
DATABASE "<имя БД>"
-
Имя создаваемой БД (не более 18-ти символов). По умолчанию заполняется пробелами. Если строка содержит более 18-ти символов, она усекается до допустимой длины без предупреждения.
В качестве "<имя БД>" допустимо использовать символы из таблицы ASCII.
-
USERNAME "<имя создателя БД>"
-
<Имя создателя БД> – регистрозависимая строка, содержащая не более 66-ти символов. По умолчанию используется имя
SYSTEM
.Примеры
USERNAME ADMIN USERNAME "Admin" USERNAME "Создатель БД"
-
PASSWORD "<пароль создателя БД>"
-
<Пароль создателя БД> – регистрозависимая строка, содержащая не более 18-ти символов. По умолчанию создатель БД имеет пароль
MANAGER
.Примеры
PASSWORD 12345 PASSWORD 15.07.1995 PASSWORD "67F223$$щгл"
-
MESSAGE OUTPUT "<спецификация файла сообщений>"
-
Местоположение выходного файла для записи протокола информационных сообщений, выдаваемых утилитой в процессе работы. Если ключ не задан, информационные сообщения будут выводиться на экран терминала.
-
NO MESSAGE
-
Подавляет выдачу информационных сообщений.
-
NO QUERY
-
Подавляет вопросы на подтверждение создания БД.
-
ON <переменная окружения>
-
Задает имя <переменной окружения>, указывающей местоположение (логическое имя устройства/каталога), где должны создаваться файлы БД (см. приложение 1). В случае, когда модификатор ON задаёт устройство, для которого не определена переменная среды окружения и это устройство не совпадает SY00, то выдаётся предупреждение.
Например:
SET DATABASE DIRECTORY "D:\linter\db\TEST_DB\"; CREATE DATABASE "Database Name" ON "SY01";
БД будет создана в каталоге, путь к которому задан в переменной окружения
SY01
, так какON
имеет более высокий приоритет, чемSET DATABASE DIRECTORY
.В случае некорректного ввода имени переменной окружения в команде
ON
SET DATABASE DIRECTORY "D:\linter\db\TEST_DB\"; CREATE DATABASE "Database Name" ON "D:\TEST_DB1";
будет выдана ошибка
%GENDB-E-UNDVAR,неопределенная переменная : D:\T -
MAXTAB <количество таблиц>
-
Предполагаемое максимальное количество таблиц в создаваемой БД (по умолчанию 8176). Заданное значение выравнивается с избытком до кратного 1022. Максимально допустимое значение равно 65398.
Примечания
-
Значение данного параметра в существующей БД можно получить, выполнив команду утилиты
INL SHOW $$$SYSRL
. Предельный ROWID есть значениеMAXTAB
. -
Максимальное число таблиц в создаваемой БД определяется как (
<заданное пользователем значение MAXTAB>
+ 10), округлённое в большую сторону до числа, делящегося без остатка на 1022. -
После достижения БД указанного значения
MAXTAB
создание новых таблиц прекращается. При необходимости расширения БД можно воспользоваться утилитой testdb и увеличить установленные лимиты. Подробное описание и команды приведены в пункте «Расширение системных таблиц» документа «СУБД ЛИНТЕР. Тестирование базы данных».
-
-
MAXCOL <количество столбцов>
-
Суммарное число всех столбцов во всех таблицах создаваемой БД (по умолчанию 32704). Заданное значение выравнивается с избытком до кратного 1022. Максимально допустимое значение данного параметра равно 65408. После достижения БД этого значения создание новых таблиц прекращается (см. примечание к параметру MAXTAB).
Примечание
Значение данного параметра в существующей БД можно получить, выполнив команду утилиты
INL SHOW $$$ATTRI
. Предельный ROWID есть значениеMAXCOL
. -
MAXUSR <количество пользователей>
-
Максимальное число записей по правам доступа к таблицам (по умолчанию 1022).
Системная таблица
$$$USR
автоматически расширяется по мере необходимости. -
MAXROWSIZE <максимальный размер записи>
-
Максимальный размер записи в таблице (значение от 1 до 65535). Реальная длина записи (в байтах) вычисляется путем округления заданного размера до значения, кратного 4096 в большую сторону. Если размер записи получается равным 65536, то он усекается до 65535. Значение по умолчанию 65535.
Если значение <максимального размера записи> больше 65535, то выдается предупреждающее сообщение, а размер записи берется равным 65535.
Примечание
Изменение максимального размера записей в БД после её создания осуществляется с помощью команды
ALTER DATABASE SET RECORD SIZE LIMIT
(см. документ «СУБД ЛИНТЕР. Справочник по SQL»).
В процессе выполнения команды CREATE
в БД создаются следующие таблицы словаря БД и рабочие файлы:
-
1.01 и 1.11 – таблица таблиц (
$$$SYSRL
); -
2.01 и 2.11 – таблица атрибутов (
$$$ATTRI
); -
3.01 и 3.11 – таблица пользователей (
$$$USR
); -
1.31 – файл бит-векторов (мнемоника
SYSWBV
); -
1.41 – рабочий файл (мнемоника
SYSWRK
); -
1.51 – файл сортировки (мнемоника
SYSSRT
); -
1.61 – специальный файл системного журнала, содержащий информацию о контрольных точках, горячем резервировании и т.д.
Примечание
Если при создании БД размер системного журнала не задается, то по умолчанию создается файл размером 8К.
Параметры запуска ядра созданной БД являются стандартными (принятыми по умолчанию). Для их просмотра/изменения предназначены команды GET, SET данной утилиты.
Процесс создания БД протоколируется на терминале (или в файле, если задан параметр MESSAGE OUTPUT
). Если указано NO MESSAGE
, протоколирование не выполняется.
В зависимости от планируемого использования функциональных возможностей СУБД ЛИНТЕР должны быть выполнены конфигурационные sql-файлы, которые создают системные таблицы для поддержки этих возможностей. Список sql-файлов и их функциональных возможностей в таблице 1
Имя файла | Обеспечение функциональных возможностей |
---|---|
|
Асинхронная репликация (тиражирование) данных |
|
Поддержка ODBC-драйвера |
|
Поддержка OLEDB |
|
Создание пустой таблицы кодов завершения ядра СУБД ЛИНТЕР.
Загрузка в таблицу собственно кодов завершения и соответствующих
им текстов выполняется ядром СУБД ЛИНТЕР из файла |
|
Однобайтовые кодировки |
|
Словарь кодировок (версии 6.x и выше) |
|
Распределенная обработка данных |
|
Доступ работы станциям с БД DEMO и права на тестовые таблицы БД DEMO |
|
Управление событиями |
|
Поддержка ADO.NET-интерфейса |
|
Поддержка OpenGIS |
|
Для работы системы резервирования данных |
|
Многобайтовые кодировки |
|
Поддержка совместимости с СУБД Oracle |
|
Поддержка PowerBuilder |
|
Полнотекстовый поиск |
|
Средства расширенной защиты информации |
|
Триггеры, хранимые процедуры и последовательности |
Примечание
Если в/на каталоге/устройстве, предназначенном для новой БД, уже содержится некоторая БД, то утилита выдаст запрос-предупреждение о возникновении подобной ситуации. При этом будет выдано имя уже существующей БД и запрос на продолжение операции. В случае отмены операции утилита не будет выполнять процедуру создания БД. В противном случае поверх рабочих файлов старой БД будут переписаны файлы новой. Это разрушит старую БД, т.к. при этой операции не все файлы старой БД будут удалены – все файлы пользовательских таблиц останутся (если они были расположены в данном каталоге), что может привести в дальнейшем к некорректной работе новой БД. Во избежание подобных ситуаций не рекомендуется проводить создание новой БД поверх старой.
Если в команде создания БД указан параметр NO QUERY
, то запрос на перезапись файлов выдан не будет, что может привести к последствиям, описанным выше.
Чтобы разрешить удаленный доступ клиентских приложений к данной БД, необходимо выполнить команду:
grant access on unlisted station to all;
(разрешить доступ к этой БД со всех компьютеров)
либо команду на создание станции (разрешить доступ к этой БД только с конкретных компьютеров) (см. документ «СУБД ЛИНТЕР. Администрирование комплекса средств защиты данных»).
Примеры
1) Создание БД, местоположение которой задает переменная окружения по умолчанию SY00.
Шаг 1. Установка средствами ОС переменной окружения SY00:
SY00=d:\linter\db
Шаг 2. Создание БД:
gendb> gendb>create database;
2) Создание БД, местоположение которой задается непосредственно в утилите путем указания полного пути к каталогу:
gendb>set database dir "d:\linter\db"; gendb>create database;
3) Создание нескольких БД, местоположение которых задается непосредственно в утилите путем указания переменной окружения.
Шаг 1. Создать и инициализировать средствами ОС переменные окружения DB01, DB02:
set DB01=d:\linter\db\order set DB02=d:\linter\db\sale
Шаг 2. Создание БД:
gendb>set database path DB01; gendb>create database "Orders"; gendb>set da pat DB02; gendb>create database "Sales";
4) Создание БД, местоположение которой задается локально переменной окружения.
Шаг 1. Создать и инициализировать средствами ОС переменную окружения TMP0:
set tmp0=d:\tempdb
Шаг 2. Создание БД:
gendb>create database "TestDB" on "TMP0";
5) Создание защищенной БД:
создать каталог C:\Linter\db\TESTDB Установить значение переменной SY00: SET SY00=C:\Linter\db\TESTDB Запустить gendb: gendb Установить пароль для защищенной БД: gendb> SET PROTECTED DATABASE PASSWORD "$des$12345"; Создать БД: gendb> CREATE DATABASE "TESTDB"; Завершить утилиту gendb: gendb> exit Запустить ядро СУБД: linter64 /pass=$des$12345