top of page
Admin

Oracle database migration from AIX to Linux (Cross Platform Transportable Tablespaces)

Обновлено: 30 авг. 2021 г.

Скачать из ноты 2471245.1 архив со скриптами

Перечень TC указать в параметре

tablespaces=


Директории используемые для формирования файлов

src_scratch_location=

dest_datafile_location=

dest_scratch_location=

ID платформы

platformid=6


Подготовка:

Создать пустую БД и настроить ее. Параметры должны совпадать с исходной БД!

Обратить внимание на параметр domain, если вдруг установлен в исходной БД, то в БД назначения он так же должен быть указан

Проверить версию файла timezone, они должны совпадать.

на время заливки данных и проверки, лучше отключить job


Залит в нее соурс пользователей, при этом поменять TS на USERS

impdp system/<password> directory=ttsdir network_link=ttslink FULL=y INCLUDE=USER,ROLE,ROLE_GRANT,PROFILE remap_tablespace=<>:USERS logfile=imp_metausr.log


Переименовать TS если USERS так же мигрирует!

alter tablespace users rename to userstbs


Бэкапим на NFS шару

1. Бэкап 0 уровня:

$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup

2. Копируем файл res.txt на сервер где восстанавливаем базу (этот файл хранить как зеницу ока!, в нем параметры для восстановления)

3. Запускаем восстановление на сервере назначения:

$ORACLE_HOME/perl/bin/perl xttdriver.pl --restore

4. если файл res.txt скопирован, и запущено восстановление, то сразу запускаем бэкап уровня 1 на базе источнике (AIX)

$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup

5. По его завершении, копируем опять файл res.txt на сервер назначения, старый файл переименовать!!! и запускаем восстановление

$ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


4-5 повторяем пока есть время и возможность, каждый следующий бэкап быстрее предыдущего.

6. Финальный бэкап:

Переводим нужные TS в read only

alter tablespace <name> read only;

.....

и запускаем бэкап:

$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup

по его завершении, копируем файл res.txt на сервер назначения и запускаем восстановление


Выгружаем в дамп данные для связи файлов и объектов в новой БД

Для этого создаем файл параметров со следующей структурой parfile:

dumpfile=xttdump.dmp

directory=DMP_XTTN

exclude=statistics

transport_tablespaces=список пространств через запятую

transport_full_check=y

logfile=tts_export.log


7. Все файлы восстанавливаются с новыми именами в новой БД, они не связаны с БД/объектами, для связи, нужно сформировать скрипт

cd /devdata/data

ls -AF > list.txt

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

'/devdata/data/USERS_100.dbf',

'/devdata/data/USERS_101.dbf',

.....


Собираем par файл для импотра:

vi par.imp

dumpfile=xttdump.dmp

directory=DMP_XTT

logfile=imp_log_1.log

transport_datafiles='/devdata/dbf/<file>',

.........


8. Импортируем данные

impdp parfile=par.imp


После выполнения проверить лог, если будут ошибки, поправить. но быть их не должно, их править нужно на этапе тестирования.


9. Проверка структуры фалов - работает долго,

RMAN> validate tablespace <tablespace list> check logical;


10. Правим default tablespace у пользователей,

на исходной БД выполняем запрос

select 'alter user '||username||' default tablespace '||default_tablespace||';' from dba_users

и применяем вывод на новой БД


11. Сверка (предполагается наличие линка на исходную БД),

11.1 Проверяем наличие таблиц и индексов

select * from (

select count(*), object_type, owner from dba_objects@TTSLINK where object_name not like 'BIN$%' group by owner,object_type

minus

select count(*), object_type, owner from dba_objects where object_name not like 'BIN$%' group by owner,object_type) d

where d.owner not in ('SYS','SYSTEM','WMSYS','XDB','PUBLIC','OWBSYS','ORDDATA','ORACLE_OCM','OLAPSYS','MDSYS','DBSNMP')

order by 3,2


11.2 Размеры объектов

select * from (

select round(sum(bytes/1024/1024/1024)), segment_name, owner from dba_segments@TTSLINK

where segment_name not like 'BIN$%' group by segment_name, owner

minus

select round(sum(bytes/1024/1024/1024)), segment_name, owner from dba_segments

where segment_name not like 'BIN$%' group by segment_name, owner ) a

where a.segment_name not like 'BIN$%'

order by 1 desc


