E-mail:
Пароль:
Забыли пароль?

FAQ

Pеляционная СУБД ЛИНТЕР®

FAQ


Товарные знаки

РЕЛЭКС™,ЛИНТЕР® являются товарными знаками, принадлежащими ЗАО НПП «Реляционные экспертные системы» (далее по тексту – компания РЕЛЭКС). Прочие названия и обозначения продуктов в документе являются товарными знаками их производителей, продавцов или разработчиков.

Интеллектуальная собственность

Правообладателем продуктов ЛИНТЕР® является компания РЕЛЭКС (1990-2018). Все права защищены.

Данный документ является результатом интеллектуальной деятельности, права на который принадлежат компании РЕЛЭКС.

Все материалы данного документа, а также его части/разделы могут свободно размещаться на любых сетевых ресурсах при условии указания на них источника документа и активных ссылок на сайты компании РЕЛЭКС: www.relex.ru и www.linter.ru.

При использовании любого материала из данного документа несетевым/печатным изданием обязательно указание в этом издании источника материала и ссылок на сайты компании РЕЛЭКС: www.relex.ru и www.linter.ru.

Цитирование информации из данного документа в средствах массовой информации допускается при обязательном упоминании первоисточника информации и компании РЕЛЭКС.

Любое использование в коммерческих целях информации из данного документа, включая (но не ограничиваясь этим) воспроизведение, передачу, преобразование, сохранение в системе поиска информации, перевод на другой (в том числе компьютерный) язык в какой-либо форме, какими-либо средствами, электронными, механическими, магнитными, оптическими, химическими, ручными или иными, запрещено без предварительного письменного разрешения компании РЕЛЭКС.

О документе

Материал, содержащийся в данном документе, прошел доскональную проверку, но компания РЕЛЭКС не гарантирует, что документ не содержит ошибок и пропусков, поэтому оставляет за собой право в любое время вносить в документ исправления и изменения, пересматривать и обновлять содержащуюся в нем информацию.

Контактные данные

394006, Россия, г. Воронеж, ул. 20-летия Октября, 119.

Тел./факс: (473) 2-711-711, 2-778-333.

e-mail: .

Техническая поддержка

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

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

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

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

Общие вопросы

Кто разрабатывает СУБД ЛИНТЕР?

СУБД ЛИНТЕР разрабатывает ЗАО НПП «РЕЛЭКС», входящее в Группу компаний РЕЛЭКС (г. Воронеж). Предприятие было основано 2 июля 1990 г. Группа специалистов, стоявших у его истоков, занималась проблемами, связанными с разработкой реляционных СУБД, с 1983 года.

Спектр технологий, которыми владеют специалисты Группы компаний РЕЛЭКС, достаточно широк: автоматизация управления технологическими процессами, разработка информационных систем, систем дистанционного обучения и тестирования, низкоуровневого программного обеспечения и драйверов и многое другое. Ряд продуктов компании прошёл государственную сертификацию.

РЕЛЭКС стремится максимально удовлетворить потребности заказчиков, обеспечить их переход на новые информационные технологии, предусмотреть перспективы их дальнейшего информационного развития. Для обеспечения высокого качества выпускаемой программной продукции на предприятии внедрена система менеджмента качества на основе стандартов серии ISO 9001 и СРПП ВТ.

На каких платформах работает СУБД ЛИНТЕР?

СУБД ЛИНТЕР может работать в среде большинства известных ОС на 32- и 64-разрядных процессорах.

Используемые ОС:

  • семейство LINUX (в том числе для 64-разрядных вариантов на всех платформах, включая Эльбрус, ARM и т.п.);

  • семейство Windows NT 32/64-битное исполнение (2000, XP, Vista, 7, 8, 8.1, 10);

  • Windows Server 2003/2008/2012/2016;

  • QNX (QNX6.3 и выше, ЗОСРВ «Нейтрино»).

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

Как можно получить СУБД ЛИНТЕР?

Загрузить демонстрационную версию СУБД для определенной ОС можно на сайте компании РЕЛЭКС в разделе «Скачать».

Приобрести полнофункциональную версию СУБД ЛИНТЕР можно, заполнив заявку на сайте (для этого требуется авторизоваться на сайте или пройти простую регистрацию), либо связаться с отделом продаж по тел. +7 (473) 2-711-711 или e-mail.

Какие виды лицензий СУБД ЛИНТЕР существуют?

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

  • серверная (с ограничением по количеству одновременных клиентских подключений);

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

Чем отличаются демонстрационная и лицензионная версии СУБД ЛИНТЕР?

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

Какие существуют партнерские программы?

Компания предлагает следующие партнерские программы:

  • для ВУЗов: бесплатное использование СУБД ЛИНТЕР в процессе обучения;

  • для дилеров: оптовая поставка СУБД с последующей розничной продажей для среднего и крупного бизнеса;

  • для разработчиков информационных систем: сотрудничество в совместных проектах, ориентированных на использование современных технологий управления базами данных.

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

Для получения подробной информации о партнерских программах следует обращаться в отдел маркетинга по тел. +7 (473) 2-711-711 или e-mail.

Чем различаются поставляемые версии СУБД ЛИНТЕР БАСТИОН и СТАНДАРТ?

Характеристика версий:

  • СУБД ЛИНТЕР БАСТИОН – сертифицированная СУБД, которая обеспечивает высокий уровень защиты данных от несанкционированного доступа и работу в режиме реального времени;

  • СУБД ЛИНТЕР СТАНДАРТ обеспечивает стандартные функции современной реляционной СУБД.

Что такое СУБД Линтер-ВС и каковы её отличия от СУБД ЛИНТЕР?

В конце 90-х годов по заказу АО ВНИИНС (г. Москва) в компании РЕЛЭКС была разработана СУБД Линтер-ВС 6.0 для ОС МСВС. Прототипом данной СУБД была коммерческая версия СУБД ЛИНТЕР 5.7 образца 1999 года, также разработанная в компании РЕЛЭКС.

Впоследствии, АО ВНИИНС начало распространение дистрибутивов СУБД для ОС МСВС, созданных на основе СУБД PostgreSQL, под торговыми марками СУБД Линтер-ВС 6.0.1 и выше. Таким образом, СУБД ЛИНТЕР компании РЕЛЭКС и СУБД Линтер-ВС компании ВНИИНС – совершенно разные программные продукты.

Где можно найти информацию о сертификатах, которые имеет СУБД ЛИНТЕР?

Актуальную информацию можно найти по адресу.

Где можно ознакомиться с эксплуатационной документацией СУБД ЛИНТЕР?

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

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

Существует ли документация СУБД ЛИНТЕР на английском языке?

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

