СУБД ЛИНТЕР

Запуск и останов СУБД в среде ОС Windows





Содержание

Предисловие

Назначение документа

Для кого предназначен документ

Необходимые предварительные знания

Принятые обозначения и соглашения

Запуск СУБД ЛИНТЕР

Переменные среды окружения

Запуск СУБД ЛИНТЕР

Запуск СУБД  ЛИНТЕР как приложения ОС

Запуск СУБД ЛИНТЕР как сервиса ОС

Сетевой режим работы

Параметры командной строки запуска СУБД ЛИНТЕР

Значения размеров очередей, задаваемые по умолчанию

Консольное окно ядра ЛИНТЕР

Параметры запуска ядра

Управление обработкой информации

Управление консольным окном

Останов СУБД

Коды завершения работы ядра

Приложение 1. Описание файла linter.log

Приложение 2. Описание файла linter.out

 

 

 

 

 

Предисловие


Назначение документа

Документ содержит описание процедуры запуска и останова СУБД ЛИНТЕР в среде Win32.


Документ может использоваться для работы с любой версией СУБД ЛИНТЕР. Особенности конкретных версий оговариваются по тексту.


Для кого предназначен документ

Документ предназначен для системных администраторов и пользователей СУБД ЛИНТЕР.


Необходимые предварительные знания

Принятые обозначения и соглашения


Обозначение Пример Значение
Курсив Растровым называется изображение: Новый термин в тексте
Полужирный шрифт В этом случае необходимо переносить все физические файлы. Выделение в тексте
Подчеркнутый шрифт Подробную информацию о работе программы можно получить на сайте www.dmk.ru. Адреса страниц Internet
Текст, разделенный знаком Þ Выполните команду View Þ Properties (Вид Þ Свойства). Последовательность выполнения команд
Текст, заключенный в < >, со знаком + между ними <Ctrl>+<C> В < > заключаются клавиши клавиатуры, знак + означает сочетание клавиш
Крупный моноширинный текст SQL> _q

Текст командной строки
Мелкий моноширинный текст Page
Time
Count
Текст программы
Заглавные буквы BROWSE Названия команд, слова, зарезервированные в SQL, ключевые слова
Курсив в < > <return statement> Определяемый элемент синтаксической конструкции
Символ ::=
Равенство по определению. Слева от знака стоит определяемое понятие, справа - собственно определение понятия
Квадратные скобки [ ] DBSTORE [-d -n -o -p -r -t -u]

Необязательные элементы конструкции. В данном примере ключи не являются обязательными элементами команды
Вертикальная черта | <return value> ::=
<value expression> | NULL
Указывает на то, что все предшествующие ей элементы списка являются необязательными и могут быть заменены любым другим элементом списка после этой черты
Фигурные скобки { } CODEPAGE
{866
| 1251
| KOI8}
Указывают на то, что все находящееся внутри них является единым целым
Многоточие <:> Характеристики столбца
MAKE  CHAR(20)
MODEL CHAR(20)
...
SQL>
Означает, что предшествующая часть может быть повторена любое количество раз либо продолжена по аналогии
Многоточие, внутри которого находится запятая <.,..>
Указывает, что предшествующая часть оператора, состоящая из нескольких элементов, разделенных запятыми, может иметь произвольное число повторений
Текст после слова Примечание.

Примечание. Если конфигурация страницы-шаблона не учитывала свойств, команда будет выполнена некорректно. Примечание

Запуск СУБД ЛИНТЕР

Запуск СУБД ЛИНТЕР активизирует ядро СУБД, которое отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Кроме того, ядро включает в себя такие процессы, как SQL-транслятор, транслятор хранимых процедур и триггеров, процессор сортировки. Ядро является основной резидентной частью и основной составляющей серверной части СУБД.


Переменные среды окружения

В своей работе ядро и утилиты СУБД ЛИНТЕР используют переменные среды окружения, которые могут быть установлены средствами операционной системы до запуска ЛИНТЕР:

  1. SY00 – значение переменной определяет путь до каталога основных файлов базы данных (файлов системных таблиц).  По умолчанию в качестве значения переменной используется текущий каталог ОС. Этот путь может быть задан также из командной строки при запуске ядра;

  2. LINTER_EDIT – переменная, определяющая текстовый редактор, используемый для редактирования, например, SQL-запросов (в утилите inl);

Примечание. Используется утилитами СУБД ЛИНТЕР.

  1. LINTER_MBX – переменная, определяющая имя «почтового ящика» для обмена данными между  ядром и  клиентскими приложениями. Под «почтовым ящиком» следует понимать некий межпроцессный механизм обмена между ядром ЛИНТЕР и приложением. Используется для передачи данных от приложения  ядру ЛИНТЕР и обратно. Изменение значения этой переменной может быть использовано для запуска нескольких ядер на одной ЭВМ.

Значение LINTER_MBX должно быть уникальным для данного ядра ЛИНТЕР и приложений, работающих с этим ядром. Значение переменной по умолчанию: Linter.

  1. LINTER_CP – определяет кодировку данного клиентского приложения. Ядро СУБД ЛИНТЕР будет работать с этим приложением в кодировке, определяемой переменной LINTER_CP. Для разных приложений, даже на одной машине, могут быть заданы различные значения переменной LINTER_CP.

Для СУБД ЛИНТЕР версии 5.9 и ниже осуществляется поддержка только русскоязычных кодовых страниц, поэтому переменная LINTER_CP может принимать одно из значений  866, 1251, koi8 (регистрозависимо).

 

СУБД ЛИНТЕР, начиная с версии 6.0 и выше, поддерживает однобайтовые, многобайтовые кодировки, UNICODE, UTF8, а также предоставляет возможность загрузить в БД кодировку, необходимую клиентской задаче. Переменная LINTER_CP может принимать значение любой кодировки, загруженной в БД (список кодировок хранится в системной таблице $$$CHARSET).


Если значение переменной LINTER_CP не определено, то используется кодировка, соответствующая текущему значению locale.


Для консольных утилит СУБД ЛИНТЕР используется кодировка по умолчанию 866, а для графических утилит - 1251.


