Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 19 Следующий »

Проверялось на версии Orcale 12, 19.

Ввиду того, что опыта подобной миграции не имею, не исключены ошибки.

Пожалуйста по возможности проконсультируйтесь со специалистом по БД Oracle.

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


Ниже приведены примеры команд и скриптов, конечный синтаксис будет отличаться.

Перед выполнением нужно внести соответствующие изменения описывающие параметры подключения и другие атрибуты базы данных и ее состава данных.


Экспорт данных.

Исходная БД должна иметь кодировку CL8MSWIN1251

Получаем дамп БД (только данные). 

Опции указанные в команде, четко указывают на то, что снимается не полный дамп, а только данные схемы supermag

create or replace directory dir as 'C:\BASE';

expdp system/qqq@sbis58 directory=dir schemas=supermag content=DATA_ONLY dumpfile=supermag.dmp logfile=supermag.log


Получаем дамп БД (только метаданные). 

Установить кодовую страницу таким образом, чтобы русские имена пользователя выводились в читаемом виде.


set nls_lang=russian_cis.ru8pc866
или так:
chcp 65001
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus system/qqq@sbis58

SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF LINESIZE 1000
SELECT 'INCLUDE=USER:"IN (''' || LISTAGG(username, ''', ''') WITHIN GROUP (ORDER BY username) || ''')"'
FROM dba_users
WHERE username NOT IN ('SYS','SYSTEM','ORACLE_OCM','DBSNMP','OUTLN','XDB','APPQOSSYS')
  AND username LIKE '%' -- сюда можно добавить условие, например, для имён с кириллицей
/

Скрипт вернет список пользователей:

INCLUDE=USER:"IN ('ANONYMOUS', 'AUDSYS', 'DBSFWUSER', 'DIP', 'GGSYS', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER', 'REMOTE_SCHEDULER_AGENT', 'SUPERMAG', 'SUPERMAG_SYS', 'SYS$UMF', 'SYSBACKUP', 'SYSDG', 'SYSKM', 'SYSRAC', 'WMSYS', 'XS$NULL', 'ИВАНОВ', 'ПЕТРОВ', 'СИДОРОВ')"

Создать файл: export.par
Опции указанные в команде, четко указывают на то, что снимается не полный дамп, а только экспортировали дамп с метаданными пользователей, ролей и привилегий.

FULL=Y
CONTENT=METADATA_ONLY
INCLUDE=USER:"IN ('ANONYMOUS', 'AUDSYS', 'DBSFWUSER', 'DIP', 'GGSYS', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER', 'REMOTE_SCHEDULER_AGENT', 'SUPERMAG', 'SUPERMAG_SYS', 'SYS$UMF', 'SYSBACKUP', 'SYSDG', 'SYSKM', 'SYSRAC', 'WMSYS', 'XS$NULL', 'ИВАНОВ', 'ПЕТРОВ', 'СИДОРОВ')"
INCLUDE=ROLE
INCLUDE=ROLE_GRANT
INCLUDE=SYSTEM_GRANT
INCLUDE=OBJECT_GRANT
INCLUDE=DEFAULT_ROLE
INCLUDE=TABLESPACE_QUOTA
INCLUDE=PROFILE
DIRECTORY=dir
DUMPFILE=supermag_metadata.dmp
LOGFILE=supermag_metadata.log
VERSION=19.0

где, строка INCLUDE=USER:... повторяет результат выше выполненного скрипта.



Пример файла - export.par

Произвести экспорт данных:
expdp system/qqq@sbis58 PARFILE=C:\export.par


----------------


DIRECTORY=dir
DUMPFILE=users_and_roles_only.dmp
LOGFILE=export_users.log
FULL=Y
CONTENT=METADATA_ONLY
EXCLUDE=SCHEMA:"='SYS'"
EXCLUDE=SCHEMA:"='SYSTEM'"
EXCLUDE=SCHEMA:"='ORACLE_OCM'"
EXCLUDE=SCHEMA:"='DBSNMP'"
EXCLUDE=SCHEMA:"='OUTLN'"
EXCLUDE=SCHEMA:"='XDB'"
EXCLUDE=SCHEMA:"='APPQOSSYS'"


---------------------

Подготовка БД для импорта.

Создание новой БД. 

Обязательно, при создании выбрать (указать):

  • кодировка AL32UTF8 
  • установить параметр: NLS_LENGTH_SEMANTICS = CHAR  
  • установить параметр: MAX_STRING_SIZE = EXTENDED

После создания БД. Необходимо синхронизировать перечень табличных пространств между созданной и экспортируемой базой. Чаще всего нужно будет завести недостающие пространства, и файлы для них. Например, табличное пространство INDX и его файлы.

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

Инициализация БД.

Провести инициализацию БД с помощью программы "Модуль генерации БД".

Вариант инициализации - подчиненная база, без заполнения начальными данными. (3-й пункт меню).

Отключение триггеров и ограничений.

Можно использовать скрипты, которые выполнят данную операцию. Но, автору данной инструкции удобнее использовать программу TOAD. В которой для схемы supermag - отбираются (поочередно) все ограничения и триггеры - и производится их отключение.

Импорт данных.

create or replace directory dir as 'C:\BASE';

Импорт данных.

Опции указанные в команде, четко указывают на то, что ,будет загружен не полный дамп, а только данные таблиц.

impdp system/qqq@sbis58 directory=dir schemas=supermag content=DATA_ONLY dumpfile=supermag.dmp logfile=supermag_import.log   table_exists_action=TRUNCATE

Импорт метаданных.

Опции указанные в команде, четко указывают на то, что ,будет загружен не полный дамп, а только метаданные.

impdp system/qqq@ORAUNI4 DIRECTORY=dir DUMPFILE=supermag_metadata.dmp LOGFILE=import.log FULL=Y CONTENT=METADATA_ONLY

Скрипты выдачи прав.

Выполнить скрипты выдачи прав.

Не уверен, что это необходимый список, возможно он избыточен.

Но, на практике - решение работоспособно. Хотя возможно предоставляет прав больше, чем требуется.


  GRANT ADMINISTER DATABASE TRIGGER TO SUPERMAG;
  GRANT ALTER ANY ROLE TO SUPERMAG;
  GRANT ALTER USER TO SUPERMAG WITH ADMIN OPTION;
  GRANT ANALYZE ANY TO SUPERMAG;
  GRANT CREATE DATABASE LINK TO SUPERMAG;
  GRANT CREATE LIBRARY TO SUPERMAG;
  GRANT CREATE PUBLIC SYNONYM TO SUPERMAG;
  GRANT CREATE ROLE TO SUPERMAG WITH ADMIN OPTION;
  GRANT CREATE SNAPSHOT TO SUPERMAG;
  GRANT CREATE TABLE TO SUPERMAG;
  GRANT CREATE USER TO SUPERMAG WITH ADMIN OPTION;
  GRANT DROP ANY ROLE TO SUPERMAG WITH ADMIN OPTION;
  GRANT DROP PUBLIC SYNONYM TO SUPERMAG;
  GRANT DROP USER TO SUPERMAG WITH ADMIN OPTION;
  GRANT GRANT ANY ROLE TO SUPERMAG WITH ADMIN OPTION;
  GRANT SELECT ON  SYS.DBA_CONS_COLUMNS TO SUPERMAG WITH GRANT OPTION;
  GRANT SELECT ON  SYS.DBA_CONSTRAINTS TO SUPERMAG WITH GRANT OPTION;
  GRANT SELECT ON  SYS.DBA_JOBS TO SUPERMAG WITH GRANT OPTION;
  GRANT SELECT ON  SYS.DBA_ROLES TO SUPERMAG;
  GRANT SELECT ON  SYS.DBA_TAB_COLUMNS TO SUPERMAG WITH GRANT OPTION;
  GRANT SELECT ON  SYS.DBA_USERS TO SUPERMAG WITH GRANT OPTION;
  GRANT EXECUTE ON  SYS.DBMS_ALERT TO SUPERMAG;
  GRANT EXECUTE ON  SYS.DBMS_LOCK TO SUPERMAG;
  GRANT EXECUTE ON  SYS.DBMS_OUTPUT TO SUPERMAG;
  GRANT EXECUTE ON  SYS.DBMS_PIPE TO SUPERMAG;
  GRANT SELECT ON  SYS.V_$SESSION TO SUPERMAG;
  GRANT SELECT ON SYS.V_$INSTANCE TO SUPERMAG;

WHENEVER SQLERROR EXIT 1 ROLLBACK;
WHENEVER OSERROR EXIT 2 ROLLBACK;


grant SUPERMAG_USER to SUPERMAG;

grant select on V_$SESSION to SUPERMAG with grant option;
grant select on V_$INSTANCE to SUPERMAG;
grant execute on DBMS_ALERT to SUPERMAG;
grant execute on DBMS_PIPE to SUPERMAG;
grant select on DBA_USERS to SUPERMAG with grant option;
grant select on DBA_ROLES to SUPERMAG;
grant select on dba_constraints to SUPERMAG with grant option; 
grant select on dba_tab_columns to SUPERMAG with grant option; 
grant select on dba_cons_columns to SUPERMAG with grant option; 
grant create role to SUPERMAG;
grant alter any role to SUPERMAG;
grant create library to SUPERMAG;
grant create public synonym to SUPERMAG;
grant drop public synonym to SUPERMAG;
grant administer database trigger to SUPERMAG;
grant execute on DBMS_LOCK to SUPERMAG;
grant execute on DBMS_UTILITY to SUPERMAG with grant option;
grant select on dba_jobs to SUPERMAG with grant option;
grant create database link to SUPERMAG;
grant create snapshot to SUPERMAG;
grant create table to SUPERMAG;
grant ANALYZE ANY to SUPERMAG;
grant create any index to SUPERMAG;
grant drop any index to SUPERMAG;
grant global query rewrite to SUPERMAG;
grant alter system to SUPERMAG; 
grant create user to SUPERMAG with admin option;
grant alter user to SUPERMAG with admin option;
grant drop user to SUPERMAG with admin option;
grant create role to SUPERMAG with admin option;
grant drop any role to SUPERMAG with admin option;
grant grant any role to SUPERMAG with admin option;
grant select on dba_users to supermag_user;

Перекомпиляция процедур и функций.

Желательно выполнить несколько раз. (3-5 раз).

@c:\oracle\ORA12\RDBMS\ADMIN\utlrp.sql;

Активация триггеров и ограничений.

Можно использовать скрипты, которые выполнят данную операцию. Но, автору данной инструкции удобнее использовать программу TOAD. В которой для схемы supermag - отбираются (поочередно) все ограничения и триггеры - и производится их активация (включение).

Промышленная эксплуатация.

Начинаем этап опытно-промышленную эксплуатацию. Затем можно принять решение о запуске в штатном режиме.



Дополнение инструкции не исключается, все зависит от дополнительных проверок и опытной эксплуатции....





  • Нет меток