В каких разделах документации можно ознакомиться с общей информацией о повышенных средствах защиты информации от несанкционированного доступа (СЗИ НСД)?

Информацию о СЗИ НСД СУБД ЛИНТЕР можно найти в следующих документах:

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

  • «СУБД ЛИНТЕР. Модель защиты данных», описание мандатного и дискреционного контроля доступа к данным.

  • «СУБД ЛИНТЕР. Администрирование комплекса средств защиты данных».

Как получать обновления СУБД ЛИНТЕР?

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

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

Связаться с отделом продаж можно по тел.: +7 (473) 2-711-711 или e-mail.

Как можно задать вопрос специалистам технической поддержки?

Отправить вопрос в «Службу технической поддержки» можно на сайте (для этого требуется авторизоваться на сайте или пройти простую регистрацию).

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

Полезными будут также наименование юридического или ФИО физического лица и сведения о наличии договора на оказание технической поддержки.

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

СУБД ЛИНТЕР предоставляет собственные средства разработки приложений и поддерживает широко распространенные:

  1. универсальные API: ODBC, JDBC, ADO.NET (включая поддержку LINQ и Entity Framework), Perl (включая DBI), PHP (включая PDO), Python, Ruby, Tcl/Tk, Qt;

  2. собственные программные интерфейсы для прикладного программирования на языках:

    • C/C++: intlib (низкоуровневый) и LinAPI (высокоуровневый);

    • PHP;

    • Python;

    • Qt;

    • Perl;

    • Ruby;

    • Java;

    • TCL/TK;

  3. среды разработки MS Visual Studio, а также взаимодействие со средами разработки через соответствующие интерфейсы (например, с NetBeans через JDBC-интерфейс);

  4. интерфейсы взаимодействия с офисными пакетами (например, c LibreOffice Base через ODBC-интерфейс);

  5. собственный процедурный язык для разработки триггеров и хранимых процедур.

С помощью каких интерфейсов можно работать с СУБД ЛИНТЕР из Delphi?

С помощью API интерфейсов ADO (через .NET или ODBC).

Какие параметры аутентификации по умолчанию используются при соединении с БД DEMO?

Пользователь – SYSTEM, пароль – MANAGER.

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

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

Пароль не должен превышать 18 символов («СУБД ЛИНТЕР. Справочник по SQL»).

Насколько эффективно работает СУБД ЛИНТЕР в среде с ограниченными ресурсами?

Для работы полнофункциональной СУБД достаточно 20 Мб оперативной памяти, а специализированные версии (например, в среде мобильных ОС Android или iOS) могут работать и при значительно меньших ее объёмах.

Как идентифицировать номер версии СУБД ЛИНТЕР?

Номер версии СУБД ЛИНТЕР можно определить следующими способами:

  • запустить на выполнение утилиту inl («Командный интерфейс») с ключом запуска -version

    C:\Linter\bin>inl -versionLinter SQL Bastion v. a.b.c.d for Windows 32-bitCopyright (C) 1990-2017 Relex, Inc. All rights reserved.
  • выполнить в утилите inl SQL-запрос:

    SQL> SELECT LINTER_VERSION();INL : начальное время : 19:34:01 конечное время : 19:34:01Linter SQL Bastion v. a.b.c.d for Windows 32-bitINL : выдано строк    : 1
  • посмотреть номер версии в текстовом файле linter.out, который находится в каталоге БД СУБД ЛИНТЕР.

Четыре числа, разделенные точками (a.b.c.d) – это и есть идентификатор СУБД, в котором a.b.c – номер версии (например, 6.0.17), d – номер сборки (выпуска) версии (например, 42).

Вопросы по архитектуре СУБД

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

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

Можно ли запустить несколько экземпляров СУБД ЛИНТЕР на одном компьютере?

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

Пользователю ОС Windows советуем воспользоваться программой «Администратор СУБД ЛИНТЕР», выполнив команды создания БД «База» → «Создать...» и запуска «База» → «Запустить...». Для доступа к каждой запущенной БД необходимо обратиться к ней по уникальному «Имени базы». Это можно осуществить с помощью переменной окружения LINTER_MBX, либо запустив приложения «Сетевой сервер» и «Сетевой клиент», что позволит обращаться к конкретной БД по её сетевому имени (указывается с помощью параметра «Псевдоним» в программе «Администратор СУБД ЛИНТЕР» при создании БД), который указывается либо через ключ запуска (для многих утилит СУБД ЛИНТЕР это параметр -n), либо в строке подключения API-интерфейса.

Как осуществляется одновременная работа пользовательского приложения с несколькими БД?

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

Функциональные возможности СУБД ЛИНТЕР

Есть ли возможность получить текст представления (VIEW)?

Получить текст представления можно следующими способами:

  • подать команду show <имя представления> в утилите inl («Командный интерфейс»);

  • выбрать пункт меню «Свойства» из контекстного меню представления узла дерева «Представления» в утилите lindeskx («Рабочий стол СУБД ЛИНТЕР»);

  • выбрать пункт меню «Таблицы» → «Справка» → «Показать запрос» в псевдографической утилите ldba («Администрирование СУБД»);

  • выполнить выгрузку представления из БД с помощью утилиты dbstore («Экспорт данных и структур») или утилиты migration («Миграция базы данных»);

  • в клиентском приложении, разработанном на основе интерфейса LinAPI («Прикладной интерфейс»), вызвать функцию LINTER_GetObjDesc.

Каковы особенности работы с таблицами «в памяти»?

Чтобы начать работу с таблицами «в памяти» необходимо не забыть выполнить ряд настроек:

  1. до начала работы сконфигурировать БД с помощью утилиты gendb (до запуска ядра на БД):

    • задать размер очереди для таблиц «в памяти» (команда вида SET IN-MEMORY TABLES 50;);

    • задать количество столбцов у таблиц «в памяти» (команда вида SET IN-MEMORY COLUMNS 250;);

    • задать количество файлов (команда вида SET IN-MEMORY FILES 50;);

  2. запуск ядра производить с ключом /INMEMPOOL (ключ вида /INMEMPOOL=100000, где значение задается в страницах по 4 Кбайт).

Для того, чтобы сохранить на диск внесенные в таблицу данные, необходимо выполнить команду SAVE TABLE <имя_таблицы>;, а для восстановления сохраненной ранее таблицы необходимо выполнить RESTORE TABLE <имя_таблицы>;.

Для автоматической загрузки и сохранения данных таблиц «в памяти» можно воспользоваться опциями AUTOLOAD и AUTOSAVE для таблиц «в памяти». Подробнее можно прочитать в документе «СУБД ЛИНТЕР. Справочник по SQL», раздел "Таблицы «в памяти»".

