4.2.Миграция данных из реестра версии 3.1 Для миграции баз реестра выполните следующие действия:
Создайте на диске папки storage. tbls_rgu_data и tbls_rgu_index (название папок критично, оно формируется на основании маски tbls_%название базы%_data).
Дайте пользователю PostgreSQL полные права на эти папки (см. Рисунок 4.).
Рисунок 4. – Пример настройки прав доступа к файлу tablespace_index.sql
Разверните скрипты миграции из архива migrate_script.zip.
Пропишите пути в \RGU_DB_2\db\tablespace_data.sql и \RGU_DB_2\db\tablespace_index.sql.
Пример заполнения файла tablespace_data.sql:
-------------------------------------------------------------------------------
-- DESCRIPTION:
-------------------------------------------------------------------------------
\set quoted_location '\'E:/postgresql/tbls_rgu_data\'' CREATE TABLESPACE TBLS_DATA_:DB_NAME LOCATION :quoted_location;
Пример заполнения файла tablespace_index.sql:
-------------------------------------------------------------------------------
-- DESCRIPTION:
-------------------------------------------------------------------------------
\set quoted_location '\'E:/postgresql/tbls_rgu_index\'' CREATE TABLESPACE TBLS_INDEX_:DB_NAME LOCATION :quoted_location;
В файле \RGU_DB_2\db\setup.bat (см. Рисунок 4.) пропишите реальные пути и логины/пароли, создайте папки для хранения документов (storage, doc_storage), изменив следующие параметры в соответствии с настройками путей на компьютере:
@SET DB_NAME=rgu
@SET PG_PATH="C:\Program Files\PostgreSQL\9.4\bin"
@SET PG_DATA="C:\Program Files\PostgreSQL\9.4\\data"
@SET PG_USER=postgres
@SET PG_PORT=5432
@SET PG_LOCALEDIR="C:\Program Files\PostgreSQL\9.4\\share\locale"
@SET STORAGE_PATH='c:\new\storage\'
@SET R_PORT='5432'
@SET R_HOST='127.0.0.1'
@SET R_DB='old'
@SET R_USER='root'
@SET R_PASS='root'
Рисунок 4. – Пример настройки файла setup.bat
Изменяемая часть выделена жирным.
В файлах \RGU_DB_2\db\migrate_data_remote.sql и \RGU_DB_2\db\docs_import_remote.sql пропишите путь dblink к исходной базе версии 3.1 (6.0.47) и логин/пароль пользователя root:
select dblink_connect('old_rgu','dbname=old host=localhost user=root password=root');
Запустите \RGU_DB_2\db\setup.bat.
Разархивируйте файл dbmaintain-2_4_src_RGU.
Пропишите в файле rgu.properties подключение к смигрированной базе данных в следующих строчках:
database.url=jdbc:postgresql://127.0.0.1:5432/rgu2
database.userName=postgres
database.password=root
Запустите update.bat.
Запустите файл createFilesFromBlob.sql - данный скрипт создаст файлы на жестком диске, создаст для них структуры и наполнит таблицу Типов наборов данных.
4.2.1.Инкрементное обновление данных Распакуйте архив migrate_scripts.zip, находящийся в дистрибутиве для установки и настройки Системы. Архив содержит процедуры, описание которых приведено в Таблица 4..
Таблица 4. – Описание процедур для инкрементного обновления данных
Процедура
| Описание
| migrate_scripts/Inc_update/
org_inc_update.sql
| процедуры для обновления ОГВ
| migrate_scripts/Inc_update/
org_inc_update_debug.sql
| процедуры для обновления ОГВ (с выводом отладочной информации)
| migrate_scripts/Inc_update/
service_inc_update.sql
| процедуры для обновления услуги
| migrate_scripts/Inc_update/
service_inc_update_debug.sql
| процедуры для обновления услуги (с выводом отладочной информации)
| migrate_scripts/Inc_update/inc_update.sql
| основная процедура инкрементального обновления
| migrate_scripts/Inc_update/object_merge.sql
| процедура переноса ОГВ/услуг, которых нет в БД версии 3.1
| migrate_scripts/Inc_update/
users_inc_update.sql
| процедура миграции пользователей
| Для работы механизма инкрементного обновления данных требуется совпадение значений справочников БД новой версии реестра и реестра версии 3.1.
Для корректной работы миграции файлов в таблице SYSTEM_PROPERTIES в свойстве OLD_RGU_FILE_STORAGE_PATH должен быть прописан путь к хранилищу @SET STORAGE_PATH.
Для инкрементного обновления данных выполните следующие действия:
Скомпилируйте процедуры из файлов
org_inc_update.sql (org_inc_update_debug.sql),
service_inc_update.sql (service_inc_update_debug.sql),
inc_update.sql.
2) В таблицу _UPDATE_DICT_INFO добавьте строки со значениями OLD_RGU_SERVICE, OLD_RGU_ORG c необходимыми SSN. SSN – значение поля SSN таблицы STATUS_HISTORY реестра версии 3.1. Рекомендуется ставить максимальное значение SSN.
3) Откройте соединение с удаленной БД.
Пример
|
| Запрос, например, может выглядеть так:
select dblink_connect('old_rgu','hostaddr=192.168.1.1 port=5432 user=root dbname=rgu47').
| 4) Запустите процедуру inc_update.sql с параметром conn_name в формате text, где conn_name - имя соединения.
5) Для переноса ОГВ/услуг, которых нет в status_history БД версии 3.1, запустите процедуру object_merge.sql с параметром conn_name в формате text, где conn_name - имя соединения.
6) Закройте соединение с удаленной БД.
Пример
|
| Запрос, например, может выглядеть так:
select dblink_disconnect('old_rgu').
| Для миграции пользователей проделайте следующее действие:
Запустите процедуру users_inc_update.sql c параметром connstr, где connstr – строка (параметры) подключения в формате postgres. Это следует выполнять после миграции основных объектов реестра.
Пример
|
| Строка запуска процедуры может выглядеть так:
psql -U $user -h $host -p $port -d $DB_NAME -v CONNSTR='dbname=old_rgu' -f users_inc_update.sql.
|
|