注册
Oracle 11gR2 XE → DM8 DTS 数据迁移
培训园地/ 文章详情 /

Oracle 11gR2 XE → DM8 DTS 数据迁移

DM_184112 2026/09/04 45 0 0

1. 实验目标与整体迁移路线

先部署 Oracle,创建包含常见对象类型的源模式;再在 DM8 准备目标用户;之后使用 DTS 先评估、再迁移,最后从数据、对象、约束、索引、序列和业务查询多个维度验收。
整体流程可记为:
Oracle 11gR2 XE 部署

创建源模式 ORA_MIG 与测试数据

生成源端迁移基线并停止写入

DM8 创建 ORA_MIG_TS / ORA_MIG_DM

DTS 迁移评估

DTS Oracle → DM 正式迁移

DM8 SQL 验收 + DTS 对比

更新统计信息 / 保存报告 / 备份

2. 环境与迁移

本次 Oracle、DM8 和 DTS 都运行在同一台虚拟机中,因此 DTS 连接源库和目标库时可以使用 127.0.0.1。虚拟机对外地址只用于从 Windows 或其他机器访问数据库。
Oracle 11gR2 XE
127.0.0.1:1521/XE
模式:ORA_MIG

│ DTS 静态迁移

DM8
127.0.0.1:5236
模式:ORA_MIG_DM

3. Oracle 11gR2 XE 部署

11gR2 XE 的安装方式与 Oracle 企业版不同。XE 的 RPM 包已经包含数据库软件和固定 XE 实例,安装完成后通过 oracle-xe 配置脚本创建数据库和监听,不需要单独执行 runInstaller、netca、dbca。
3.1 安装前检查

uname -m
cat /etc/os-release
free -h
swapon --show
df -hT / /tmp /dev/shm
ip -4 addr
ss -lntp | grep -E ':(1521|5236|8080)[[:space:]]' || true
检查项	说明
CPU 架构	安装包为 Linux x86-64,应确认 uname -m 为 x86_64
内存 / Swap	XE 资源占用较小,但仍应确认内存、Swap 与 /dev/shm 可用
磁盘空间	确认根分区和 /tmp 有足够空间
端口	Oracle 默认 1521,DM8 使用 5236,两者不能冲突
主机名解析	主机名应能通过 /etc/hosts 或 DNS 解析


3.2 安装依赖与安装包

yum clean all
yum makecache

yum install -y   binutils gcc glibc libaio libnsl libstdc++   make bc net-tools chkconfig unzip

将安装包复制到虚拟机本地后解压并通过 yum 本地安装:

mkdir -p /root/oracle11gxe
cd /root/oracle11gxe

unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip

yum localinstall -y   /root/oracle11gxe/Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm

3.3 配置 XE 数据库

/etc/init.d/oracle-xe configure

按提示配置:
项目 本次值
APEX HTTP 端口 8080
Listener 端口 1521
SYS / SYSTEM 口令 输入自定义强口令
开机自动启动 y

配置完成后,XE 固定实例和服务名均为 XE。若 1521 已被占用,可在配置时使用其他空闲端口,但 DTS 和后续连接信息也要同步修改。
3.4 Oracle 环境变量与启动验证

# oracle 用户环境加载
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

echo "$ORACLE_HOME"
echo "$ORACLE_SID"
which sqlplus

# 启动/检查
/etc/init.d/oracle-xe start
/etc/init.d/oracle-xe status

su - oracle
lsnrctl status
sqlplus / as sysdba
-- SQL*Plus 中
select banner from v$version;
select instance_name, status, database_status from v$instance;
select value from v$parameter where name = 'service_names';

4. Oracle 源端测试模式与迁移

为了验证 DTS 不仅能迁表数据,还能处理主外键、索引、序列、视图、CLOB、中文、NULL、DATE 和 TIMESTAMP,实验单独创建 ORA_MIG 源模式,不使用 SYS/SYSTEM 存放业务对象。
4.1 创建 ORA_MIG 用户

su - oracle
sqlplus / as sysdba
create user ORA_MIG identified by "<Oracle口令>"
  default tablespace USERS
  temporary tablespace TEMP
  quota unlimited on USERS;

grant create session,
      create table,
      create view,
      create sequence
to ORA_MIG;
切换到迁移用户:
connect ORA_MIG/<Oracle口令>@XE
show user

4.2 创建测试对象
本实验核心对象包括 3 张表、2 个序列、2 个普通索引和 1 个视图。表之间形成“部门 → 员工 → 订单”的外键关系。
对象 用途

MIG_DEPARTMENT	部门表,验证基础表和主键
MIG_EMPLOYEE	员工表,验证外键、检查约束、CLOB、NULL、中文
MIG_SALES_ORDER	订单表,验证唯一约束、外键、TIMESTAMP(6)、DECIMAL
SEQ_MIG_EMP / SEQ_MIG_ORDER	验证 Oracle 序列迁移及迁移后的当前值
IDX_MIG_EMP_DEPT / IDX_MIG_ORDER_TIME	验证普通索引迁移
V_MIG_EMPLOYEE	验证视图 SQL 转换