Операции над таблицами «в памяти» не включаются в транзакции, на них не действуют операции COMMIT и ROLLBACK. При ошибке операции над таблицей «в памяти» может быть выполнено автоматическое восстановление к старому состоянию, при этом на консоль ядра и в linter.out выдается сообщение "In-memory table ИМЯ_ТАБЛИЦЫ was rolled back to last saved/initial state after error КОД_ОШИБКИ".

Как быстро удалить все записи из таблицы при помощи SQL-запроса?

Самый быстрый вариант удаления всех записей из таблицы – выполнить SQL-команду TRUNCATE TABLE <имя таблицы>.

Команда TRUNCATE TABLE осуществляет ускоренную очистку таблицы и, возможно, усечение файлов таблицы. Чтобы очистка таблицы не привела к нарушению ссылочной целостности, на очищаемую таблицу не должно быть ссылок (FOREIGN KEY) из непустых таблиц БД.

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

Каковы особенности работы SQL-команды SET CONSTRAINTS ALL DEFERRED?

В СУБД ЛИНТЕР действие данной команды распространяется не на все поддерживаемые СУБД ограничения целостности, а только на FOREIGN KEY и CHECK.

Это означает, что после подачи команды SET CONSTRAINTS ALL DEFERRED проверка соответствия FOREIGN KEY и PRIMARY KEY и соблюдение CHECK-условий выполняются в момент подтверждения транзакции (операция COMMIT). В то же время проверки уникальности PRIMARY KEY и UNIQUE и отсутствие NULL-значений для столбцов с атрибутом NOT NULL по-прежнему производятся при выполнении каждого SQL-оператора манипулирования данными.

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

Работу со структурированными данными по типу объектных расширений язык SQL СУБД ЛИНТЕР не поддерживает. Для хранения структурированных данных пользователи СУБД ЛИНТЕР обычно используют столбцы типа BYTE (до 4000 байт на значение), BLOB (до 2 Гигабайт на значение), EXTFILE (ссылки на внешние по отношению к БД файлы).

Поддерживает ли СУБД ЛИНТЕР работу с геопространственными данными?

СУБД ЛИНТЕР обеспечивает ограниченную поддержку стандарта OpenGIS (работа с двумерными данными в декартовой системе координат).

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

Есть ли возможность импорта/экспорта данных между текстовыми файлами ОС и таблицами БД с помощью процедурного языка?

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

Как осуществить пакетную выгрузку из таблицы БД по некоторому условию?

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

Формат вызова утилиты dbstore для этой цели может выглядеть примерно так:

dbstore -u <имя пользователя>/<пароль> -j "select <имя столбца> [, … <имя столбца>] from <имя таблицы> where <условие>" -f <имя файла выгрузки>

Как осуществляется защита паролей в СУБД ЛИНТЕР? Обеспечивается ли уникальность паролей пользователей БД?

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

Может ли входным параметром хранимой процедуры быть имя другой хранимой процедуры?

В настоящее время такой возможности нет, и в ближайшее время ее реализация не планируется.

Одинаковы ли возможности утилиты «Рабочий стол СУБД ЛИНТЕР» в ОС GNU/Linux и ОС Windows?

Возможности утилиты «Рабочий стол СУБД ЛИНТЕР» в ОС GNU/Linux и ОС Windows идентичны. Следует обратить внимание, что в ОС GNU/Linux имя исполняемого файла утилиты «Рабочий стол СУБД ЛИНТЕР» - "lindesk", а в ОС Windows – "lindeskx.exe".

Если в коде хранимой процедуры использовать функцию PRINT() и запустить эту процедуру в утилите inl, куда будет направлен вывод функции?

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

Пример вывода функции PRINT
Рисунок 1. Пример вывода функции PRINT

Сообщения функции PRINT не передаются по сети.

Как получить список БД на ЛИНТЕР-сервере по умолчанию с помощью .NET? Можно ли использовать для этого метод GetSchema() экземпляра LinterDbConnection?

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

Вопросы синтаксиса (SQL-запросов, языка хранимых процедур и команд утилит)

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

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

Можно ли в команде CREATE STATION в качестве адреса станции использовать вместо IP-адреса имя локального узла (компьютера) сети?

Нет, для протокола TCP/IP обязательно указывать IP-адрес.

Есть ли в СУБД ЛИНТЕР аналог имеющейся в СУБД MS SQL функции ISNULL (check_expression, replacement_value)?

Да, есть:

  • NVL (check_expression, replacement_value) – обычная скалярная функция;

  • IFNULL (check_expression, replacement_value) – макропоследовательность в ODBC и JDBC.

Есть ли в СУБД ЛИНТЕР возможность задавать пользовательские имена для ограничений целостности (CONSTRAINTS)?

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

Какой синтаксис для иерархических запросов поддерживает СУБД ЛИНТЕР?

СУБД ЛИНТЕР поддерживает синтаксис CONNECT BY в стиле ORACLE, включая ORDER SIBLINGS BY, хотя и не поддерживает некоторые другие функции ORACLE, связанные с иерархическими запросами (см. документ «СУБД ЛИНТЕР. Справочник по SQL», раздел «Иерархический запрос»).

Являются ли имена таблиц, столбцов и других объектов в СУБД ЛИНТЕР регистрозависимыми?

Именование объектов БД выполняется в соответствии со стандартом SQL. Имена объектов (идентификаторы) в двойных кавычках являются регистрозависимыми и могут содержать любые символы. Алфавитно-цифровые идентификаторы приводятся к верхнему регистру и могут содержать только латинские буквы, цифры и символы _ и $.

Где можно посмотреть полный список SQL-операторов, поддерживаемых СУБД ЛИНТЕР?

В указателе операторов документа «СУБД ЛИНТЕР. Справочник по SQL».

Чем различаются операторы EXECUTE и EXECUTE DIRECT процедурного языка?

Текст SQL-запроса оператора EXECUTE транслируется (в частности, проверяется синтаксически и семантически) в процессе трансляции процедуры, т.е. к моменту трансляции процедуры текст SQL-запроса оператора EXECUTE должен быть полностью определен.

В отличие от оператора EXECUTE, текст SQL-запроса оператора EXECUTE DIRECT транслируется и готовится к обработке непосредственно в процессе выполнения хранимой процедуры. Это позволяет формировать SQL-запросы динамически, например, с помощью функции MAKESTR или конкатенации строк: создавать новый SQL-запрос «с нуля» или модифицировать указанный в тексте процедуры шаблон SQL-запроса.

Где можно посмотреть полный список ключевых слов утилиты gendb?

Список ключевых слов и их сокращений утилиты gendb приведен в приложении 2 документа «СУБД ЛИНТЕР. Создание и конфигурирование базы данных».