Для утилит СУБД ЛИНТЕР версии 5.9 и ниже используется кодировка по умолчанию –  KOI8.

  1. NET_MBX – переменная аналогична по своему назначению переменной LINTER_MBX, но для сетевого клиента.  Т.е. NET_MBX  определяет имя «почтового ящика» для обмена данными между  приложением и сетевым драйвером клиента. Значение по умолчанию:  LinDbc


Запуск СУБД ЛИНТЕР

В операционных системах Windows 95/98/ME ядро СУБД ЛИНТЕР может быть запущено как приложение ОС. В ОС Windows NT/2000/XP ЛИНТЕР может быть запущен как приложение ОС или как сервис ОС.


Запуск ядра СУБД ЛИНТЕР  как сервис позволяет:

Консольный запуск ядра описан ниже в главе «Запуск ЛИНТЕР как приложения ОС». Запуск ЛИНТЕР как сервиса ОС кратко описан в главе «Запуск ЛИНТЕР как сервиса ОС», более подробную информацию можно получить в документе «Сетевой администратор » глава «Управление базами данных».


Напомним о параметрах, задаваемых при установке СУБД ЛИНТЕР:

Примечание. Подробно особенности установки ЛИНТЕР описаны в документе «Установка СУБД ЛИНТЕР на платформе Win32».


Запуск СУБД  ЛИНТЕР как приложения ОС

Чтобы активизировать ядро СУБД ЛИНТЕР, нужно запустить исполняемый файл: linternt – для Windows 2000/NT/XP; или linter95 – для Windows 95/98.


Командная строка запуска СУБД ЛИНТЕР в среде Windows NT/2000/XP имеет синтаксис:


linternt [/<параметр> …]


Командная строка запуска СУБД ЛИНТЕР в среде Windows 95/98 имеет синтаксис:


linter95 [/<параметр> …]


При этом каталог /bin должен быть включен в список каталогов переменной окружения PATH,  иначе для запуска нужно использовать полный абсолютный или относительный путь к исполняемому файлу.


Указать путь к  БД  одним из следующих способов.

  1. установить переменную окружения SY00 так,  чтобы ее значение указывало на  каталог, в котором находится БД.

  2. указать путь при запуске ядра ЛИНТЕР в параметре /BASE  (полное описание параметров запуска см. ниже)

  3. выбрать путь к базе данных в диалоговом окне, которое будет выдано в том случае, если СУБД не обнаружит БД.

Второй способ запустить ядро СУБД ЛИНТЕР - выбрать меню «СУБД ЛИНТЕР» из программной группы, которая была указана при установке.

Например:


Старт Þ Программы Þ СУБД Линтер Þ СУБД Линтер.


При успешном запуске на консоль выводятся параметры и установленные режимы работы ядра:


RDBMS Linter SQL v.6.1.3.17 connected to data base  "DEMO Database    "

POOL holds 89 pages

Table    queue size  : 100

Column   queue size  : 500

Channel  queue size  : 100

File     queue size  : 30

User     queue size  : 100

In-kernel backup table is absent

Auditing disabled

Transaction control is turned on

Sort queue size      : 1

Existing control point(s) in database:

Control point list is empty.

Kernel system parameters:  MBX - "20561", Pid - 4819

$ Copyright (C) 1995-2002 Relex, Inc. All rights reserved.

Checking license in progress ... OK

It's a DEMO license.

*** RDBMS Linter is running

*** Press <ENTER> for shell prompt


Если ядро не смогло запуститься, то будет выдано сообщение об ошибке.


Запуск СУБД ЛИНТЕР как сервиса ОС

Для управления сервисами в состав СУБД ЛИНТЕР входит утилита «Сетевой администратор СУБД ЛИНТЕР». Запуск утилиты возможен двумя способами:

  1. из программной группы, которая была указана при установке ЛИНТЕР, необходимо выбрать меню «Администратор СУБД ЛИНТЕР»:

Старт Þ Программы Þ СУБД Линтер Þ Администратор СУБД ЛИНТЕР

  1. запустить исполняемый файл linadm.exe

Примечание. Подробно работа с утилитой описана в документе «СУБД ЛИНТЕР. Сетевой Администратор».


Для запуска СУБД ЛИНТЕР как сервиса:

  1. открыть список серверов, и выделить в нем сервер базы данных, который нужно запустить;

  2. щелкнув правой кнопкой мыши, выбрать в выпадающем меню  пункт Startup. Появится диалоговое окно изменения параметров запуска БД. Если необходимо, измените значения параметров;

  3. нажать ОК. Ввести имя и пароль администратора БД.

Если «высветился» зеленый сигнал пиктограммы светофора, значит, запуск прошел успешно. Ядро ЛИНТЕР запущено локально как сервис ОС.


Если ядро не запустилось, то сигнал пиктограммы светофора остается красным и выдается сообщение с кодом завершения работы ядра.


Сетевой режим работы

Для настройки работы СУБД ЛИНТЕР в сетевом режиме, кроме ядра необходимо запустить сетевые средства: сетевой драйвер сервера и сетевой драйвер клиента. Порядок запуска компонент не имеет значения. Можно запускать сначала ядро, потом драйвер сервера, затем драйвер клиента. А можно сначала запустить драйвера клиента и сервера, а затем ядро ЛИНТЕР.


Драйвера, так же как и ядро, могут быть запущены как приложение ОС или как сервисы ОС.


Драйвер сервера

Драйвер сервера предназначен для обслуживания запросов удаленных клиентов на сервере базы данных.


Для его запуска, из меню MS Windows выберите пункт «Сетевой сервер»: Старт Þ Программы Þ СУБД Линтер Þ Сетевой сервер. При этом сетевой сервер будет запущен как приложение ОС.


Запуск сетевого драйвера сервера как сервиса ОС возможен из утилиты «Графический администратор СУБД ЛИНТЕР». Запустить сетевой драйвер можно несколькими способами:

Если сетевой сервер запущен, то пиктограмма изменится img02.


Драйвер клиента

Драйвер клиента предназначен для обслуживания запросов локальных клиентов и серверов на локальном сервере базы данных.  Он должен запускаться на том компьютере, на котором будет функционировать приложение.  Драйвер можно запускать при активном или неактивном состоянии СУБД, но обязательно до запуска приложения.


Для запуска из меню MS Windows выберите пункт  «Сетевой клиент»:


Start Þ Programs Þ СУБД Линтер Þ img03 Сетевой клиент.


При этом сетевой драйвер клиента будет запущен как приложение ОС.


