Thứ Ba, 11 tháng 11, 2025

Migration database cross-verion, cross-database, cross-platform

Mình sẽ trình bày hệ thống toàn bộ giải pháp migration khác version, cross-database, cross-platform, kèm:

1️⃣ Tổng quan phân loại
2️⃣ Giải pháp cụ thể cho từng nhóm
3️⃣ Bảng so sánh ưu / nhược / khi dùng
4️⃣ Hướng dẫn triển khai step-by-step (theo nhóm)
5️⃣ Checklist rủi ro & best practice


🧭 1. PHÂN LOẠI MIGRATION THEO 3 GÓC NHÌN

NhómMô tảVí dụ
A. Intra-Version / Inter-VersionCùng hệ Oracle, khác version (ví dụ 11g → 19c)Upgrade / Downgrade
B. Cross-Platform (same DBMS)Oracle → Oracle, nhưng khác OS (Windows ↔ Linux ↔ Unix) hoặc endian khácHP-UX → Linux, AIX → x86
C. Cross-Database (cross-vendor)Oracle ↔ PostgreSQL / SQL Server / DB2 / MySQLHeterogeneous migration

🧱 2. GIẢI PHÁP CHO TỪNG NHÓM


🅐 Intra/Inter-Version Migration (Oracle 11g → 12c/19c/23ai)

🔧 Giải pháp 1 — DBUA (Database Upgrade Assistant)

  • GUI tự động nâng version Oracle (Linux/Windows/Unix).

  • Tự kiểm tra precheck, nâng catalog, recomp PL/SQL.

Ưu điểm:

  • Đơn giản, kiểm tra toàn bộ dependency.

  • Giữ nguyên datafile, không cần export/import.

Nhược điểm:

  • Chỉ áp dụng cùng máy chủ (in-place) hoặc có clone backup.

  • Không thay đổi kiến trúc (ASM/FRA không đổi).

🕒 Khi dùng:
Oracle upgrade nội bộ version 11.2 → 19c, muốn nâng nhanh, không cần đổi OS.


🔧 Giải pháp 2 — Manual Upgrade (catctl.pl / catupgrd.sql)

  • Chạy script nâng version bằng tay (được Oracle hỗ trợ).

  • Chủ yếu dùng trong môi trường không có GUI.

Ưu: Kiểm soát hoàn toàn quá trình.
Nhược: Yêu cầu tay nghề cao, lỗi dễ hỏng catalog.

🕒 Khi dùng:
Các hệ thống không có DBUA (Unix minimal install, container DB, automation script).


🔧 Giải pháp 3 — Data Pump Export/Import

  • Dump toàn bộ schema/data → import sang DB 19c mới.

✅ Cross-version, cross-OS, có thể đổi cấu trúc, tablespace.
❌ Downtime dài, invalid objects phải recompile.

🕒 Khi dùng:
Upgrade đồng thời refactor cấu trúc, đổi charset/NLS, đổi server.


🔧 Giải pháp 4 — GoldenGate Zero Downtime Upgrade

  • Cài song song 2 DB (11g và 19c).

  • Thiết lập replication (Extract–Replicat).

  • Khi sync hoàn tất, switchover app.

✅ Downtime phút.
❌ Phức tạp, cần license GoldenGate.

🕒 Khi dùng:
Hệ thống sản xuất lớn (billing, banking), cần downtime < 10 phút.


🔧 Giải pháp 5 — RMAN DUPLICATE / XTTS

  • Tạo physical standby (Data Guard hoặc XTTS), recover đến SCN mới.

  • Switchover để upgrade.

✅ Nhanh, an toàn, ít downtime.
❌ Không đổi cấu trúc.

🕒 Khi dùng:
Nâng version nhỏ (11.2 → 12.1), cùng endian.


🅑 Cross-Platform Migration (Unix ↔ Linux ↔ Windows)

🔧 Giải pháp 1 — RMAN Cross-Platform Transportable Tablespace (XTTS)

  • Backup tablespace → CONVERT TO PLATFORM → import vào DB mới.

✅ Hỗ trợ endian khác, giảm downtime với incremental.
❌ Không đổi cấu trúc, cần đủ disk space.

🕒 Khi dùng:
HP-UX/AIX → Linux x86, Solaris → Linux.


🔧 Giải pháp 2 — Data Pump (FULL/Schema/Table)

  • Dùng expdp/impdp hoặc NETWORK_LINK.

✅ Cross-endian dễ dàng, đổi cấu trúc, đổi charset.
❌ Thời gian dài nếu data lớn, invalid PL/SQL.

