Создание БД

Примечание

Создать БД с меньшей детализацией параметров можно с помощью утилиты 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.

Примечания

  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»).

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

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

extsec.sql

Поддержка ADO.NET-интерфейса

geo_cat.sql

Поддержка OpenGIS

inkernel.sql

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

mbcps.sql

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

ora_cat.sql

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

pbcat.sql

Поддержка PowerBuilder

search.sqldefault.sql

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

security.sqlextsec.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