Для запуска сетевого драйвера клиента как сервиса ОС, воспользуйтесь утилитой «Графический администратор СУБД ЛИНТЕР». Кликнув на пиктограмме img04, выберите в открывшемся окне нужный сервер базы данных.


Если драйвер клиента  запущен, то пиктограмма изменится img05.


Параметры командной строки запуска СУБД ЛИНТЕР

/POOL=<размер>

Задает размер пула памяти ядра СУБД в страницах по 4 Кбайт. В пуле размещаются все очереди ядра – очередь файлов, очередь таблиц, очередь столбцов и т.д.


По умолчанию размер пула равен 500 страниц (для Win32) и 200 страниц (для UNIX). Минимальное значение - 200 страниц.


/SPOOL=<размер>

Задает размер пула памяти одного процесса сортировки в страницах по 4 Кбайт. В пуле процесса сортировки хранятся промежуточные результаты сортировки выборок, в случае отсутствующих индексов или сложных запросов.


По умолчанию размер пула - 200 страниц, минимальное значение –  100 страниц.


Примечание. Рекомендуемое соотношение между параметрами pool и spool 4 к 1. Подробнее о значениях параметров, влияющих на  эффективность работы ядра СУБД ЛИНТЕР, рассказано в документе «Архитектура СУБД ЛИНТЕР»


/BASE=<путь>

Задает полный путь к БД. Аналог переменной  окружения  SY00.


/KILL=<время>

Задает временной промежуток (в секундах), через который проверяется «живучесть» программ-клиентов. Если через указанный промежуток времени обнаруживается, что какой-либо из клиентов закончил работу и не известил об этом ЛИНТЕР, то ядро автоматически освободит относящиеся к этому клиенту ресурсы.


По умолчанию – 120 секунд, минимум – 10 секунд.


/SNAP=<время>

Задает временной промежуток (в секундах), через который изменения, сделанные в результате работы транзакций фиксируются на диске в файлах БД.


По умолчанию – через 120 секунд, минимальное значение – 10 секунд.


/HIDE

Этот параметр указывает на необходимость «спрятать» консольное окно ядра в окошко SysTray (ядро должно быть запущено как приложение операционной системы).


/LOCAL

При наличии этого ключа ядро СУБД ЛИНТЕР запускается как консольное приложение операционной системы. В консольном окне выводится информация о параметрах, с которыми запущено ядро (путь к БД, размеры очередей, размеры пулов ядра и таймауты), существует возможность изменить эти параметры и сохранить изменения (т.е. последующий запуск ядра будет происходить уже с измененными параметрами), включить/отключить логирование и т.п.


Если запуск осуществляется без ключа /LOCAL, то ядро ЛИНТЕР сначала пытается стартовать как сервис ОС, и только если это не удается, оно запускается  как приложение ОС.


/NAME=<строка>

Задает имя почтового ящика для организации работы нескольких ядер ЛИНТЕР на одной ЭВМ. Аналог переменной окружения  LINTER_MBX


/WLHB

Наличие этого ключа при запуске ядра СУБД ЛИНТЕР, позволяет завершить сохранение системного журнала утилитой LHB при получении ядром команды останова.


Например, пусть ядро СУБД ЛИНТЕР  запущено с ключом /WLHB.  Если утилита архивирования баз данных (LHB) выполняет операцию  сохранения  базы данных  в  режиме -WAIT и в это время приходит команда на останов ядра, то ядро не завершит  работу до тех пор:

  1. пока утилита LHB не закончит сохранение системного журнала;

  2. пока не наступит тайм-аут, определенный для утилиты LHB (т.е. прошло более 10 сек после предыдущей команды от LHB);

  3. пока не прошло 3000 сек. с момента запроса на останов ядра.

Если же ядро запущено без ключа /WLHB, то останов ядра произойдет сразу и архив не будет сформирован полностью.


/NOOUTFILE

Запрещает печать сообщений в файл linter.out (протокол работы  СУБД).


По умолчанию файл linter.out  создается .

 

Примечание. Структура файла  linter. out описана ниже в Приложении 2.

 

/OUTFLIMIT=<размер>

Задает размер файла сообщений ядра СУБД (linter.out) в страницах по 4 Кбайт. По умолчанию размер файла неограничен.


Если в процессе работы размер файла linter.out превысит заданный размер, то он будет переименован  в файл linter.ou1. После этого информация  будет записываться в пустой файл linter.out.  


Примечание. Структура файла  linter. out описана ниже в Приложении 2.


/TMPDIR

Определяет местоположение (каталог) для размещения временных файлов.


/NOSQL

Запрещает запуск  SQL-транслятора.


Эта возможность позволяет использовать ЛИНТЕР в системах с ограниченными ресурсами. При запуске с ключом /NOSQL, ядро ЛИНТЕР  может работать с уже скомпилированными приложениями, использующими только оттранслированные запросы.


/[NO]JEXIT

Ключ /JEXIT задает режим автоматического завершения работы ядра СУБД ЛИНТЕР в случае невозможности продолжения записи в системный журнал. Если же ядро запущено с ключом /NOJEXIT,  то работа ядра будет продолжаться, но без ведения системного журнала.


Примечание. В системный журнал заносится информация обо всех изменениях в БД. В случае аварийного завершения работы СУБД ЛИНТЕР, при следующем запуске ядро определит (по журналу) наличие прерванных транзакций и аннулирует все сделанные изменения. Если работа ведется без системного журнала, то ЛИНТЕР не сможет восстановить физическую и логическую целостность базы данных после аварии.


По умолчанию – /JEXIT.


/TCORRECT

Ключ /TCORRECT заставляет ядро СУБД ЛИНТЕР игнорировать тот факт, что дата последнего запуска  СУБД является «будущей» по сравнению с текущей датой   операционной системы.


/TCP=<порт>

В этом режиме одновременно с запуском ядра СУБД  будет запускаться и сетевой драйвер сервера. Значение <порт> - номер порта, по которому будет осуществляться соединение клиента с сетевым сервером.


/JDBCP=<порт>  

В этом режиме одновременно с запуском ядра СУБД  будет запускаться и сетевой драйвер сервера. Значение <порт> - задает сетевой номер порта, на котором будет запущен JDBC-сервер.


/NOLARGE