Администрирование и эксплуатация СУБД

Существует ли возможность пакетной установки дистрибутива СУБД ЛИНТЕР?

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

В ОС Linux дистрибутив СУБД ЛИНТЕР представляет собой командный файл, в котором со смещением 1024 расположен tar-архив СУБД. Команды для извлечения этого архива прописаны в первых 1024 байтах командного файла дистрибутива. Для установки СУБД ЛИНТЕР в пакетном режиме:

  1. извлечь tar-архив из дистрибутива

    dd if=Distributive_name of=linter.tar bs=1024 skip=1
  2. распаковать полученный tar-архив

    tar xf linter.tar

    В результате будет получено 4 файла, один из которых – tar gzip архив (linter.tar.gz или linter.tar.Z)

  3. распаковать полученный gzip-архив

    tar xfz linter.tar.gz

В результате будет создан каталог /linter с исполняемыми файлами, готовыми для запуска и использования. Распакованный таким образом дистрибутив СУБД не будет сконфигурирован для сборки примеров и программных интерфейсов.

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

Тихая установка СУБД ЛИНТЕР:

  1. выполнить установку в интерактивном режиме с протоколированием всех действий в указанном файле (в команде ниже это файл setup.iss):

    linter-<версия СУБД ЛИНТЕР>-windows.exe /r /f1"С:\tmp\silent\setup.iss"

    Например,

    linter-bastion-6.0.17.48-windows.exe /r /f1"С:\tmp\silent\setup.iss"
  2. повторить на всех других компьютерах, где требуется установка СУБД, тихую (неинтерактивную) установку, используя сохранённые настройки (setup.iss), и выводя протокол установки в файл протоколирования (setup.log)

    linter-<версия СУБД ЛИНТЕР>-windows.exe /s /f1"С:\tmp\silent\setup.iss" /f2"С:\tmp\silent\setup.log"

    Например,

    linter-bastion-6.0.17.48-windows.exe /s /f1"С:\tmp\silent\setup.iss" /f2"С:\tmp\silent\setup.log"

Какие файлы из дистрибутива СУБД ЛИНТЕР нужны для работы сетевого клиента СУБД в ОС Windows?

Для работы сетевого клиента в ОС Windows нужны следующие файлы из подкаталога \bin установочного каталога СУБД ЛИНТЕР:

  • dbc_tcp.exe – исполняемый модуль сетевого клиента;

  • dbcapi32.dll, dectic32.dll, inter32.dll – разделяемые библиотеки разработчика клиентских приложений для СУБД ЛИНТЕР;

  • nodetab – текстовый файл сетевой конфигурации клиента (см. документ «СУБД ЛИНТЕР. Сетевые средства» из комплекта документации СУБД ЛИНТЕР).

Этого достаточно, чтобы запускать сетевой клиент dbc_tcp.exe при старте ОС через механизм служб ОС Windows (см. команду ОС sc) перед запуском клиентского приложения или из самого приложения.

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

  • модуль драйвера qsqllinter.dll (процесс сборки самого драйвера подробно описан в файле linqt\readme.txt каталога установки СУБД или в пользовательской документации);

  • дополнительная библиотека (в 32-разрядной версии СУБД ЛИНТЕР: lapi325.dll, в 64-разрядной версии СУБД ЛИНТЕР: lapi64.dll.

Как можно включить установку драйвера сетевого клиента в установку клиентского приложения?

Для работы сетевого клиента в ОС Windows требуются следующие файлы из установочного каталога СУБД ЛИНТЕР:

  1. исполняемый модуль сетевого клиента:

    • bin\dbc_tcp.exe;

  2. разделяемые библиотеки для модуля сетевого клиента:

    • в 32-разрядной версии СУБД ЛИНТЕР: bin\dbcapi32.dll, bin\dectic32.dll, bin\inter325.dll;

    • в 64-разрядной версии СУБД ЛИНТЕР: bin\dbcapi64.dll, bin\dectic64.dll, bin\inter64.dll.

Как установить серийный номер лицензии для СУБД ЛИНТЕР под ОС GNU/Linux, QNX?

Для установки номера лицензии служит специальная утилита setlic, находящаяся в подкаталоге /bin установочного каталога СУБД ЛИНТЕР.

Вам предоставляется файл license.key с лицензионной информацией для него. Если такой файл есть, то необходимо выполнить следующие действия:

  1. перейти в каталог /bin установочного каталога СУБД ЛИНТЕР;

  2. остановить все запущенные экземпляры СУБД ЛИНТЕР (если они есть);

  3. скопировать файл license.key в каталог /bin установочного каталога СУБД ЛИНТЕР;

  4. подать команду setlic file license.key.

Если такого файла нет, то выполнить шаги 1) и 2), а затем подать команду setlic и ввести запрашиваемую утилитой информацию из лицензионного соглашения.

При старте СУБД выполняет проверку лицензии и выдает на консоль сообщение типа:

Checking license in progress... OK

В случае каких-либо проблем с проверкой – одно из следующих сообщений:

Invalid license information!Fail! NO LICENSE FOUND!It's a DEMO licenseLicense has expired at DD-MM-YYYYNNNN runs remainNNNN days remainExpiration date DD-MM-YYYY

При возникновении вопросов обратитесь в «Службу технической поддержки».

Как узнать, могут ли сетевые рабочие станции подключиться к СУБД?

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

select 1 = GETBYTE($$$S14, 90) as "canAccessFromUnlistedStations", 1 = GETBYTE($$$S14, 89) as "canAccessToUnlistedDevices" from LINTER_SYSTEM_USER.$$$SYSRL where $$$S11 = 0;

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

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

В ОС Windows не выполняется переустановка СУБД ЛИНТЕР после её предшествующего удаления.

Возможно, остались либо пользовательские элементы, либо элементы, которые не были удалены в процессе деинсталляции.

Возможные варианты устранения проблемы повторной установки:

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

  2. убедиться, что в установочном каталоге повторной установки отсутствуют пользовательские данные. В этом случае допускается полное удаление установочного каталога;

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

  4. запротоколировать процесс переустановки, запустив инсталлятор с ключом /debuglog:

     linter-<версия СУБД ЛИНТЕР>-windows.exe/debuglog ”C:\SetupLogFile.txt”

    Например,

    linter-bastion-6.0.17.48-windows.exe/debuglog ”C:\SetupLogFile.txt”

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

Как в ОС Windows определить путь к установленной СУБД ЛИНТЕР?

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

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Relex, Ltd.\Linter SQL Server\5.1.

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

Как СУБД ЛИНТЕР указать местоположение БД?

Местоположение БД можно указать следующими способами:

  1. c помощью ключа /BASE <каталог> в командной строке запуска экземпляра СУБД, где <каталог> – полный путь до каталога основных файлов БД (файлов системных таблиц);

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