p.s.: Убедится что были перенесены все объекты, могут быть случаи потери таблиц

12. Переводим все в read write

alter tablespace USERS read write

.....


13. Переносим логику, так как операции выше переносят только таблицы, данные каталога не переносятся.

expdp system/<> directory=<> content=metadata_only .....


14. Проверяем еще раз объекты, все ли переехало.

select * from (

select count(*), object_type, owner from dba_objects@TTSLINK where object_name not like 'BIN$%' group by owner,object_type

minus

select count(*), object_type, owner from dba_objects where object_name not like 'BIN$%' group by owner,object_type) d

where d.owner not in ('SYS','SYSTEM','WMSYS','XDB','PUBLIC','OWBSYS','ORDDATA','ORACLE_OCM','OLAPSYS','MDSYS','DBSNMP')

order by 3,2


15. Руками переносим все что было отдельно создано в SYS

16. Руками накатываем гранты на системные объекты и системные права, права на объекты SYS

select 'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' from DBA_TAB_PRIVS where owner ='SYS' and grantee not in ('SCHEDULER_ADMIN','SYS','XDB','OLAP_USER','DBA','MDSYS','OEM_USER','OLAPSYS','EM_EXPRESS_ALL','OEM_MONITOR','IMP_FULL_DATABASE','OWBSYS','DATAPUMP_IMP_FULL_DATABASE','GSMADMIN_INTERNAL','WMSYS','OWB$CLIENT','SPATIAL_WFS_ADMIN_USR','SYSBACKUP','DBSNMP','SYSTEM','ORDSYS','SI_INFORMTN_SCHEMA','AUDIT_ADMIN','CTXSYS','OJVMSYS','RECOVERY_CATALOG_OWNER','OWBSYS_AUDIT','APPQOSSYS','EXP_FULL_DATABASE','DATAPUMP_EXP_FULL_DATABASE','AQ_ADMINISTRATOR_ROLE','CONNECT','ANONYMOUS','MDDATA','OEM_ADVISOR','JAVADEBUGPRIV','SPATIAL_CSW_ADMIN_USR','RESOURCE','SYSDG','OUTLN','SYSKM','EM_EXPRESS_BASIC','CDB_DBA','PUBLIC','SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE','DBFS_ROLE','LOGSTDBY_ADMINISTRATOR','AQ_USER_ROLE','GATHER_SYSTEM_STATISTICS','ORACLE_OCM','ADM_PARALLEL_EXECUTE_TASK','HS_ADMIN_SELECT_ROLE','OLAP_XS_ADMIN','XDBADMIN','HS_ADMIN_EXECUTE_ROLE','ORDPLUGINS','SHOW_PLAN_QUERY','CAPTURE_ADMIN','AUDIT_VIEWER','OPTIMIZER_PROCESSING_RATE','CSMIG','PDB_DBA','GSMUSER_ROLE','XS_CACHE_ADMIN','GSMCATUSER')


select 'grant '||privilege||' to '||grantee||';' from DBA_SYS_PRIVS where grantee not in ('SCHEDULER_ADMIN','SYS','XDB','OLAP_USER','DBA','MDSYS','OEM_USER','OLAPSYS','EM_EXPRESS_ALL','OEM_MONITOR','IMP_FULL_DATABASE','OWBSYS','DATAPUMP_IMP_FULL_DATABASE','GSMADMIN_INTERNAL','WMSYS','OWB$CLIENT','SPATIAL_WFS_ADMIN_USR','SYSBACKUP','DBSNMP','SYSTEM','ORDSYS','SI_INFORMTN_SCHEMA','AUDIT_ADMIN','CTXSYS','OJVMSYS','RECOVERY_CATALOG_OWNER','OWBSYS_AUDIT','APPQOSSYS','EXP_FULL_DATABASE','DATAPUMP_EXP_FULL_DATABASE','AQ_ADMINISTRATOR_ROLE','CONNECT','ANONYMOUS','MDDATA','OEM_ADVISOR','JAVADEBUGPRIV','SPATIAL_CSW_ADMIN_USR','RESOURCE','SYSDG','OUTLN','SYSKM','EM_EXPRESS_BASIC','CDB_DBA')


17. Добавить в UNDO и TEMP файлы.

18. Установить параметр job_queue_processes

313 просмотров0 комментариев

Недавние посты

Смотреть все

Comments


bottom of page