При запуске СУБД ЛИНТЕР определяет, поддерживает ли операционная система длинные файлы (это файлы, размер которых больше 2 Гбайт).


Если ядро запущено без ключа /NOLARGE, а ОС не поддерживает длинные файлы, то ядро запустится, но не будет работать с таблицами, которые расположены в длинных файлах.  При попытке обратиться к таким таблицам будет выдано соответствующее сообщение.


Если ядро запущено с ключом /NOLARGE, и в базе данных присутствуют файлы размером больше 2Гб, то ядро не будет запущено.


При попытке расширить файл до размеров > 2Гб будет возвращен код, сигнализирующий о невозможности это сделать.


Запуск с ключом /NOLARGE позволяет пользователю создавать базу данных и работать с ней какое-то время на ОС, поддерживающей длинные файлы, а затем перенести БД на ОС не поддерживающую длинные файлы.


/NOOUTPUT

Запрещает вывод в консольное окно  информации о работе ядра ЛИНТЕР.


/[NO]LOG

Ключ /NOLOG - запрещает, ключ /LOG - разрешает вести протокол обработки SQL-запросов клиентских приложений (файл linter.log).


Если при запуске  ядра ЛИНТЕР задан ключ /LOG, то ведется «краткий» протокол обработки запросов: текст SQL-запроса, количество ответов, код возврата.


По умолчанию – /NOLOG.


Примечание. Структура файла  linter.log описана ниже в Приложении 1.


/LOGALL

Задает режим полного протоколирования обработки SQL-запросов клиентских приложений в файле linter.log. В этом режиме в файл протокола заносится дополнительная информация, как-то время выполнения команды, сетевой адрес, идентификаторы процесса и нити, пославшие запрос и др.


Примечание. Структура файла linter.log описана ниже в Приложении 1.


Если при запуске ядра указать два ключа (/NOLOG и /LOGALL), то  определяющим будет ключ, стоящий последним в строке запуска. Например, пусть строка запуска имеет вид -    linter /NOLOG  /LOGALL   - в этом случае ядро будет запущено в режиме полного протоколирования. Другой пример, пусть строка запуска имеет вид -  linter /LOGALL  /NOLOG    - ядро не будет вести протокол обработки SQL-запросов.


/NOTSP

Запрещает запускать транслятор триггеров и хранимых процедур (предполагается, что работа с этими объектами базе данных не потребуется). Эта возможность позволяет использовать ЛИНТЕР в системах с ограниченными ресурсами.


/ INMEMPOOL=<размер>

Задает максимально допустимое количество страниц таблиц “в памяти” в пуле страниц СУБД ЛИНТЕР. Если этот ключ не задан, то использование таблиц “в памяти”  запрещено.


/TRACE=DECOMP[=FREE]

Задает трассировку исполнения SQL-запросов.


Опция FREE указывает на необходимость полной трассировки (по умолчанию  выполняется краткая трассировка).


Трассировка содержит следующую информацию;

  1. текст SQL-запроса переданный на обработку ядру СУБД ЛИНТЕР (после его оптимизации SQL-транслятором);

  2. какие массивы данных (битвектора) были задействованы при обработке SQL-запроса. Используемые массивы влияют на время выполнения запроса;  

  3. количество считанных/записанных блоков данных (физических/логических);

  4. количество считанных/записанных блоков системного журнала.


Пример трассировочной информации

C#4 QUERY:

 SELECT

   T_0."MSG"

 FROM

   <TABLE "SYSTEM"."ERRORS" AS T_0>

 WHERE

   T_0."NMRERR" == 1503;

C#4 DECOMP.C (Start_Cur_Dec): Now computing derived set #0.

