Создание БД

Примечание

Создать БД с меньшей детализацией параметров можно с помощью утилиты linadm (см. документ «СУБД ЛИНТЕР. Сетевой администратор», подраздел «Создание БД»).

Синтаксис
< создание БД >::=
[< пароль защиты БД >]
[< путь к БД >]
CREATE DATABASE ["< имя БД >"]
[USERNAME "< имя создателя БД >"]
[PASSWORD "< пароль создателя БД >"]
[MESSAGE OUTPUT "< спецификация файла сообщений >"]
[NO MESSAGE]
[NO QUERY]
[ON < переменная окружения >]
[MAXTAB < количество таблиц >]
[MAXCOL < количество столбцов >]
[MAXUSR < количество пользователей >]
[MAXROWSIZE  < максимальный размер записи >]
[CERTIFIED | ORDINARY]
;

Каталог, в котором будет создаваться БД, зависит от ряда условий (наличие переменной окружения SY00, использование глобальной или локальной установки для указания местоположения БД). Алгоритм выбора каталога создаваемой БД приведен в приложении 2 (см. также команду SET данной утилиты). О выбранном местоположении создаваемой БД на консоль выдается информационное сообщение вида:

Путь к БД 'd:\Program Files\Softool2003608rust\db1'. (переменная окружения SY01)

< пароль защиты БД >

См. пункт Пароль защищенной БД.

< путь к БД >

См. пункт Путь к БД.

DATABASE "< имя БД >"

Имя создаваемой БД (не более 18-ти символов). По умолчанию заполняется пробелами. Если строка содержит более 18-ти символов, она усекается до допустимой длины без предупреждения.

В качестве "< имя БД >" допустимо использовать символы из таблицы ASCII.

USERNAME "< имя создателя БД >"

< Имя создателя БД > – регистрозависимая строка, содержащая не более 66-ти символов. По умолчанию используется имя SYSTEM.

Примеры
USERNAME ADMIN
USERNAME "Admin"
USERNAME "Создатель БД"
PASSWORD "< пароль создателя БД >"

< Пароль создателя БД > – регистрозависимая строка, содержащая не более 18-ти символов. По умолчанию создатель БД имеет пароль MANAGER8.

Примеры
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.

Примечания

  1. Значение данного параметра в существующей БД можно получить, выполнив команду утилиты INL SHOW $$$SYSRL. Предельный ROWID есть значение MAXTAB.

  2. Максимальное число таблиц в создаваемой БД определяется как (< заданное пользователем значение MAXTAB > + 10), округлённое в большую сторону до числа, делящегося без остатка на 1022.

  3. После достижения БД указанного значения 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», пункт «Ограничение длины записи»).

CERTIFIED | ORDINARY

При указании опции CERTIFIED - будет создана сертифицированная БД. Будут активированы следующие проверки: контроль целостности файлов БД, контроль длины пароля пользователя 8 символов, максимальное количество неудачных вводов пароля 4 раза. Опция применяется по умолчанию.

При указании опции ORDINARY - БД будет создана без дополнительных проверок.

Примечание

Опции поддерживаются со сборки 6.0.20.1.

В процессе выполнения команды 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

Таблица 1. Список sql-файлов и их функциональных возможностей

Имя файла

Обеспечение функциональных возможностей

arepl.sql

Асинхронная репликация (тиражирование) данных

catalog.sql

Поддержка ODBC-драйвера

catalog_oledb.sql

Поддержка OLEDB

cerrors.sql

Создание пустой таблицы кодов завершения ядра СУБД ЛИНТЕР. Загрузка в таблицу собственно кодов завершения и соответствующих им текстов выполняется ядром СУБД ЛИНТЕР из файла errors.lod

charsets.sql

Однобайтовые кодировки

cstables.sql

Словарь кодировок (версии 6.x и выше)

distr.sql

Распределенная обработка данных

enaacc.sql

Доступ работы станциям с БД DEMO и права на тестовые таблицы БД DEMO

events.sql

Управление событиями

geo_cat.sql

Поддержка OpenGIS

inkernel.sql

Для работы системы резервирования данных

mbcps.sql

Многобайтовые кодировки

ora_cat.sql

Поддержка совместимости с СУБД Oracle

pbcat.sql

Поддержка PowerBuilder

search.sql, default.sql

Полнотекстовый поиск

security.sql, extsec.sql

Средства расширенной защиты информации

systab.sql

Триггеры, хранимые процедуры и последовательности


Примечание

Если в/на каталоге/устройстве, предназначенном для новой БД, уже содержится некоторая БД, то утилита выдаст запрос-предупреждение о возникновении подобной ситуации. При этом будет выдано имя уже существующей БД и запрос на продолжение операции. В случае отмены операции утилита не будет выполнять процедуру создания БД. В противном случае поверх рабочих файлов старой БД будут переписаны файлы новой. Это разрушит старую БД, т.к. при этой операции не все файлы старой БД будут удалены – все файлы пользовательских таблиц останутся (если они были расположены в данном каталоге), что может привести в дальнейшем к некорректной работе новой БД. Во избежание подобных ситуаций не рекомендуется проводить создание новой БД поверх старой.

Если в команде создания БД указан параметр 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