4.3 插入数据并提交
数据按部门、员工、订单的依赖顺序写入。完成后必须 COMMIT,否则 DTS 迁移时可能读取不到未提交事务中的数据。


select count(*) as DEPARTMENT_ROWS from MIG_DEPARTMENT;
select count(*) as EMPLOYEE_ROWS   from MIG_EMPLOYEE;
select count(*) as ORDER_ROWS      from MIG_SALES_ORDER;
本次实验预期结果:部门 4 行、员工 6 行、订单 8 行,总计 18 行。

4.4 迁移前基线
正式迁移前要把源端状态为一份可核对的基线。除了行数,还建议记录工资合计、订单金额合计、NULL 数量、中文/CLOB、对象状态和序列下一个值。基线完成后停止写入 Oracle,直到迁移和核对结束。

       count(*) ROW_COUNT,
       cast(null as number) TOTAL_VALUE
from MIG_DEPARTMENT
union all
select 'MIG_EMPLOYEE', count(*), sum(SALARY)
from MIG_EMPLOYEE
union all
select 'MIG_SALES_ORDER', count(*), sum(AMOUNT)
from MIG_SALES_ORDER;

5. DM8 目标端准备

目标端不建议直接把迁移对象放到 SYSDBA 或系统默认 MAIN 中。实验为 Oracle 源模式单独创建表空间和用户,这样迁移对象边界清晰,也方便失败后清理、重新迁移和后续备份。
5.1 确认 DM8 服务与关键参数


su - dmdba
/home/dmdba/dmdbms/bin/disql   'SYSDBA/<DM_SYSDBA口令>@127.0.0.1:5236'
select * from V$VERSION;

select PARA_NAME, PARA_VALUE
from V$DM_INI
where PARA_NAME in
      ('PORT_NUM','PAGE_SIZE','EXTENT_SIZE',
       'CASE_SENSITIVE','BLANK_PAD_MODE','COMPATIBLE_MODE')

;
5.2 创建目标表空间和用户

datafile '/home/dmdba/dmdata/DAMENG/ORA_MIG_TS01.DBF'
size 128
autoextend on next 64
maxsize 2048;
create user ORA_MIG_DM identified by "<DM口令>"
default tablespace ORA_MIG_TS
default index tablespace ORA_MIG_TS;

grant PUBLIC, RESOURCE, SOI, SVI, VTI
to ORA_MIG_DM;

正式迁移前,以目标用户登录并确认 MIG_% 表尚不存在:

from USER_TABLES
where TABLE_NAME like 'MIG_%';

6. 启动 DTS 与 JDBC 驱动准备

DTS 为图形化工具,应从 Kylin 图形桌面启动。推荐只授予 dmdba 当前显示权限:

图形桌面的终端

xhost +

export DISPLAY=:0.0
cd /home/dmdba/dmdbms/tool
./dts

  1. DTS 迁移评估
    评估和正式迁移是两件不同的事。评估只读取 Oracle 元数据,用来发现不兼容的数据类型、语法和对象;正式迁移才会在 DM8 中创建对象并写入数据。
    7.1 配置 Oracle 评估连接

7.2 评估对象范围
只选择 ORA_MIG 模式,不迁移 SYS、SYSTEM、XDB、APEX_* 等 Oracle 系统模式。本实验选择 3 张表、1 个视图、2 个序列;主外键、检查约束、索引、注释等依附于表对象,在后续兼容性明细中核对。
对象类型 本次对象
表 MIG_DEPARTMENT、MIG_EMPLOYEE、MIG_SALES_ORDER
序列 SEQ_MIG_EMP、SEQ_MIG_ORDER
视图 V_MIG_EMPLOYEE

7.3 兼容性结果
本次重点观察的类型和对象包括:NUMBER、VARCHAR2、DATE、TIMESTAMP(6)、CLOB、主外键、序列和视图。

8. DTS 正式迁移

8.1 创建迁移任务
在 DTS 中创建新工程和 Oracle → DM 迁移任务。源端、目标端配置如下:
项目 Oracle 源端 DM8 目标端
主机 127.0.0.1 127.0.0.1
端口 1521 5236 或实际端口
服务/模式 XE / ORA_MIG ORA_MIG_DM
用户 ORA_MIG ORA_MIG_DM

8.2 迁移策略
选项 本次建议
迁移表结构 开启
迁移数据 开启
迁移约束和索引 开启
迁移序列 开启
迁移视图 开启
保持对象名大小写 开启
删除/覆盖目标对象 关闭
源端批量读取行数 1000
目标端提交行数 1000
CLOB 保持普通迁移方式

真实大数据量迁移通常更适合分阶段:先建表结构,再装载数据,最后创建索引、外键和视图;此次只有 18 行,可以在一次任务中完成。
8.3 执行迁移并观察任务状态
开始前再次确认 Oracle 行数是 4、6、8,并停止所有写入。DTS 执行过程中观察每类任务的成功、失败、取消数量,有失败时先展开日志,不要直接重复整个迁移任务。

从截图可看到,本次任务包括分析对象、创建模式/表/视图/序列、创建索引、添加主键/外键/唯一约束/检查约束、添加注释和迁移数据等步骤,最终所有任务成功。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服