C#4 OBRSTRAT.C (OBRSTRAT): Start set: TABLE("SYSTEM"."ERRORS" AS T_0). Set included 1022 rows.

   List of predicates:

   Predicate [strategy #2(one index)]:

 T_0."NMRERR" == 1503

C#4 DECOMP.C (End_Dekart): Derived set #0 is computed, Rows count: 1.

C#4 FORMOTW.C (FORMOTW): Read: 0 blocks, write: 0 blocks.

C#4 FORMOTW.C (FORMOTW): Read logical: 4 blocks, write logical: 0 blocks.

C#4 FORMOTW.C (FORMOTW): Journal read: 0 blocks, written: 0 blocks.


/RO

Задает работу с БД в режиме «только чтение» (модификация БД в этом режиме невозможна). При запуске СУБД с этим ключом доступны следующие команды:


SELECT SET EVENT
EXECUTE PROCEDURE CLEAR EVENT
TEST TABLE GET COMPLEX EVENT
LOCK TABLE WAIT COMPLEX EVENT
UNLOCK TABLE GET LINTER DUMP
CREATE EVENT SET LOG
DROP EVENT SET NAMES (для ЛИНТЕР 6.0 и выше)
GET EVENT SET SESSION BLOB LOG
WAIT EVENT SET SORTPOOL LIMIT/UNLIMITED

При работе в режиме read only в каталоге временных файлов создается ряд файлов (файлы логирования, трассировки, временные рабочие файлы): linter.out, linter.log, lintrace.log, phrase.idx, 1.31, 1.41, 1.51.


При завершении работы СУБД ЛИНТЕР перечисленные выше файлы удаляются.


Каталог временных файлов определяется следующим образом (по убыванию приоритета):

  1. может быть задан в явном виде в параметрах запуска ядра с помощью ключа TMPDIR, например:

lnternt.exe /local /base=D:\database /RO /TMPDIR=D:\TMP

  1. путь к каталогу временных файлов берется из  переменной среды окружения TEMP.

/ANALYZE

Оптимизатор СУБД ЛИНТЕР будет анализировать все SQL запросы с точки зрения существования индексов, позволяющих ускорить их обработку. Список рекомендуемых индексов будет выведен на экран консоли ядра и в файл linter.out.


/AUTOINDEX

В этом режиме, СУБД ЛИНТЕР будет не только анализировать все SQL запросы с точки зрения существования индексов, позволяющих ускорить их обработку, но и создавать недостающие индексы. Построенные индексы остаются в базе данных и после выполнения запроса.


/VERSION

При запуске ядра СУБД ЛИНТЕР с этим ключом в консольное окно будет выведена информация о версии ядра ЛИНТЕР (если ядро запускается как приложение ОС).


/[NO]SYNC

При запуске ядра СУБД ЛИНТЕР с параметром /SYNC пул ядра начинает работать по механизму сквозной записи на диск. Т.е. результат операций  сразу помещается на диск, минуя кэш.

 

Отключение данной опции осуществляется установкой параметра /NOSYNC. При этом сброс буферов происходит при завершении транзакции (применяется механизм отложенной записи на диск).

 

В синхронном режиме работа ядра замедляется.  

 

По умолчанию - /NOSYNC.


/COMPATIBITITY=STANDARD

При запуске с этим ключом ядро СУБД ЛИНТЕР начинает жёстко придерживаться стандарта SQL92. Поведение ядра запущенного без этого ключа,  в некоторых случаях не совпадает со стандартом.


Отличия в работе ядра, запущенного с ключом /COMPATIBILITY=STANDARD

  1. Позиционные DML-операции и работа транзакций

При запуске с ключом: команды UPDATE CURRENT и DELETE CURRENT могут выполняться по собственному каналу,  а не по тому каналу, по которому был подан SELECT запрос. Это важно для согласованной работы транзакций.

 

При запуске без ключа: команды UPDATE CURRENT и DELETE CURRENT  выполняются по тому каналу, по которому был подан соответствующий SELECT.

  1. Очистка канала после завершения транзакции

При запуске с ключом: очистка канала по командам COMT/RBAC (завершение транзакции) закрывает выборку. Исключение составляет выполнение команды PUTM (в СУБД ЛИНТЕР можно подавать команду COMT внутри потока команд пакетного добавления без завершения транзакции),  в этом случае выборка не будет закрыта.

 

При запуске без ключа: после команд COMT/ROLB выборка не будет закрыта, следовательно можно подавать команды GET* по тому же каналу.

  1.  Код завершения в случае обработки 0 записей

При запуске с ключом: всеми DML-операциями (SELECT, DELETE, UPDATE, INSERT FROM SELECT) в случае обработки 0 записей возвращается код завершения "нет данных" (код 2).

 

При запуске без ключа: в случае обработки 0 записей операциями DELETE, UPDATE, INSERT FROM SELECT возвращается код успешного завершения  (код 0), а код "нет данных" (код 2) возвращается только операцией SELECT.

  1. Выполнение операций ‘CAST <выражение> AS CHAR’ в том случае когда <выражение> имеет тип REAL или DOUBLE.

При запуске с ключом: результат выполнения описанной операции выводится в новом формате - в экспоненциальной форме с усеченными нулями и без знака '+'.

 

При запуске без ключа: результат выполнения описанной операции всегда выводится в форме с десятичной точкой и без  экспоненты (также как для значений DECIMAL).

  1. Выполнение операций ‘CAST <выражение> AS CHAR’,  где <выражение> имеет тип DECIMAL .

При запуске с ключом: при преобразовании выражения типа  DECIMAL с указанием точности в CHAR, выводится столько символов после запятой, сколько указано точностью.


Без ключа: при преобразовании DECIMAL в CHAR концевые нули всегда усекаются.

  1. Привилегии для выполнения операций  DELETE/UPDATE

С ключом: для выполнения операции DELETE/UPDATE над некоторой таблицей с отбором записей по WHERE необходима не только привилегия DELETE/UPDATE на эту таблицу, но и привилегия SELECT на нее.

 

Без ключа: для выполнения операции достаточно привилегии DELETE/UPDATE.

  1. Усечение лишних концевых пробелов в константах.

С ключом: перед проверкой совместимости типов происходит усечение лишних концевых пробелов в текстовых константах.

 

Без ключа: перед проверкой совместимости типов усечение лишних концевых пробелов не происходит, например, не удастся занести в CHAR(5) константу "A".

  1. Обязательность условия для JOIN

С ключом: если не задано условие соединения (ON или USING) для конструкции JOIN без конструкций NATURAL и UNION, то выдается ошибка.

 

Без ключа: воспринимается, таким образом если бы соединяемые по JOIN таблицы были  перечислены во FROM через запятую.

  1. Работа операций SET TRANSACTION READ ONLY/WRITE

С ключом: запросы SET TRANSACTION READ ONLY/WRITE не входят в транзакцию, т.е. подача этих запросов не является началом транзакции и если они выдают ошибку, то транзакция не откатывается. Транзакция считается начавшейся, если поданы модифицирующие запросы или SELECT.


Без ключа: запросы SET TRANSACTION READ ONLY/WRITE входят в транзакцию.


Значения размеров очередей, задаваемые по умолчанию

По умолчанию при запуске ядра СУБД ЛИНТЕР устанавливаются следующие значения:

  • длина или размер очереди, содержащей описания таблиц - 100;

  • длина или размер очереди, содержащей описания столбцов - 500;

  • длина или размер очереди файлов  - 30;

  • количество каналов для связи приложений с ядром СУБД ЛИНТЕР - 100;

  • квант обработки записей - число записей, просматриваемых системой без прерывания при обработке одного запроса - 10;

  • квант обработки индексов - число индексов, просматриваемых без прерывания при обработке одного запроса - 1.


  • Консольное окно ядра ЛИНТЕР

    При успешном запуске СУБД ЛИНТЕР в консольном режиме открывается окно, в которое выводятся параметры и установленные режимы работы ядра (см. рис. 1).

     

    img06

    Рис. 1. Окно параметров и установленных режимов работы ядра

     

    Консольный режим предоставляет возможности для установки параметров работы ядра ЛИНТЕР, просмотра протокола обработки SQL-запросов, останова ядра и др.


    Параметры запуска ядра

    Пункт меню Settings позволяет просматривать и изменять значения параметров запуска ядра ЛИНТЕР. (см. рис. 2).

     

    img07

    Рис. 2. Изменение значений параметров ядра ЛИНТЕР


    Измененные значения вступят в силу только после перезапуска ядра ЛИНТЕР. До останова ядро будет работать с теми  значениями параметров, с которыми оно было запущено.


    Управление размерами пула ядра и пула сортировки

    Для управления размерами пуля ядра и пула сортировки предназначен пункт меню Settings Þ Memory.


    Позволяет изменить размеры пула ядра и пула сортировки. Аналог параметров /pool и /spool (см. рис. 3).

     

    img08

    Рис. 3. Управление размерами пула ядра и пула сортировки


    Управление таймаутами

    Пункт меню Settings Þ Timeout позволяет задавать значения описанных ниже параметров (см. рис. 4).

     

    img09

    Рис. 4. Управление таймаутами

     

    Snap changes - задает временной промежуток (в секундах), через который изменения, сделанные в результате работы транзакций фиксируются на диске в файлах базы данных. Аналог параметра /snap.


    Check clients - задает временной промежуток (в секундах), через который проверяется «живучесть» программ-клиентов. Аналог параметра  /kill.


    Указание местоположения  базы данных

    Полный путь к базе данных можно указать при помощи пункта меню Settings Þ Database. Аналог параметра /base. Путь можно ввести вручную или выбрать расположение базы данных, с помощью Browse (см. рис. 5).

     

    img10

    Рис. 5. Указание местоположения базы данных


    Сохранение параметров запуска ядра

    При выборе пункта меню Settings Þ Save, все изменения сделанные в  значениях параметров запуска базы данных будут сохранены немедленно.


    Если не выбирать пункт Save, то изменения в значениях параметров запуска будут сохранены в момент останова ЛИНТЕР.  Если же во время останова произойдет сбой, то новые значения параметров могут быть потеряны.


    Управление обработкой информации

    Пункт меню Settings Þ Information позволяет запретить/разрешить ядру СУБД вести краткий протокол обработки SQL-запросов, посланных клиентскими приложениями (файл linter.log) и определить режим работы пула ядра (сквозная или отложенная запись на диск).

     

    img11

    Рис. 6. Управление обработкой информации


    Протоколирование выполнения запросов

    При установленной галочке у пункта меню Settings Þ Log to File (см. рис. 6), СУБД ведет краткий протокол обработки SQL запросов. Аналог параметрам /LOG (галочка установлена) и /NOLOG (не установлена).


    Чтобы поставить/снять галочку (соответственно разрешить/запретить вести протокол) нужно кликнуть мышкой на пункте Settings Þ Log to File.


    Управление записью данных на диск

    При установленной галочке у пункта меню Settings Þ Full Sync, пул ядра работает по механизму сквозной записи данных на диск. При отключении данной опции (галочка сброшена) пул ядра начинает работать  по механизму отложенной записи данных на диск.


    Аналог параметров /sync и /nosync.


    Поставить/снять галочку можно кликнув мышкой на данном пункте меню.


    Просмотр протокола обработки запросов

    Для того чтобы просмотреть файл обработки запросов, необходимо выбрать пункт меню Settings Þ View Log File. Будет открыто окно текстового редактора и в него загружен файл протокола.


    После выбора пункта меню Settings Þ View Log File, ведение протокола обработки запросов прекращается. При необходимости продолжать вести протокол – снова установите галочку у пункта  меню Settings Þ View Log File.


    Управление консольным окном

    Пункт меню File позволяет изменить информацию в консольном окне, остановить ядро ЛИНТЕР, получить информацию о версии ядра ЛИНТЕР и др (см. рис. 7).

     

    img12

    Рис. 7. Управление консольным окном


    Очистка окна

    При выборе пункта меню File Þ Clear консольное окно ядра ЛИНТЕР будет очищено (информация удалена).


    Добавление разделителя

    При помощи пункта меню File Þ Mark в консольное окно ядра ЛИНТЕР будет добавлен разделитель  (пунктирная линия).


    Скрытие окна

    При помощи пункта меню File Þ Hide можно «спрятать» консольное окно ядра ЛИНТЕР в окошко SysTray.


    Останов ядра

    При помощи пункта меню File Þ Shutdown можно остановить СУБД ЛИНТЕР. После выбора этого пункта меню откроется диалоговое окно (см. рис. 8), в котором необходимо подтвердить или отказаться от останова ЛИНТЕР.

     

    img13

    Рис. 8. Останов ядра при помощи диалогового окна


    Справка о версии

    При выборе пункта меню File Þ About откроется окно, содержащее информацию о версии программы и компании разработчике (см. рис. 9).

     

    img14

    Рис. 9. Справка о версии СУБД ЛИНТЕР


    Останов СУБД

    Останов осуществляется специальной утилитой, которая подает команду останова ядру СУБД ЛИНТЕР и ожидает пока оно завершится.


    Для останова СУБД ЛИНТЕР используется команда:


    shut [<командная строка>]


    где:


    <командная строка>::=[<имя>] [<пароль>][<ЛИНТЕР-сервер>]


    или


    <командная строка>::=[-u имя/пароль][-n <ЛИНТЕР-сервер>][-r]


    или


    <командная строка>::=[-version]


    Параметр Описание
    <имя> Имя пользователя с правами администратора БД
    <пароль> Пароль пользователя с правами администратора БД
    <<ЛИНТЕР-сервер> Имя узла удаленного сервера БД (должно присутствовать в файле nodetab). Если этот параметр не задан, то команда применяется  к  локальному узлу или к узлу по умолчанию

    Ключ –version служит для выдачи версии программы shut.


    По команде останова ядра при наличии активных транзакций ядро не будет остановлено, и утилита shut получит код  возврата 1012.


    Ключ -r служит для немедленного завершения работы ядра, вне
    зависимости от наличия активных транзакций в данный момент. В случае наличия таких транзакций, они будут откачены, а
    пользователи извещены о принудительном останове ядра.


    Коды завершения работы ядра

    Если во время запуска ядра СУБД ЛИНТЕР  происходит сбой, то анализируется причина сбоя и работа ядра завершается. При этом выдается код завершения.


    LINTER_EXIT_CODE_NO_ERR             0x0000

    Успешное завершение работы.


    LINTER_EXIT_CODE_INCORR_VERSION     0x0001

    Версия ядра ЛИНТЕР не соответствует версии базы данных, на которой его пытаются запустить.


    Воспользуйтесь утилитой импорта-экспорта данных (migration), которая входит в состав СУБД ЛИНТЕР. Она позволяет  перемещать базы данных между различными версиями СУБД ЛИНТЕР.



    LINTER_EXIT_CODE_DATABASE_CRASH     0x0002

    Повреждение структуры базы данных. Необходимо запустить утилиту тестирования  и восстановления (testdb) для базы данных. А затем запустить на ней ядро ЛИНТЕР еще раз.


    LINTER_EXIT_CODE_NO_MEMORY          0x0003

    Не хватает оперативной памяти. Необходимо либо уменьшить размер пула ядра, либо увеличить количество памяти.


    LINTER_EXIT_CODE_LOW_POOL           0x0004

    Размер пула ядра не достаточен для работы. Необходимо увеличить размер пула ядра.


    LINTER_EXIT_CODE_LOW_SRT_POOL       0x0005

    Размер пула сортировки не достаточен для работы. Необходимо увеличить размер пула сортировки.



    LINTER_EXIT_CODE_ALREADY_RUNING     0x0006

    Ядро ЛИНТЕР на выбранной базе данных уже запущено. Чтобы запустить несколько ядер ЛИНТЕР на одной базе данных, необходимо использовать параметр /NAME или переменную окружения LINTER_MBX.



    LINTER_EXIT_CODE_DATABASE_PERM      0x0007  

    У пользователя нет прав для запуска ЛИНТЕР на указанной базе данных.


    LINTER_EXIT_CANT_WRITE_TO_DISK      0x0008      

    Невозможно продолжать запись в системный журнал (ядро ЛИНТЕР запущено с ключом /JEXIT). Такая ситуация может возникнуть в двух случаях: либо не хватает места на диске, либо заполнены все файлы журнала.

    Количество файлов журнала и размер каждого из них задаются в свойствах БД (либо с помощью утилиты «Администратор СУБД ЛИНТЕР», либо с помощью утилиты «Генерация базы данных» (gendb))


    LINTER_EXIT_CODE_INVTIME            0x0009        

    Дата последнего запуска СУБД (в GMT) является «будущей» по сравнению с текущей датой   операционной системы.  Нужно запускать ядро ЛИНТЕР с параметром /TCORRECT до тех пор пока даты не сравняются.

     


     

    Приложение 1. Описание файла linter.log

    В приложении рассматриваются примеры информации, которая заносится в файл протоколирования обработки SQL-запросов пользователя (файл linter.log). И приводится расшифровка этой информации.

     

    Файл linter.log является перезаписываемым, т.е. при запуске ядра (с параметром разрешающим ведение протокола) все сообщения о предыдущем сеансе работы СУБД  будут удалены из файла.

     

    Пример 1. Пример файла  linter.log  в режиме краткого протоколирования.


    ?DESC:L=92:

    !:E=0:C=0:

    ?OPEN:U="SYSTE<":P=16384:R=0:

    !:E=1025 @&#:C=0:

    ?OPEN:U=H:P=16384:R=0:

    !:E=1025 @&#:C=0:

    ?OPEN:U="SYSTEM":P=16384:R=0:

    !:E=0:C=3:

    ?DESC:L=92:

    !:E=0:C=3:

    ?DESC:L=92:

    !:E=0:C=3:

    ?OCUR:C=3:P=16384:R=0:

    !:E=0:C=4:

    ?SLCT:C=4:L=65535:P=0:

    select * from "SYSTEM"."$$$AUDIT";;

    !:E=0:C=4:A=1:

    ?GETA:C=4:L=0:

    !:E=0:C=4:

    ?KILL:C=3:U=H:I=4:

    !:E=0:C=3:

    ?CLOS:C=4:

    !:E=1069 @&#:C=4:

    OCUR:C=3:P=16384:R=0:

    !:E=0:C=4:

    ?:C=4:L=65535:P=0:

    execute "SYSTEM"."SAMPLE"(FALSE,FALSE,1);

    #?OCUR:C=4:P=34:R=0:

    #!:E=0:C=5:

    #?:C=5:L=0:P=0:

    drop table results;

    #!:E=0:C=5:

    #?:C=5:L=0:P=0:

    create table results(lin char(100));

    #!:E=0:C=5:


    Пример 2. Пример файла linter.log в режиме полного протоколирования.


    ?SLCT:T=10:26:25.370:XPid=1732:XTid=1632:C=5:L=65535:P=0:

    select * from auto;;;

    !:E=0:T=10:26:25.450:XPid=1732:XTid=1632:C=5:A=1000:

    ?GETA:T=10:26:25.450:XPid=1732:XTid=1632:C=5:L=0:

    !:E=0:T=10:26:25.450:XPid=1732:XTid=1632:C=5:

    ?GETA:T=10:26:25.450:XPid=1732:XTid=1632:C=5:L=3914:

    !:E=0:T=10:26:25.460:XPid=1732:XTid=1632:C=5:

    ?OCUR:T=10:26:25.460:XPid=1732:XTid=1632:C=3:P=16384:R=0:

    !:E=0:T=10:26:25.460:XPid=1732:XTid=1632:C=6:

    ?GETS:T=10:26:25.480:XPid=1732:XTid=1632:C=5:I=1:L=113:

    !:E=0:T=10:26:25.480:XPid=1732:XTid=1632:C=5:

    ?GETS:T=10:26:25.480:XPid=1732:XTid=1632:C=5:I=1:L=113:

    !:E=0:T=10:26:25.480:XPid=1732:XTid=1632:C=5:


    Знак ?, расположенный в начале строки, показывает, что информация относится к обработке запроса. Затем идёт команда из блока CBL (например, OCUR, SLCT, DESC и т.п.). Если ведется полное протоколирование работы, то будет показана также  дополнительная информация: время выполнения запроса, сетевой адрес, идентификаторы процесса и нити, пославшие запрос. Далее идут параметры команд из блока CBL, которые описаны ниже.  Затем (на следующей строке) расположены данные, которые необходимы  ядру для выполнения команды (если они требуются): текст запроса, данные для загрузки в BLOB и т.д..


    Знак !, расположенный в начале строки, указывает на то, что это информация об ответе ядра на запрос пользователя. Она включает в себя код возврата ( :E=«код возврата» ) и признак ошибки (константа - @&# - а, затем параметры блока CBL), если была ошибка. Например,  строка, сообщающая об ошибке при выполнении запроса может выглядеть так        !:E=1025 @&#:C=0:   (см. пример 1)


    Знак # в начале строки (перед ? или !) - признак того, что запрос подан из триггера или хранимой процедуры.


    Параметры блока CTBL.

    Примечание. Подробно блок управления запросом CBL, описание его полей  и параметров приводится в документе  «Внутренний интерфейс».

     


    Приложение 2. Описание файла linter.out

    В приложении приводится пример информации, содержащейся  в файле сообщений ядра СУБД ЛИНТЕР (linter.out).


    В этот файл заносится информация о таких параметрах запуска ядра, как  размер очередей (Table, Column, Channel, File, User), размер пула ядра (POOL), количество процессов сортировок; а также значение переменной LINTER_MBX, состояние системных таблиц БД (Devices, Charset, Security, Procedures и т.д.).

     

    Сюда же вносятся предупреждения и сообщения об ошибках, возникающих в процессе работы СУБД.


    Файл сообщений является дополняемым, т.е. при последующих запусках СУБД  сообщения будут дописываться в конец файла linter.out.


    При старте ядра СУБД ЛИНТЕР на уже созданной базе данных в файл linter.out заносятся сообщения о дате создания БД и датах последнего запуска и останова базы данных:


    Database creation time:      22.10.2003 06:26:57.00

    Last database startup time:  12.11.2003 08:59:02.05

    Last database shutdown time: 12.11.2003 10:12:45.17


    При завершении работы СУБД в файл linter.out заносится сообщение:

    *** RDBMS Linter has been shut down ***


    Пример файла linter.out.


    22.10.2003 06:26:57 GENDB-I-CRFILE, Создается системная база данных ...

    GENDB-I-SUCCRD,база данных создана

    Database creation time:      22.10.2003 06:26:57.00

    Last database startup time:  Unknown

    Last database shutdown time: Unknown

    22.10.2003 06:26:59Linter SQL v. 6.1.5.5 connected to data base  "DEMO DATABASE    "

    22.10.2003 06:26:59 POOL holds 853 pages

    22.10.2003 06:26:59 Table    queue size  : 100

    22.10.2003 06:26:59 Column   queue size  : 500

    22.10.2003 06:26:59 Channel  queue size  : 100

    22.10.2003 06:26:59 File     queue size  : 30

    22.10.2003 06:26:59 User     queue size  : 100

    22.10.2003 06:26:59 Procedures table is absent

    22.10.2003 06:26:59 Procedures Dictionary table is absent

    22.10.2003 06:26:59 Security groups table is absent

    22.10.2003 06:26:59 Security levels table is absent

    22.10.2003 06:26:59 Devices table is absent

    22.10.2003 06:26:59 Stations table is absent

    22.10.2003 06:26:59 Replication rules table is absent

    22.10.2003 06:26:59 Trigger table is absent

    22.10.2003 06:26:59 Filter table is absent

    22.10.2003 06:26:59 File extension table is absent

    22.10.2003 06:26:59 Sequence table is absent

    22.10.2003 06:26:59 Charset table is absent

    22.10.2003 06:26:59 Translate table is absent

    22.10.2003 06:26:59 Errors table is absent

    22.10.2003 06:26:59 In-kernel backup table is absent

    22.10.2003 06:26:59 Auditing disabled

    22.10.2003 06:27:00 Transaction control is turned on

    22.10.2003 06:27:00 Max concurrent sorting processes : 1

    Existing control point(s) in database:

     Control point list is empty.

    22.10.2003 06:27:00 Kernel system parameters:  MBX - "615", Pid - 364

    22.10.2003 06:27:00Copyright (C) 1995-2003 Relex, Inc. All rights reserved.22.10.2003 06:27:00

    22.10.2003 06:27:00 Fail! NO LICENSE FOUND!

    22.10.2003 06:27:00 *** RDBMS Linter is running

    22.10.2003 06:27:00 *** Press <ENTER> for shell prompt

    22.10.2003 06:27:17 W-145 (OPENTH) : Invalid charset: CP437

    22.10.2003 06:27:18 E-150 (CHARSET) : Charset #0 is used

    22.10.2003 06:27:24 *** Linter is coming down ***

    22.10.2003 06:27:24 *** PP processing ***

    22.10.2003 06:27:24 *** Table queue processing ***

    22.10.2003 06:27:24 *** Column queue processing ***

    22.10.2003 06:27:24 *** User queue processing ***

    22.10.2003 06:27:24 *** File queue processing ***

    22.10.2003 06:27:24 *** RDBMS Linter has been shut down ***

    Database creation time:      22.10.2003 06:26:57.00

    Last database startup time:  12.11.2003 08:59:02.05

    Last database shutdown time: 12.11.2003 10:12:45.17

    12.11.2003 10:13:21Linter SQL v. 6.1.5.5 connected to data base  "DEMO DATABASE    "

    12.11.2003 10:13:21 POOL holds 357 pages

    12.11.2003 10:13:21 Table    queue size  : 100

    12.11.2003 10:13:21 Column   queue size  : 500

    12.11.2003 10:13:21 Channel  queue size  : 100

    12.11.2003 10:13:21 File     queue size  : 29

    12.11.2003 10:13:21 User     queue size  : 100

    12.11.2003 10:13:21 In-kernel backup table is absent

    12.11.2003 10:13:21 Auditing disabled

    12.11.2003 10:13:21 Transaction control is turned on

    12.11.2003 10:13:21 Max concurrent sorting processes : 1

    Existing control point(s) in database:

     Control point list is empty.

    12.11.2003 10:13:21 Kernel system parameters:  MBX - "",  Pid - 1676

    12.11.2003 10:13:21Copyright (C) 1995-2003 Relex, Inc. All rights reserved.12.11.2003 10:13:21

    12.11.2003 10:13:21 It's a DEMO license.

    12.11.2003 10:13:21 *** RDBMS Linter is running

    12.11.2003 10:13:21 *** Press <ENTER> for shell prompt

    12.11.2003 15:08:23 WARNING: invalid channel number: 3

    socket: 0 length = 1632 net = 0 cmd = RBAC. Continue work

    12.11.2003 15:08:23 WARNING: invalid channel number: 3

    socket: 0 length = 1632 net = 0 cmd = KILL. Continue work

    12.11.2003 15:08:27 *** Linter is coming down ***

    12.11.2003 15:08:27 *** PP processing ***

    12.11.2003 15:08:27 *** Table queue processing ***

    12.11.2003 15:08:27 *** Column queue processing ***

    12.11.2003 15:08:27 *** User queue processing ***

    12.11.2003 15:08:27 *** File queue processing ***

    12.11.2003 15:08:28 *** RDBMS Linter has been shut down ***