Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINTER от 04.02.15

.pdf
Скачиваний:
44
Добавлен:
21.05.2015
Размер:
2.16 Mб
Скачать
создается соединение; объявляется процедура;

 

Практическое занятие 13

10

 

Использование прекомпилятора встроенного SQL

1

 

 

 

Задача 4. Модифицировать пример prac13_e2.pc, изменив алгоритм выборки: пользовательский интервал учитывается параметрами в операторе (WHERE Rn >= :num1 and Rn <= :num1). Движение по выборке осуществлять при помощи оператора FETCH.

Задача 5. Модифицировать пример prac13_e3.pc, добавив обработку типов byte, varbyte, varchar, date, decimal, boolean.

13.5. Вызовы хранимых процедур

Встроенный SQL позволяет выполнять хранимые процедуры. Для этого предназначен оператор EXECUTE PROCEDURE.

Работа данного оператора иллюстрируется в примере prac13_e4.pc. Для демонстрации данного примера необходимо создать тестовую процедуру, при помощи, например, утилиты inl:

create procedure STRADD(in ch1 char(10); in ch2 char(10)) result int

code

return tointeger(ch1) + tointeger(ch2);

end

Алгоритм работы примера таков:

EXEC SQL DECLARE PROCEDURE STRADD(in ch1 char(10); in ch2 char(10)) result int;

 

пользователь вводит две строки, в которых находятся целые числа;

 

вызывается процедура с этими параметрами;

EXEC SQL EXECUTE PROCEDURE :res = STRADD(:ch1, :ch2);

выводится на экран возвращенное значение.

Важно, что типы фактических параметров, принимающих результаты (в примере – переменная int res), должны совпадать с типами формальных параметров (в примере – result int – результат процедуры).

Задача 6. На основе примера prac13_e4.pc, написать программу, проверяющую наличие таблицы, представления или синонима по маске, заданной пользователем (в

хранимой процедуре использовать запрос select * from $$$SYSRL where

$$$S13 = :s;).

E-mail: market@relex.ru

ЗАО НПП «РЕЛЭКС»

http://www.relex.ru

 

 

 

102

Практическое занятие 14 Настройка сервера репликации в среде UNIX

Практика 2 часа (Лекция 12)

Целью занятия является освоение настройки сервера репликации, создание правил репликации. Используются два компьютера, на каждом из которых будет установлена база данных (на одном – источник, на другом - приемник) и запущен сервер репликации.

14.1. Создание основной базы данных

Структура базы должна быть идентична для источника и приемника. На этой базе должен быть выполнен набор запросов из файла dict/distr.sql . После этого ядро для этой базы данных должно быть остановлено и запущено заново.

14.2. Создание вспомогательной базы данных

Необходимо создать вспомогательную базу хранения репликационных данных. Для этого необходимо выполнить скрипт db/make_storage. Этот скрипт создает базу данных в текущем каталоге, поэтому перед запуском необходимо сменить текущий каталог на каталог вспомогательной базы данных. Можно также создать базу и вручную. Для этого

1.Создать базу утилитой gendb.

2.Задать идентификатор механизма обмена, отличный от значения по умолчанию. Идентификатор механизма обмена задается путем установки переменной окружения LINTER_MBX в какое либо натуральное (в математ. смысле) значение. Значение по-умолчанию равно 20561. Если установлено значение LINTER_MBX, то ядро и приложение для обмена данными будут использовать именно этот идентификатор. Таким образом возможен запуск нескольких ядер и приложений, работающих с несколькими ядрами.

3.Запустить ядро для вспомогательной базы данных, выполнить запросы из файла dict/arepl.sql, перестартовать ядро. LINTER_MBX должен быть задан во время выполнения этих действий и быть одинаковым.

4.Удалить переменную окружения LINTER_MBX.

Вспомогательная база данных должна быть создана на источнике и приемнике.

14.3. Настройка nodetab

Теперь необходимо настроить файл конфигурации сетевого агента и сервера репликации nodetab. Он должен располагаться в каталоге bin дерева дистрибутива.

1.Добавить строку RDSTG local 12345 где RDSTG - условное имя вспомогательной БД на данной машине, local - ключевое слово, 12345 идентификатор механизма обмена(п. 16.2).

2.Добавить строку REMOTEDB ATCPIP my_name.my_domain 1080 где REMOTEDB -

условное имя удаленной основной базы данных. ATCPIP - ключевое слово для задания TCPIP протокола обмена, my_name.my_domain - адрес удаленного сервера, 1080 - порт удаленного сервера. Если база данных будет только приемником данных, данный подпункт необязателен.

14.4. Создание нового сервера

Чтобы объявить новый сервер нужно запустить утилиту INL на источнике данных и набрать в командной строке:

sql> create server REMOTEDB;

E-mail: market@relex.ru

ЗАО НПП «РЕЛЭКС»

http://www.relex.ru

Практическое занятие 13 Использование прекомпилятора встроенного SQL

103

14.5. Запуск сетевого агента

Запустить сетевой агент dbc_tcp, возможно указав ему в командной строке точное расположение nodetab. Это необходимо проделать на источнике и приемнике.

14.6. Запуск сервера репликации

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

14.7. Создание правила репликации

Допустим, у нас есть таблица TAB в базах данных источника и приемника. Структура таблиц должна быть одинаковой, должен присутствовать primary key. Допустим, таблица такая:

Create table tab ( i int primary key, c char(100));

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

create replication rule MYRULE for tab to tab on node

REMOTEDB async;

Это делается только на источнике.

14.8. Проверка работы репликации

Проверить работу системы репликации можно, изменив данные реплицируемой таблицы TAB базы-источниа, и проверив их изменение в базе приемнике. Для этого в командной строке утилиты inl наберем:

Insert into tab values (1,’текстовая строка’);

Через некоторое время (предположительно, меньше секунды) аналогичная запись должна появиться в таблице TAB в БД-приемнике.

14.9. Останов сервера репликации

Останов производиться в обратном порядке.

1.Остановить lreplserver (опция –down).

2.Остановить dbc_tcp (командой kill, pid процесса можно определить командой ps, или при старте указать на необходимость создания файла со значением pid).

3.Остановить работу вспомогательной БД утилитой shut. Для останова

вспомогательной БД необходимо указать тот же идентификатор обмена

E-mail: market@relex.ru

ЗАО НПП «РЕЛЭКС» http://www.relex.ru

104

Практическое занятие 14 Настройка сервера репликации в среде UNIX

(LINTER_MBX), что и при старте. После останова БД переменную окружения LINTER_MBX необходимо удалить.

4. Остановить работу ядра с основной базой данных.

 

 

Это

необходимо

проделать

на

источнике

и

приемнике.

E-mail: market@relex.ru

ЗАО НПП «РЕЛЭКС» http://www.relex.ru

Для заметок

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]