Перемещение базы данных системы Галактика ERP в другой экземпляр базы данных Oracle |
Для перемещения базы данных в другой экземпляр базы данных Oracle (instance) необходимо выполнить следующие действия (методика применима для системы с установленным обновлением Атлантис 5.4.23 и выше):
1) Выполнить настройку серверной и клиентских частей системы
на новый экземпляр базы данных Oracle:
Откорректировать файл csetup.ini, расположенный в папке \SETUP серверной части системы , добавив в него следующие параметры:
[Oracle] DB_<имя схемы восстанавливаемой базы данных>= <Синоним (Alias) нового экземпляра БД Oracle>
Если имя схемы восстанавливаемой БД такое же, как и имя схемы исходной БД (рекомендуется), то для уже существующего параметра Oracle.DB_<имя схемы восстанавливаемой базы данных> нужно изменить значение на новое.
Откорректировать файл install.ini, расположенный в папке \EXE серверной части системы . Если имя схемы восстанавливаемой БД такое же, как и имя схемы исходной БД (рекомендуется), то в файл install.ini достаточно изменить следующие параметры:
[Bases] Serv1=<Синоним (Alias) нового экземпляра БД Oracle>
Откорректировать настройки SQL Net Easy Configuration серверной (для трехуровневой архитектуры) и клиентских частей (для двухуровневой архитектуры) системы добавив в конфигурацию синоним нового экземпляра БД Oracle.
В конфигурационном файле (galnet.cfg) откорректировать параметр SQLDriver.SQLServer, задав в нем имя синонима нового экземпляра БД Oracle.
На рабочей станции администратора аналогично выполнить необходимые настройки для комплекса
.2) В экземпляре-источнике дать пользователю с именем схемы БД
права на создание сессии,например:
grant create session to TEST810;
3) Выполнить выгрузку данных из БД-источника:
Выполнить выгрузку ролей и пользователей:
- Присоединиться к экземпляру-источнику с правами DBA, например:
connect sys/pass@DB03 as sysdba;
где DB03 пример имени синонима БД-источника, а pass - пароль пользователя SYS.
- Выполнить выгрузку пользователей и ролей, используя следующий скрипт:
- Выполнить выгрузку привилегий, используя следующий скрипт:
В приведенных скриптах конструкцию <ИМЯ СХЕМЫ> необходимо заменить именем схемы базы данных системы
, перемещаемой в другой экземпляр БД Oracle. В используемых в данном параграфе примерах <ИМЯ СХЕМЫ> = TEST810.Проверить выходные файлы на отсутствие сообщений об ошибках.
Удалить из сформированных файлов USERS_AND_ROLES_<ИМЯ СХЕМЫ>.sql и PRIVS_<ИМЯ СХЕМЫ>.sql лишнюю информацию, оставив только строки вида:
create user ...
create role ...
grant ...
Поскольку количество выгружаемых привилегий велико, то для контроля результата последующего их импорта в БД-приемник в файл PRIVS_<ИМЯ СХЕМЫ>.sql рекомендуется добавить команду протоколирования хода выполнения операций, например:
В начало файла добавить строку
spool C:\Move_bd\PRIVS_<ИМЯ СХЕМЫ>.log
а в конец файла
spool off
Выполнить экспорт данных при помощи утилиты exp.exe. Пример командной строки:
exp.exe test810/test810@DB03 file=C:\Move_bd\TEST810.dmp log=C:\Move_bd\expTEST810.log owner=TEST810 buffer=10000000 consistent=y
где:
exp.exe - утилита экспорта
test810/test810@DB03 - пользователь (имя схемы БД), под которым следует запускать экспорт, DB03 - имя синонима БД-источника.
TEST810.dmp - имя файла для дампа данных
expTEST810.log - файл протокола с результатами экспорта
owner=TEST810 - пользователь- владелец схемы
consistent=y - параметр экспорта, необходимый для согласования данных при работающих пользователях в системе.
4) Создать экземпляр БД-приемник с такими же параметрами и табличными пространствами как у экземпляра БД-источника.
5) Выполнить подготовительные действия для импорта данных:
Подсоединиться к экземпляру БД-приемника с правами DBA:
connect sys/pass@DB07 as sysdba;
где DB07 пример имени синонима БД-приемника, а pass - пароль пользователя SYS.
@C:\Move_BD\USERS_AND_ROLES_<ИМЯ СХЕМЫ>.sql;
6) В экземпляре-приемнике дать пользователю с именем схемы БД
права на создание сессии и права DBA:grant create session to <ИМЯ СХЕМЫ>; grant DBA to <ИМЯ СХЕМЫ>;
7) Выполнить импорт данных при помощи утилиты imp.exe. Пример командной строки:
imp.exe TEST810/TEST810@DB07 file=C:\Move_bd\TEST810.dmp full=y ignore=y buffer=10000000 grants=n commit=y log=C:\Move_bd\imp_TEST810.log;
8) Импортировать выгруженные в п.3 привилегии. Для этого необходимо выполнить полученный в п.3 скрипт PRIVS_<ИМЯ СХЕМЫ>.sql. Например:
@C:\Move_BD\PRIVS_TEST810.sql;
9) В экземпляре-источнике удалить у пользователя с именем схемы БД системы
права на создание сессии, например:revoke create session from TEST810;
10) В экземпляре-приемнике удалить у пользователя с именем схемы БД системы
права на создание сессии и права DBA, например:revoke create session from TEST810; revoke DBA from TEST810;
11) Войти в комплекс
под администратором системы распределения прав доступа (Права доступа). Запуск в этом режиме может быть выполнен с использованием параметров командной строки /u: и /#user:, например:start D:\support\exe\support.exe /u:supervisor /#user:supervisor
Если используется БД с настроенной филиальностью, то при входе в комплекс необходимо в окне =Выбор текущих филиалов= выбрать любой из имеющихся филиалов.
Выполнить в модуле
(меню ) проверку таблиц в режиме исправления с включенными опциями :Проверка служебных объектов (StoredProcs=on)
Проверка пользователей и прав (UsersAndRights=on)
Все таблицы
Данная операция может быть выполнена также с помощью самостоятельного запуска утилиты проверки БД chkora9.exe или chkora.exe.
12) Войти в систему
и проверить работоспособность на новой базе данных.