================================================================
--- Инструкция по миграции АРМ CФМ 4.05 на АРМ СФМ 5.0       ---
================================================================

1. Выполнить скрипт database/utf8_migration/pre_export.sql на исходной БД с
   кодировкой Windows-1251 под пользователем SYS.

> sqlplus sys as sysdba @database/utf8_migration/pre_export.sql

   Этот скрипт при необходимости укоротит строковые значения, длина которых
   превысит ограничения БД c кодировкой UTF-8. Информация об изменённых
   строковых значениях будет находиться в файле pre_export.log.

2. Создать директорию temp на исходной БД.

> sqlplus sys as sysdba
SQL> CREATE OR REPLACE DIRECTORY temp as 'C:\Temp';

3. Создать дамп исходной БД стандартными средствами Oracle Data Pump.

> expdp kfm/kfm schemas=KFM directory=temp dumpfile=dump.dmp logfile=export.log
(предполагается, что пользователь kfm имеет пароль kfm)

4. Создать пустую целевую базу данных с кодировкой UTF-8 и tablespace KFM.
   При необходимости воспользоваться инструкцией из данного архива
   HOWTO.Создание БД Oracle в кодировке UTF-8.txt

5. Если пустая целевая база данных с кодировкой UTF-8 была создана с помощью
   универсального инсталлятора Oracle (DCA), то необходимо создать табличное
   пространство KFM (предполагается, что Oracle установлен в C:/oraclexe).

> sqlplus sys@XE_UTF8 as sysdba
SQL> CREATE TABLESPACE kfm
  2    DATAFILE 'C:/oraclexe/app/oracle/oradata/XE_UTF8/kfm.dbf'
  3    SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

   Далее предполагается, что
   - целевая база имеет ORACLE_SID=XE_UTF8
   - пользователь SYS имеет пароль sys

   Если реальный ORACLE_SID отличается от XE_UTF8, то следует заменить в
   следующих командах XE_UTF8 на реальный ORACLE_SID.

6. Установить на этой базе компоненты Oracle: XDB и CONTEXT, если эти
   компоненты не были установлены при создании пустой БД.

   Проверить наличие и работоспособность компонентов:

> sqlplus sys/sys@XE_UTF8 as sysdba
SQL> SELECT * FROM dba_registry WHERE COMP_ID in ('CONTEXT', 'XDB');

   Для установки отсутствующего Oracle Text (CONTEXT) выполнить:

> sqlplus sys/sys@XE_UTF8 as sysdba
SQL> spool catctx.log;
SQL> @?/ctx/admin/catctx.sql CTXSYS SYSAUX TEMPTS1 NOLOCK;
SQL> spool off;

   Для установки отсутствующего Oracle XML Database (XDB) выполнить:

> sqlplus sys/sys@XE_UTF8 as sysdba
SQL> spool catqm.log;
SQL> @?/rdbms/admin/catqm.sql change_on_install SYSAUX TEMPTS1 YES
SQL> spool off;

7. Выполнить скрипт database/pre_import.sql на целевой БД под пользователем SYS.
   Скрипт должен создать роль KFM_ROLE (если не существует), пользователя KFM c
   паролем kfm (если не существует), и пакет PKG_SYSTasks.

> sqlplus sys/sys@XE_UTF8 as sysdba @database/pre_import.sql

8. Создать директорию temp на целевой БД.

> sqlplus sys/sys@XE_UTF8 as sysdba
SQL> CREATE OR REPLACE DIRECTORY temp as 'C:\Temp'


9. Восстановить базу данных из дампа исходной БД C:\Temp\dump.dmp

> set ORACLE_SID=XE_UTF8
> impdp \"sys/sys as sysdba\" schemas=KFM dumpfile=dump.dmp directory=temp logfile=import.log

   Игнорируйте ошибки вида
   ORA-31684: Object type USER:"KFM" already exists
   ORA-01917: user or role 'SDFO' does not exist


10. Перейти в каталог database и в нём исполнить update.bat. Каталог database
    должен находиться на сервере целевой базы данных. Полный путь до каталога
    database, включая названия родительских каталогов, должен содержать только
    латинские буквы.

> update.bat XE_UTF8 <пароль пользователя kfm>

Следующие шаги выполняются на клиентской машине:
11. Установить приложения АРМ СФМ:
    - SFM.ClientARM
    - SFM.AdminARM
    путем распаковки одноименных каталогов из данного архива в нужное место.

12. Настроить доступ к базе данных в tnsnames.ora

13. Запустить приложение SFM.AdminARM под пользователем kfm, указав в настройках TNSNAME базы
    данных, созданый на предыдущем шаге.

    Сменить пароль пользователя kfm на безопасный.

    Создать пользователей с необходимым набором прав используя штатную функцию модуля SFM.AdminARM
    (при запуске указать TNSNAME созданый в п.12).

    Для переноса пользователей из прежней БД можно воспользоваться скриптом
    database/utf8_migration/get_users.sql, исполнив его на исходной БД.
    В результате исполнения скрипта будет получен набор DDL-выражений, позволяющий создать всех
    пользователей приложения АРМ СФМ на целевой БД.
    Далее необходимо скопировать полученные DDL-выражения и выполнить их любым удобным способом
    (sqlplus, sqldeveloper) под пользователем "SYS" на целевой БД.

    Запустить SFM.ClientARM с нужным пользователем (при запуске указать TNSNAME из п.12)

14. При наличии пакета обновлений НСИ и СЛК для АРМ СФМ на сайте Комитета Финансового
    Мониторинга МФ РК (zip-архив), необходимо скачать и распаковать архив
    на машине, где установлена БД АРМ СФМ, перейти в каталог, в который
    распаковано содержимое архива и выполнить файл update.bat (update.sh
    в случае Linux).
    ВНИМАНИЕ: Перед исполнением update.bat(.sh) его необходимо отредактировать,
    проставив актуальные параметры подключения к базе данных.

15. Запустить SFM.ClientARM с нужным пользователем (при запуске указать TNSNAME из п.12)