🕒 Khi dùng:
Cross-OS, cross-endian, cần thay đổi cấu trúc.


🔧 Giải pháp 3 — GoldenGate Cross-Platform

  • Dùng trail file định dạng OS độc lập.

✅ Real-time sync cross-platform.
❌ Tốn license, cấu hình phức tạp.

🕒 Khi dùng:
Production 24/7, cần downtime cực thấp.


🔧 Giải pháp 4 — Transportable Database (RMAN CONVERT DATABASE)

  • Convert toàn DB giữa endian khác nhau.

✅ Giữ nguyên logic DB, nhanh hơn export/import.
❌ Không đổi cấu trúc, chỉ cho phép DB >= 10g.

🕒 Khi dùng:
Di chuyển nguyên DB cross-platform, cùng version.


🅒 Cross-Database Migration (Oracle ↔ PostgreSQL / DB2 / SQL Server / MySQL)

🔧 Giải pháp 1 — Oracle SQL Developer Migration Workbench

  • Hỗ trợ convert schema, datatype mapping, generate DDL, data copy.

✅ Free, hỗ trợ MySQL, SQL Server, DB2, Sybase.
❌ Không hỗ trợ hết các PL/SQL nâng cao.

🕒 Khi dùng:
Từ SQL Server / MySQL / DB2 → Oracle hoặc ngược lại.


🔧 Giải pháp 2 — ora2pg (Open Source)

  • Export schema/data từ Oracle → PostgreSQL.

  • Convert datatype, function, view, sequence.

✅ Tự động, nhanh, hỗ trợ parallel.
❌ PL/SQL phải chuyển thủ công, không đồng bộ realtime.

🕒 Khi dùng:
Oracle → PostgreSQL (telecom, finance đang dùng phổ biến).


🔧 Giải pháp 3 — AWS DMS / Azure DMS / GCP DMS

  • Dịch vụ cloud hỗ trợ heterogeneous replication.

✅ Hỗ trợ Oracle → PostgreSQL/MySQL/Aurora, downtime thấp.
❌ Tốn chi phí cloud, cần network ổn định.

🕒 Khi dùng:
Migrating lên Cloud.


🔧 Giải pháp 4 — IBM DataStage / Informatica / Talend / ODI

  • ETL doanh nghiệp, transform phức tạp, nhiều nguồn dữ liệu.

✅ Linh hoạt mapping, logging, rollback.
❌ Tốn license, phức tạp setup.

🕒 Khi dùng:
Cross-DB lớn (Oracle ↔ DB2 ↔ SQL Server ↔ PostgreSQL).


🔧 Giải pháp 5 — Custom ETL (DBLINK + PL/SQL / Python)

  • Dùng PL/SQL job hoặc Python script đọc dữ liệu, ghi vào DB đích.

✅ Kiểm soát hoàn toàn, không license.
❌ Tự xử lý datatype mapping, trigger, constraint.

🕒 Khi dùng:
Dự án nhỏ hoặc cần kiểm soát từng bảng.


⚖️ 3. BẢNG SO SÁNH TỔNG HỢP

| Giải pháp | Loại Migration | Downtime | Linh hoạt | License | Ưu điểm | Nhược điểm |
|------------|----------------|-----------|------------|----------|------------|
| DBUA | Same-version | Trung bình | Thấp | Không | Nhanh, ít thao tác | Không cross-platform |
| RMAN DUPLICATE | Same OS | Thấp | Thấp | Không | An toàn, chính xác | Không refactor |
| XTTS | Cross-platform | Thấp | Trung bình | Không | Hỗ trợ endian khác | Không đổi cấu trúc |
| Data Pump | Cross-anything | Cao | Cao | Không | Linh hoạt | Downtime lớn |
| GoldenGate | Any | Rất thấp | Cao | Có | Real-time sync | License cao |
| SQL Developer | Cross-DB | Trung bình | Cao | Không | GUI, dễ dùng | Hạn chế PL/SQL |
| ora2pg | Oracle → PG | Trung bình | Cao | Không | Tự động | Không realtime |
| ODI / Talend / DataStage | Cross-DB | Trung bình | Rất cao | Có | ETL phức tạp | Cấu hình nặng |
| Custom PL/SQL/ETL | Any | Trung bình | Rất cao | Không | Kiểm soát cao | Manual nhiều |


⚙️ 4. HƯỚNG DẪN TRIỂN KHAI (STEP-BY-STEP)


🧩 A. Oracle Upgrade (11g → 19c)

