migrate Oracle Database from RISC platform to x86 with minimal downtime
1. МИГРАЦИЯ СУБД ORACLE С
RISC-ПЛАТФОРМ НА LINUX
X86 С МИНИМАЛЬНЫМ
ВРЕМЕНЕМ ПРОСТОЯ
Игорь Мельников
Независимый консультант
2. ИГОРЬ МЕЛЬНИКОВ
2016 - 2022: Oracle Corporation: главный консультант
2022 - 2024: Postgres Pro: ведущий консультант
2024 – настоящее время: независимый консультант
Сфера деятельности : внедрение Extended RAC,,
апгрейд версии СУБД Oracle, уменьшение
размера БД с помощью Advanced Compression,
оптимизация кода PL/SQL (статический анализ
кода с помощью PL/Scope и выбор методов
оптимизации), миграция с RISC-платформ на Linux
x86 и т.д.
Также в последнее время занимаюсь проектами
по миграции с Oracle на PostgreSQL.
3. ПЛАН
1. Введение в задачу миграции с RISC на x86
2. Способы миграции
3. Использование технологии Cross Platform TTS
4. Проблемы и способы их решения
4. ВВЕДЕНИЕ В МИГРАЦИЮ C RISC НА X86
Необходимость миграции
Проблема разного формата файлов БД
Что такое Endian
5. ПРЕДПОСЫЛКИ ДЛЯ МИГРАЦИИ С RISC НА X86
1. Прекращено развитие SPARC-архитектуры – последняя модель (SPARC M8)
вышел в 2017 году
2. Высокая стоимость сопровождения и комплектующих для RISC-серверов
3. Недорогая альтернатива в виде серверов Linux-x86 – дешевле стоимость,
сопровождение и апгрейд
4. Бурное развитие платформы x86 – появление на рынке AMD Epyc c 64/128
ядрами
5. Поддержка платформы ARM в СУБД Oracle Database 19c
6. РАЗЛИЧИЕ RISC-ПЛАТФОРМ И X86
Различный порядок записи байтов ( Endian ) – это способ, который определяет
порядок хранения байтов в памяти сервера. Соответственно, он же используется в
файлах данных БД.
Существуют 2 порядка записей байтов:
• Big Endian (BE) – байты в машинном слове расположены по возрастанию адресов
(слева направо)
• Little Endian (LE) – байты в машинном слове расположены по убыванию адресов
(порядок байтов “перевернут”)
7. 7 29.06.2025
ENDIAN ЗАВИСИТ ОТ ПЛАТФОРМЫ (CPU + ОС)
Small endiian платформы
• Linux (Intel x86 32/64 bit)
• Linux (Intel IA32/64)
• Windows (Intel x86 32/64 bit)
• Windows (Intel IA32/64)
• Open VMS (Intel IA64)
• Tru64 UNIX (Alpha)
• Solaris for x86
При миграции СУБД Oracle между платформами c
разным Endian необходима конвертация файлов
данных
Big endian платформы
• Solaris (SPARC)
• HP-UX (Intel IA64)
• HP-UX (PA-RISC)
• AIX (PowerPC)
• Linux (PowerPC)
• Linux (zSeries)
8. СПОСОБЫ МИГРАЦИИ C RISC НА X86
Перечень способов миграции
Их достоинства и недостатки
9. СПОСОБЫ КОНВЕРТАЦИИ ENDIAN
9
29.06.2025
Small ending платформы
• Linux (Intel x86 64 bit)
Big ending платформы
• Solaris (SPARC)
Система
хранения
данных
Система
хранения
данных
№ Способы конвертации
1 RMAN Convert (с помощью утилиты
RMAN)
2 Встроенный пакет DBMS_FILE_TRANSFER
3 Datapump Export/Import (с помощью
утилит expdp/impdp)
4 Логическая репликация (GoldenGate)
Конвертация данных
10. КОНВЕРТАЦИЯ ФАЙЛОВ ДАННЫХ
В ходе конвертации RMAN создает копию файла данных
Может быть выполнен на исходной или целевой платформе
СХД должна быть доступна для обеих хостов
Время конвертации примерно равно времени получения бэкапа
соответствующих файлов данных, требуется объем СХД равный исходному
размеру
Параллельность поддерживается
Пример:
DBMS_FILE_TRANSFER можно использовать для копирования файлов - конвертирует
неявно “на лету”
RMAN> CONVERT DATABASE
NEW DATABASE 'newdb'
TRANSPORT SCRIPT
'/tmp/convertdb/transportscript'
TO PLATFORM 'Linux x86 64-bit';
БД должна быть в read-only - большой downtime
11. …
Исходная система
dmp-файлы
Экспорт
МИГРАЦИЯ ЧЕРЕЗ DATAPUMP ЭКСПОРТ-ИМПОРТ
Способы увеличения скорости
Целевая система
Импорт
Включено сжатие и параллельность
•expdp FULL=Y COMPRESSION=ALL PARALLEL=8
DUMPFILE=start%u.dmp
Включена параллельность
•impdp PARALLEL=8 DUMPFILE=start%u.dmp
Большой downtime на экспорт-импорт
12. TRANSPORTABLE TABLESPACE WITH INCREMENTAL
BACKUPS
Миграция с помощью транспортируемые табличные пространств с
конвертацией и “применением” инкрементальных бэкапов
13. 13
TRANSPORTABLE TABLESPACE WITH INCREMENTAL
BACKUPS
TTS с сменой Endian - xTTS
DESTINATION Database 19c Linux
SCOTT
HUGO
SOURCE Database 19c SPARC
VIEWS
CODE
PRIVS
SCOTT
HUGO
USERS
SYSTEM
SYSAUX
UNDO
TEMP
SYSTEM
SYSAUX
UNDO
TEMP
VIEWS
CODE
PRIVS
Data Pump
Convert and apply
backups
IncSet 0
IncSet 1
IncSet 1
Read Only
expdp/impdb "'"sys/sys as sysdba"'" …
TRANSPORT_TABLESPACES=TS1,TS2 …
Downtime!!!
Read Write
14. XTTS – ОПИСАНИЕ НА МЕТАЛИНКЕ
xTTS v4 PERL scripts in MOS Note: 2471245.1
Исходная БД: 10.2.0.3 +
Целевая БД: 11.2.0.4 +
xTTS v1
Doc ID 1389592.1
xTTS v2
Doc ID 1389592.1
xTTS v3
Doc ID 1389592.1
xTTS v4
Doc ID 2471245.1
M5
Doc ID 2999157.1
2
0
1
8
2
0
2
4
16. XTTS M5 – FTEX MIGRATION
FTEXT поддерживает:
Зашифрованные табличные пространства
Multisection бэкапы
Миграция нескольких баз данных в одну CDB одновременно
Сжатые бэкапы (compressed backupset)
Улучшенный параллелизм
Целевая и исходная БД должны быть:
Версии 19.18.0 и выше
Установлен Data Pump Bundle Patch
Целевая БД должна использовать Oracle Managed Files (OMF)
Установлен параметр DB_CREATE_FILE_DEST
18. XTTS - ПРОБЛЕМЫ
Ошибка при миграции таблиц с столбцом типа XMLType
33720650: TCH19C :: OCI-21500: INTERNAL ERROR CODE [QMCXDGETQNAMEINFO2],
[14003] IN XMLTYPE CLOUMN TYPE
Патч вошел в Data Pump Recommended Proactive 19.15+
Большой downtime для баз с десятками тысяч и более сегментов
Удалить небольшие индексы в исходной БД, после plug-in в целевой БД быстро
пересоздать в parallel online
Удалить все промежуточные таблицы, которые можно легко пересоздать и
наполнить данными
Переносить замкнутые группы табл. пространств параллельно
Де-материализовать пустые сегменты с помощью пакета DBMS_SPACE_ADMIN:
exec dbms_space_admin.drop_empty_segments;
Почистить БД - удалить сегменты, которые уже не используются
Очистить мусорную корзину: purge dba_recyclebin;
19. XTTS – ПРОБЛЕМЫ (ПРОДОЛЖЕНИЕ)
Ошибка при миграции с большим количеством файлов данных smallfile
ORA-39123: Data Pump transportable tablespace job aborted
ORA-01240: too many data files to add in one command
ORA-39123 ORA-1240 Error On Import Of Transportable Tablespace (Doc ID
740983.1)
“during TTS plugin phase we generate a single redo record containing the name of
all the datafiles in the operation.”
Варианты решения:
Переименовать файлы данных и пути, чтобы сделать их короче
Создать новые табличные пространства в режиме BIGFILE, и перенести в них
сегменты (alter table move online, alter index rebuild online), старые удалить
Переносить по отдельности замкнутые группы табличных пространств (если это
возможно)
20. XTTS - РЕКОМЕНДАЦИИ
Не забыть про выравнивание последовательностей: SQL> @reset_seq.sql
Проверить на отсутствие INVALID-объектов в целевой БД: SQL> @check_objects.sql
Пересоздание очередей Advanced Queuing: SQL> @recreate_queues.sql
Сбор статистики: перенести статистику заранее
На целевой БД временно перенести файлы табличных пространств SYSTEM и
SYSAUX на RAM-диск (БД в nologging), после окончания миграции перенести их на
обычный диск, удалить RAM-диск, вернуть память в SGA и рестартовать экземпляр
(перевод БД в logging mode)
21. XTTS – ЗАВЕРШАЮЩИЕ ШАГИ
Проверка логической целостности словаря БД: Health Check (hcheck.sql)
Cкачать скрипт hcheck.sql с MOS Note:136697.1
Проверяет также известные проблемы с словарем для версий Oracle8i,
Oracle9i, Oracle10g и Oracle 11g
Требует hOut Helper Package (hout.sql) с MOS Note:101468.1
Проверка файлов данных: RMAN Validation Check
RMAN> validate database check logical;
См. MOS Note:836658.1 для детальной информации
Проверка может производиться в несколько потоков – для увеличения
скорости, - может производится только на выбранных файлах данных или
табличных пространствах
22. XTTS – ИСТОРИЯ УСПЕХА
Миграция с Solaris на SPARC M7 на AMD c Oracle Linux
Число пользовательских сегментов: ~5000
Количество пакетов: ~1000
Использовались скрипты M5 – миграция с помощью FTEX
Объем БД: ~7 ТБ
Суммарный downtime БД составил ~30 минут!
23. “
”
МИГРАЦИЯ СУБД ORACLE С RISC-
ПЛАТФОРМ НА LINUX X86 С
МИНИМАЛЬНЫМ ВРЕМЕНЕМ ПРОСТОЯ
ИГОРЬ МЕЛЬНИКОВ
Независимый консультант
Email: melnikov_ii@mail.ru
Tel: +7 915 205 26 27