Есть ли возможность миграции с БД PostgreSQL в БД ЛИНТЕР? Какая версия СУБД ЛИНТЕР рекомендуется?

В составе дистрибутива СУБД ЛИНТЕР для ОС Windows поставляется утилита datariv (см. документ «СУБД ЛИНТЕР. Конвертер баз данных»), использующая ODBC-интерфейс для доступа к данным БД-источника (PostgreSQL) и БД приемника (ЛИНТЕР). Она позволяет с минимальными затратами переносить данные с различных БД в БД ЛИНТЕР.

Также миграцию БД можно осуществить вручную с помощью SQL-запросов и CSV-файлов (см. утилиту loarel «СУБД ЛИНТЕР. Импорт данных»).

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

Является ли объем оперативной памяти процесса сортировки частью памяти пула ядра СУБД?

Нет. Пул ядра СУБД используется только ядром СУБД и не включает в себя пул процесса сортировки.

Файл LINTER.LOG не обновляется сразу после запроса к СУБД. Кэшируется ли он?

Запись в файл протоколирования работы ядра СУБД linter.log осуществляется через буфер ввода вывода файловой подсистемы ОС, поэтому сброс заполненного в оперативной памяти буфера на диск производится по мере его заполнения. В случае нештатного завершения работы ОС возможна потеря части данных файла протоколирования.

Почему нет возможности указать в качестве кодовых страниц UNICODE и UTF-8 в диалоге установки? Как использовать кодировки UNICODE и/или UTF-8 в системных и пользовательских таблицах?

Словарь БД может использовать только однобайтовую кодировку (т. е. многобайтовые кодировки UNICODE и UTF-8 неприменимы для словаря БД). Кодировки UNICODE и UTF-8 могут использоваться только для данных пользовательских таблиц.

Несмотря на отсутствие кодировки UTF-8 в списке кодировок пользовательских таблиц диалогового окна «Кодовые страницы», её можно указать с помощью SQL-запроса:

SET DATABASE DEFAULT CHARACTER SET "UTF-8";

либо задать индивидуальную кодировку для конкретной создаваемой таблицы с помощью запроса

create or replace table <имя таблицы> CHARACTER SET UTF-8 (...);

Столбцы c типом данных NCHAR и NVARCHAR всегда хранят данные в UNICODE-кодировке, независимо от настроек кодовых страниц.

При выводе символьных данных на терминал в кодировке UTF-8 происходит их усечение до того количества символов, которое реально помещается в соответствующей длине символьного поля.

Для lindesk

Нужно указать кодировку KOI8-R по умолчанию, а не UTF-8:

  • открыть консоль;

  • войти в каталог linter/bin;

  • ввести

    export LD_LIBRARY_PATH=$PWDexport LANG="ru_RU.KOI8-R"

Для ldba

Нужно указать кодировку KOI8-R по умолчанию, а не UTF-8:

  • открыть консоль;

  • войти в каталог linter/bin;

  • ввести

    export LANG="ru_RU.KOI8-R"

Для inl

  1. Указать кодировку KOI8-R для хранения данных в БД.

    set database default character set "KOI8-R";set database names "KOI8-R";
  2. Передать данные в кодировке KOI8-R.

    • Например, создать файл 1.sql в кодировке KOI8-R (содержимое файла должно быть в кодировке KOI8-R):

      create or replace table aaa (ch char(4));insert into aaa values ('АБВГ');select * from aaa;
    • Выполнить его в приложении inl, предварительно указав, что данные будут передаваться в KOI8-R с помощью переменной окружения LINTER_CP:

      export LINTER_CP=KOI8-R../bin/inl -u SYSTEM/MANAGER -f 1.sql > 1.sql.out

    В результате можно увидеть, что в БД поместилось 4 русских символа и считалось аналогично 4 русских символа.

Почему не получается установить размер пула ядра СУБД (ключ запуска /pool), равный 525000 при объеме оперативной памяти компьютера в 16 Гбайт?

Это общее ограничение для ПО на любом 32-х битном процессоре. Так, например, для ОС Windows каждый 32-х битный процесс максимально может запросить 2 Гбайта оперативной памяти. Это необходимо учитывать при задании размеров пула ядра СУБД, пула сортировки и числа процессов сортировки для 32-х битного ядра СУБД ЛИНТЕР. При использовании 64-x битного процессора и соответствующей разрядной версии ядра СУБД (linter64.exe для ОС Windows) данного ограничения нет.

Почему не получается подключиться к СУБД с удаленного компьютера?

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

Для повышения защиты данных от несанкционированного доступа СУБД может выполнять контроль доступа и запрет соединения с СУБД с узлов локальной сети, которые в БД не зарегистрированы. В этом случае необходимо либо зарегистрировать в БД конкретный локальный узел, либо разрешить доступ к СУБД всем текущим и вновь добавляемым узлам сети с помощью SQL-запроса:

grant access on unlisted station to all;

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

Как запускать в ОС Windows службу СУБД ЛИНТЕР из её установочного каталога?

Для запуска служб в ОС Windows необходимо иметь соответствующие права.

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

  1. c помощью графического интерфейса:

    • выполнить команду «Панель управления» → «Администрирование» → «Службы»;

    • выбрать службу «Linter SQL Server (Demo)»;

    • нажать кнопку «Запуск службы» (либо выбрать пункт контекстного меню «Запустить»).

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

  2. c помощью командного интерфейса выполнить в командной строке ОС команду:

    sc start LinSQLSrvr(Demo)

    Более подробную информацию о команде ОС sc можно получить, вызвав её без параметров.

Кто и как дает пользователям БД права на запуск хранимых процедур?

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

Есть 2 типа прав на запуск чужой процедуры:

  1. право на выполнение чужой процедуры с собственными правами на доступ к объектам БД:

    GRANT EXECUTE ON <имя процедуры> TO <имя пользователя>;

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

  2. право на выполнение чужой процедуры с правами её создателя на доступ к объектам БД:

    GRANT EXECUTE AS OWNER ON <имя процедуры> TO <имя пользователя>;

    В этом случае SQL-запросы в указанной хранимой процедуре будут выполняться с правами её создателя.

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

  • в списке хранимых процедур соответствующего автора выбрать нужную процедуру;

  • с помощью пункта меню «Дискреционный доступ» контекстного меню выбранной процедуры установить соответствующее право выполнения процедуры.

При SQL-запросе запуска хранимой процедуры другим пользователем необходимо указывать полное имя процедуры, включая имя её схемы, которое обычно совпадает с именем создателя процедуры.