# 1. Kiểm tra compatibility $ORACLE_HOME/rdbms/admin/preupgrade.jar TEXT TERMINAL # 2. Backup RMAN full rman> backup database plus archivelog; # 3. Nâng version dbua # Hoặc manual: sqlplus / as sysdba > startup upgrade; > @?/rdbms/admin/catctl.pl -n 8 -d ?/rdbms/admin catupgrd.sql > shutdown immediate; startup; > @?/rdbms/admin/utlrp.sql

🧩 B. Cross-Platform (AIX → Linux, endian khác) dùng XTTS incremental

-- Trên SOURCE EXEC DBMS_TTS.TRANSPORT_SET_CHECK('TS_DATA,TS_IDX', TRUE); SELECT * FROM TRANSPORT_SET_VIOLATIONS;
rman target / BACKUP AS COPY TABLESPACE TS_DATA,TS_IDX FORMAT '/bkp/base_%U'; CONVERT DATAFILE '/bkp/base_01' FORMAT '/conv/base_01' TO PLATFORM 'Linux x86 64-bit';
# Trên DEST CATALOG DATAFILECOPY '/conv/base_01'; RECOVER DATAFILE 5;

Lặp incremental:

BACKUP INCREMENTAL FROM SCN <last_scn> TABLESPACE TS_DATA FORMAT '/bkp/incr_%U';

Import metadata:

impdp system/pwd FULL=Y TRANSPORTABLE=ALWAYS \ DUMPFILE=meta_%U.dmp DIRECTORY=DP_DIR TRANSPORT_DATAFILES='/conv/base_01'

🧩 C. Oracle → PostgreSQL bằng ora2pg

# 1. Cấu hình ora2pg.conf ORACLE_DSN dbi:Oracle:host=10.1.1.10;sid=ORCL ORACLE_USER system ORACLE_PWD oracle TYPE TABLE,VIEW,SEQUENCE,FUNCTION SCHEMA APP OUTPUT output/ DATA_LIMIT 50000 PARALLEL_JOBS 8 PG_DSN dbi:Pg:dbname=targetdb;host=10.1.1.20
# 2. Export schema ora2pg -c ora2pg.conf -t schema # 3. Import vào PostgreSQL psql -h target -U postgres -d targetdb -f output/schema.sql # 4. Export & load data ora2pg -c ora2pg.conf -t copy

🧩 D. Oracle → SQL Server (SQL Developer Workbench)

1️⃣ Tạo connection nguồn (Oracle) và đích (SQL Server)
2️⃣ Tools → Migration → Repository → Capture → Convert → Move Data
3️⃣ SQL Developer sinh script DDL tương thích.
4️⃣ Kiểm tra datatype mapping: NUMBER → DECIMAL, DATE → DATETIME2, CLOB → NVARCHAR(MAX).
5️⃣ Test & validate bằng checksum, count.


🧩 E. Oracle → DB2 / MySQL / Cloud (AWS DMS)

  • Tạo Replication Instance

  • Source Endpoint: Oracle connection

  • Target Endpoint: PostgreSQL/MySQL/DB2

  • Chọn chế độ:

    • Full Load only (import toàn bộ)

    • Full + CDC (load + sync realtime)

  • AWS DMS tạo CDC tự động qua redo log SCN.


✅ 5. CHECKLIST RỦI RO & BEST PRACTICE

Rủi roGiải pháp
Khác endian/OSDùng XTTS hoặc Data Pump
Khác charset (AL32UTF8 vs WE8ISO)Dùng NCHAR hoặc convert trước
Function, trigger, UDT không tương thíchExport riêng, chỉnh PL/SQL thủ công
Index invalid sau importRebuild toàn bộ, gather stats
Downtime caoDùng GoldenGate / CDC tự viết / XTTS incremental
Dữ liệu lệchSo khớp checksum, DBMS_COMPARISON, count(*)

🧠 6. TỔNG KẾT CHO CHUYÊN GIA TRIỂN KHAI

Mục tiêuGiải pháp khuyên dùng
Upgrade Oracle (same OS)DBUA / catctl.pl
Cross-OS (same endian)RMAN DUPLICATE / TTS
Cross-endian (AIX → Linux)XTTS incremental
Cross-DB (Oracle → PostgreSQL)ora2pg
Near-zero downtimeGoldenGate / DMS / Trigger CDC
ETL phức tạp (multi-source)ODI / Talend / DataStage
Dự án nhỏData Pump hoặc custom PL/SQL + DBLINK
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master