Как можно наблюдать за работой СУБД ЛИНТЕР (счетчики, статистика, нагрузка) или выполнять её мониторинг?

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

  1. в процессе работы ядро СУБД ЛИНТЕР создает виртуальные таблицы $$$CHAN и $$$SYSINFO, к которым можно обращаться как к обычным таблицам БД. Таблица $$$CHAN хранит информацию об открытых соединениях с СУБД и их параметрах. Таблица $$$SYSINFO содержит только одну запись, в которой находятся статистические параметры всей СУБД и суммарные значения счетчиков выполненных СУБД операций. Описание данных таблиц приведено в документе «СУБД ЛИНТЕР. Системные таблицы и представления». С примером настройки мониторинга можно ознакомиться в статье «Мониторинг под рукой на IxoraRMS. Быстро и со вкусом».

  2. при запуске ядра СУБД ЛИНТЕР можно указать ключ /TRACE. Он задает различные режимы записи информации об обрабатываемых СУБД SQL-запросах в трассировочный файл lintrace.log (размещается в каталоге БД). Более подробная информация об этом ключе приведена в документе «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows». Файл lintrace.log содержит информацию о процессе обработки SQL-запросов и временных затратах на их выполнение;

  3. файлы linter.log, lintrace.log позволяют отследить длительность выполнения SQL запросов, очередность их выполнения, номера используемых каналов и другую техническую информацию. Описание структуры файла linter.log и способы его получения приведены в документе «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows»;

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

  5. с помощью команд GET и SET утилиты gendb можно посмотреть значения конфигурационных параметров СУБД. Подробно команды описаны в документе «СУБД ЛИНТЕР. Создание и конфигурирование базы данных».

Как настроить СУБД ЛИНТЕР для достижения наилучшей производительности в условиях ограниченного объема оперативной памяти? Может быть существует стандартный набор настроек для таких случаев?

СУБД ЛИНТЕР ориентирована на работу в условиях ограниченных ресурсов (оперативной памяти).

В СУБД ЛИНТЕР реализовано два режима выделения ресурсов:

  1. режим автоконфигурирования (задается параметром SET AUTOCONFIG ON при конфигурировании БД утилитой gendb). В этом режиме ядру СУБД и процессам сортировки выделяется объем памяти, пропорциональный объему доступной оперативной памяти компьютера. Память под системные очереди таблиц, столбцов, файлов, и пользователей выделяется автоматически в зависимости от текущих размеров соответствующих системных таблиц;

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

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

Автоконфигурирование включается подачей команды SET AUTOCONFIG ON в утилите gendb или в настройках БД из графических средств управления.

Соответственно, отключение автоконфигурирования производится командой SET AUTOCONFIG OFF в утилите gendb или в настройках БД из графических средств управления.

В режиме ручного конфигурирования объем оперативной памяти, выделяемой ядру СУБД, можно задать в командной строке запуска ядра СУБД следующими ключами:

  • /POOL – задает объем памяти для ядра СУБД (в страницах по 4 Кбайт);

  • /SPOOL – задает объем памяти для процессов сортировки (в страницах по 4 Кбайт);

  • /PPOOL – задает объем памяти для подсистемы полнотекстового поиска (см. документ «СУБД ЛИНТЕР. Полнотекстовый поиск в базе данных»), в случае если клиентское приложение использует полнотекстовый поиск, настоятельно рекомендуется выделять память вручную, так как работа подсистемы полнотекстового поиска с параметрами по умолчанию может быть медленной;

  • /INMEMPOOL – задает объем памяти для хранения страниц таблиц «в памяти» (предварительно СУБД должна быть настроена для работы с таблицами «в памяти» с помощью утилиты gendb).

Более подробное описание ключей запуска ядра СУБД см. в документах «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows» и «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС UNIX, QNX».

Есть ли возможность управления ресурсами, влияющими на производительность СУБД ЛИНТЕР?

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

Для создания системных и рабочих файлов БД, конфигурирования БД и оптимизации работы с ней используется утилита «Создание и конфигурирование базы данных» (gendb). С её помощью можно управлять:

  • размерами файлов бит-векторов, сортировки;

  • размерами и параметрами системного журнала СУБД;

  • количеством процессов сортировки;

  • количеством каналов и выделяемой им оперативной памяти;

  • максимально возможным размером записи пользовательских таблиц;

  • параметрами для работы с таблицами «в памяти».

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

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

Подробнее о ключах запуска СУБД ЛИНТЕР см. в документах «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows» и «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС UNIX, QNX».

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

Как проверить «живучесть» соединения с СУБД ЛИНТЕР (принимает ли СУБД запросы от клиентов)?

В СУБД ЛИНТЕР для проверки «живучести» соединения с СУБД достаточно вызвать на выполнение утилиту inl (см. документ «СУБД ЛИНТЕР. Командный интерфейс») и подать SQL-запрос:

select 1;

Если на консоль будет выдан ответ

|  1|

это означает, что соединение с СУБД ЛИНТЕР существует.

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

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

  • с помощью стандартных DDL-запросов языка SQL;

  • в утилите «Рабочий стол СУБД ЛИНТЕР» (lindeskx): раскрыть узел «Таблицы», выделить модифицируемую таблицу и выбрать пункт контекстного меню «Столбцы»;

  • в утилите «Администрирование СУБД» (ldba) выбрать пункт меню «Таблицы», выделить модифицируемую таблицу и нажать кнопку «Изменить».

Столбцы типов BLOB и EXTFILE, а также столбцы с атрибутами AUTOINC не могут быть добавлены после создания таблицы – эти столбцы необходимо указывать сразу при создании таблицы с помощью SQL-конструкции CREATE TABLE.

По умолчанию длина одной записи не может превышать 4 Кб (не считая BLOB-значений).

Как создать файл протоколирования работы ядра СУБД ЛИНТЕР?

Для создания файла протоколирования работы ядра СУБД (log-файла), в котором фиксируются все SQL-запросы клиентских приложений к ядру СУБД ЛИНТЕР и информация о результатах их обработки, следует при запуске ядра СУБД указать ключ /LOG. Альтернативный вариант – подать SQL-запрос SET LOG ON или (только в ОС Windows) установить соответствующий флажок в пункте меню оконного интерфейса ядра СУБД «Информация → Вывод в LINTER.LOG → Обычный». После этого в каталоге БД создается файл linter.log, в который записывается протоколируемая информация. Для отключения протоколирования следует подать SQL-запрос SET LOG OFF или (только в ОС Windows) выбрать пункт меню «Информация → Вывод в LINTER.LOG → Запретить».

Если необходим расширенный протокол работы ядра СУБД (содержащий временные отметки для SQL-запросов клиентских приложений и результатов их обработки ядром СУБД, значения параметров претранслированных SQL-запросов и некоторую другую информацию), то при запуске ядра СУБД необходимо указать ключ /LOGALL. Альтернативный вариант: подать SQL-запрос SET LOG FULL или (для ОС Windows) выбрать пункт меню «Информация → Вывод в LINTER.LOG → Расширенный».

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

Необходимо отметить, что протоколирование выполнения SQL-запросов и трассировка их выполнения – разные операции. Трассировка включается ключом /TRACE в командной строке запуске ядра СУБД.

Как найти в файле протоколирования значения параметров для параметризованных SQL-запросов?

Порядок действий:

  1. включить полное протоколирование работы ядра СУБД (например, с помощью ключа /LOGALL в командной строке запуска ядра СУБД).

  2. выполнить параметризованный SQL-запрос, например, в утилите «Командный интерфейс» (inl):

    set log on;select count(*) from auto where make=?;FORDset log off;

    В результате в файл протоколирования будут добавлены записи типа:

    !:E=0:T=12:37:29.551:XPid=15112:XTid=5392:C=14:?TRAN:T=12:37:29.551:XPid=15112:XTid=5392:C=14:L=65535:P=402702336:select count(*) from auto where make=?;!:E=0:T=12:37:29.561:XPid=15112:XTid=5392:C=14:H=58424:L=332:?EXEC:T=12:37:29.561:XPid=15112:XTid=5392:C=14:L=65535:H=58424:S=332:XPar(1|1[4])='FORD':4A01000000C01C000100010038E400004801000030010000FAFF000000200000FFFF00001400010000CCFFFFFFFF0101040000000001000002B8ED010000000000B8ED01000000000000FFFF01000100020001000400010001000000000001000100000000000001180018000000000000FFFFFFAD00000001000000FFFF0200FFFF010001000000010000000100000000000000FFFF0000000000040000FFFF00000000000001007B0400001400010000CC020000000000FFFF01000400020A00CC000001000300000000FFFFFF00001400010000CC0200020000000000FFFF1400010000CC02000D0080000000000001000A0000CC0000050000000000FFFF0400020A00CC000003000500FFFF140000000100010000000000FF000300000000000200000000000001FFFFAD00000000000010464F52440000000000000000000000000000000000000000!:E=0:T=12:37:29.561:XPid=15112:XTid=5392:C=14:A=1:?GETA:T=12:37:29.561:XPid=15112:XTid=5392:C=14:L=0:!:E=0:T=12:37:29.561:XPid=15112:XTid=5392:C=14:?GETA:T=12:37:29.561:XPid=15112:XTid=5392:C=14:L=3914:!:E=0:T=12:37:29.561:XPid=15112:XTid=5392:C=14:?GETM:T=12:37:29.561:XPid=15112:XTid=5392:C=14:I=0:L=65535:K=13107:!:E=2:T=12:37:29.561:XPid=15112:XTid=5392:C=14:?:T=12:37:29.561:XPid=15112:XTid=5392:C=14:L=65535:P=402653184:R=0:
  3. с помощью любого простого текстового редактора выполнить поиск элементов вида XPar. Найденная строка вида XPar(1|1[4])='FORD' содержит информацию о значении подставленного параметра, с которым был выполнен SQL-запрос.

С какими ключами рекомендуется запускать утилиту testdb («Тестирование базы данных»)?

По умолчанию утилита testdb запускается с очень небольшим размером пула. Для существенного ускорения работы рекомендуется задавать пул ключом -p <кол-во страниц> (размер указывается в страницах по 4 Кбайт), например: testdb.exe -p 100000 c:\Linter\db\demo

Если тестирование БД выполняется не очень долго (несколько минут) и проблем в БД не ожидается, то в первый раз лучше запустить утилиту testdb («Тестирование базы данных») без дополнительных ключей.

Если в БД выявлены проблемы и эти проблемы могут быть устранены утилитой, то запуск testdb без дополнительных ключей выдаст в конце работы рекомендацию (на консоль, также и в log-файл, если задать ключ -f), с какими ключами нужно запустить testdb повторно, например:

Ошибки могут быть исправлены утилитой TESTDB. Запустите TESTDB с ключом -r.Ошибки могут быть исправлены с помощью SQL-файла корректировки. Запустите TESTDB с ключом -s имя_файла, а затем выполните полученный SQL-файл при активном Линтере через Linter Desktop или INL.Для исправления предупреждений в битовых картах используйте ключи -r -ds.Для стирания сильно поврежденных данных используйте ключи -r -dr.Для удаления лишних файлов используйте ключи -r -de.Для удаления таблиц, файлы которых не существуют, используйте ключи -r -s ИМЯ_ФАЙЛА.sql -dt.Для удаления индекса используйте ключи -r -t table_name -di.Для удаления поврежденных записей SECURITY используйте ключи -r -da -s ИМЯ_ФАЙЛА.sql.Для удаления неверных ссылок используйте ключи -df -s ИМЯ_ФАЙЛА.sql.

Если нужно автоматизировать процесс тестирования БД, то после первого выполнения утилиты testdb можно поискать с помощью команды grep в log-файле рекомендации и, при их наличии, повторно выполнить утилиту testdb с указанными ключами, а затем, возможно, запустить СУБД и выполнить сгенерированный утилитой testdb SQL-скрипт корректировки БД.

Способы устранения или обхода типичных проблем

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

Возможные причины:

  1. установочный файл скачан как текстовый, а нужно – как двоичный (можно посмотреть его в 16-ричном формате – код перевода строки должен быть виден как 0A, а не как 0D0A);

  2. установочный файл не предназначен для данной ОС (например, дистрибутив для 64-разрядной ОС пытаются установить в 32-разрядной ОС);

  3. в результате какого-либо сбоя получен файл нулевого размера и он, соответственно, не запускается.

Сообщение о нехватке оперативной памяти при переходе СУБД ЛИНТЕР с 64 на 32-разрядную версию. В чем может быть причина?

Сообщение вызвано тем, что СУБД запоминает в реестре ОС обновляемые параметры своего запуска. Предыдущим запуском ядра СУБД был запуск 64-разрядной версии со значениями ключей /pool (/spool) около 2 Гбайт. Запуск 32-разрядного ядра с такими запомненными в реестре значениями ключей не возможен из-за ограничений ОС. Для устранения проблемы необходимо однократно запустить 32-разрядную версию ядра СУБД с допустимыми значениями ключей, например, /pool=5000 /spool=5000. В результате будет выполнено обновление хранимых в реестре значений параметров запуска СУБД по умолчанию, что позволит запускать 32-разрядную версию СУБД. После этого перезапустить ядро СУБД с необходимыми (но допустимыми для 32-разрядной СУБД) значениями ключей /pool (/spool). Рекомендация применима к БД как с включенным режимом автоконфигурирования, так и без него.

При запуске утилиты «Администратор СУБД ЛИНТЕР» в ОС Windows выдается сообщение «Системная ошибка 1722 при подключении к серверу <имя компьютера>. Обращаться к серверу <имя компьютера> в будущем?». После этого, в частности, не видна локальная демонстрационная БД. В чем причина этого сообщения и как его устранить?

Возможно, не запущена служба Linter Instance Manager. Следует попробовать запустить её вручную («Панель управления» → «Администрирование» → «Службы»), и после этого повторно вызвать «Администратор СУБД ЛИНТЕР».

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

Не удаётся подключиться к удалённой БД с любыми учётными данными (в том числе и SYSTEM/MANAGER). Возвращается ошибка «Нарушение привилегий» (код 1022). Сетевой клиент и сетевой сервер запущены. Приложения, запущенные локально на том же компьютере, что и СУБД, работают с ней нормально. В чём может быть причина?

По умолчанию СУБД блокирует доступ к БД с компьютеров локальной сети, которые в ней не зарегистрированы (кроме доступа к демонстрационной БД, поставляемой в дистрибутиве, если в неё не внесены дополнительные настройки). В этом случае необходимо разрешить доступ к БД конкретного компьютера или разрешить доступ всем компьютерам (текущим и подключаемым позднее), выполнив следующий SQL-запрос:

grant access on unlisted station to all;

См. документ «СУБД ЛИНТЕР. Администрирование комплекса средств защиты данных».

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

Для создания хранимых процедур в БД должна присутствовать системная таблица $$$PROC, которая создается скриптом systab.sql из подкаталога \dict установочного каталога СУБД ЛИНТЕР (например, с помощью утилиты «Командный интерфейс» (inl) или утилиты «Рабочий стол СУБД ЛИНТЕР»). Подробная информация об инициализации системных таблиц представлена в документе «СУБД ЛИНТЕР. Создание и конфигурирование базы данных» и в файле dict\readme.txt.

При попытке создания таблицы выдается код завершения 1504. Что это означает и как устранить ошибку?

Код завершения 1504 означает, что максимальная длина одной записи таблицы превышает значение по умолчанию 4 Кбайт. Чтобы снять это ограничение, необходимо выполнить в утилите «Командный интерфейс» (inl) запрос:

ALTER DATABASE SET RECORD SIZE LIMIT 65535;

и перезапустить ядро СУБД ЛИНТЕР.

СУБД ЛИНТЕР не запускается и выдает сообщение «Conflict between system time and time of last db shutting». Что делать в таком случае?

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

Подробнее см. в документе «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС UNIX, QNX» раздел «Ключи командной строки запуска СУБД ЛИНТЕР».

Что делать, если при попытке создания новой таблицы появляются коды завершения 1500, 1501, 1502?

Если при попытке создания новой таблицы появляются коды завершения:

  • 1500 – no free row numbers in SYSREL (SYSREL overflow);

  • 1501 – no free row numbers in SYSUSR (SYSUSR overflow);

  • 1502 – no free row numbers in SYSATR (SYSATR overflow);

то следует увеличить объем системных таблиц с помощью утилиты testdb с параметрами запуска -at N, -ac N, -au N, которые расширяют конвертер таблицы $$$SYSRL, $$$ATTRI, $$$USR соответственно не менее чем на N позиций.

Как добавить BLOB-столбец в существующую таблицу?

Прямое добавление BLOB-столбцов в таблицу запрещено, но это можно сделать косвенным путем с помощью операции копирования таблицы.

Пусть дана таблица:

create or replace table sourceTable (i int, c nvarchar(20));

Необходимо создать таблицу с аналогичной структурой, добавив в неё BLOB-столбец:

create or replace table destinationTable (i int, c nvarchar(20), b blob);

и затем скопировать в неё данные из исходной таблицы:

insert into destinationTable (i, c) select * from sourceTable;

В ответ на поданный SQL-запрос получен код завершения 812 «Запрос слишком сложен (или внутренняя ошибка ядра)». Как устранить ошибку?

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

Для увеличения доступной памяти нужно выполнить SQL-запрос:

ALTER DATABASE SET CHANNEL MEMORY LIMIT nnn;

По умолчанию память канала ограничена 64 Кб. Параметр nnn задаётся в байтах и автоматически округляется в большую сторону до ближайшего значения, кратного 4096. Значение параметра должно лежать в интервале от 65536 до 1048576.

Если указанное действие не устраняет проблемы, обратитесь в «Службу технической поддержки».

Файл БД 1.31 увеличился до нескольких гигабайт. В чем может быть причина?

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

Необходимо отметить, что расширение файла 1.31 может продолжаться и после завершения работы клиентского приложения, подавшего SQL-запрос.

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

При попытке остановить СУБД ЛИНТЕР в ОС GNU/Linux с помощью скрипта ./stop_linter.sh в ответ получили сообщение, что СУБД ЛИНТЕР не запущена, хотя команда ps показывает наличие процесса linter. В чем может быть причина?

Возможные причины:

  1. скрипт не обнаружил СУБД ЛИНТЕР по заданным в файле config_lin.sh параметрам. Такая ситуация возможна, если экземпляр СУБД запущен вручную или через SNMP;

  2. удалены временные файлы, необходимые для связи клиентских приложений с СУБД, расположенные по умолчанию в каталоге /tmp/linter. Такая ситуация возможна при определённых настройках ОС GNU/Linux.

Для устранения причины неудачного останова СУБД:

  1. штатно завершить работу экземпляров СУБД ЛИНТЕР с помощью команды kill (с сигналом по умолчанию);

  2. установить переменную среды окружения LINTER_TMP для корректного указания местоположения временных файлов, используемых для связи клиентских приложений с СУБД;

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

При попытке подключиться к СУБД выдается код завершения 1009 «Нет свободных каналов». В чем может быть причина?

Возможные причины:

  1. клиентское приложение некорректно завершает работу с соединениями и/или ранее поданными SQL-операторами (не освобождает используемые каналы, и это постепенно уменьшает количество свободных каналов до полного их исчерпания);

  2. свободные каналы исчерпаны (заняты другими клиентскими приложениями).

Во втором случае необходимо остановить ядро СУБД и с помощью утилиты «Создание и конфигурирование базы данных» (gendb) увеличить количество каналов командой SET CHANNELS:

C:\Linter\db\DEMO> C:\Linter\bin\gendb.exeGendb > set CHANNELS 300;Gendb > quit;

В режиме PESSIMISTIC удалось получить данные из откатываемой транзакции. В чем может быть причина?

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

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter
ѕрокрутить вверх