2. 迁移需求与现状调研

迁移项目最容易失败的地方,不是切换当晚的操作,而是调研阶段漏掉了一个系统、一个补丁、一条依赖或一段停机约束。需求与现状调研的目标,是把“要迁什么、迁到哪里、能停多久、必须满足什么”变成一份可核对、可量化、可追溯的基线。它既是迁移方案设计的输入,也是后续割接回退判断的依据。

一、业务系统清单:先划清迁移边界

调研第一步不是打开数据库,而是先建立业务系统清单。清单要回答三个问题:哪些系统使用这套 Oracle、它们之间是否有调用关系、哪些系统本次必须一起迁。建议按“业务域—系统—数据库实例—连接方式”四级展开,字段至少包括:系统名称、业务负责人、技术负责人、数据库实例名、连接串/服务名、连接账号类型(应用账号、报表账号、批处理账号)、日均交易量、是否有对外接口。

实际调研中,常见的情况是同一个实例被多个系统共用。例如某订单库同时被订单中心、结算平台、BI 报表三套系统连接。如果只按“数据库”登记,割接时容易漏掉报表系统,导致切换后报表连接失败。因此清单必须落到“系统—实例—账号”的粒度,并标注每个连接是否允许在停机窗口内中断。

二、数据库版本与补丁:决定迁移路径

版本与补丁直接决定可用工具和迁移方式。需要采集:数据库版本(如 11.2.0.4、12.2.0.1、19c)、补丁集(PSU/RU 版本号)、是否启用多租户(CDB/PDB)、字符集(如 AL32UTF8、ZHS16GBK)、归档模式、RAC 或单实例、Data Guard 配置。这些信息决定了能否使用 Data Pump、可传输表空间、GoldenGate 或 Data Guard 切换。

例如源库为 11.2.0.4 单实例、非 CDB、字符集 ZHS16GBK,目标为 19c CDB 中的 PDB、字符集 AL32UTF8,则不能直接做可传输表空间,需要评估 Data Pump 加字符集转换,或先升级再迁移。补丁差异还会影响导出工具兼容性,源库补丁过低时,Data Pump 导出文件可能无法被目标库直接导入。

三、数据量、对象类型与依赖关系

数据量不能只看“总大小”,要拆成:数据文件总容量、实际使用量、最大单表、最大分区表、LOB 数据量、索引大小、每日增量。对象类型要统计表、分区表、索引、物化视图、序列、同义词、存储过程、触发器、定时任务(DBMS_SCHEDULER/JOB)、外部表、数据库链接(DBLINK)。

依赖关系是调研中最容易被低估的部分。数据库内部有对象依赖(视图依赖表、过程依赖表、触发器依赖表),数据库外部有系统依赖(DBLINK 指向其他库、应用通过 TNS 连接、ETL 任务依赖特定账号)。建议用数据字典查询辅助梳理:

-- 统计各对象类型数量
SELECT object_type, COUNT(*) FROM dba_objects
WHERE owner NOT IN ('SYS','SYSTEM','DBSNMP')
GROUP BY object_type ORDER BY 2 DESC;

-- 查看失效对象
SELECT owner, object_name, object_type, status
FROM dba_objects WHERE status = 'INVALID';

-- 查看数据库链接
SELECT owner, db_link, host FROM dba_db_links;

-- 查看定时任务
SELECT owner, job_name, enabled, repeat_interval
FROM dba_scheduler_jobs;

这些查询结果应直接进入调研表。失效对象、指向外部库的 DBLINK、启用的定时任务,都是割接时必须单独处理的项。

四、停机窗口与合规要求

停机窗口要区分“可接受停机时长”和“实际可用切换时长”。前者由业务方给出,后者要扣除准备、验证、回退预留时间。例如业务允许停 4 小时,则实际切换操作应控制在 2.5 小时内,留 1 小时验证、0.5 小时回退决策。窗口类型也要标注:是周末夜间、月末结算后,还是只能利用业务低峰做在线迁移。

合规要求包括:数据是否允许出生产机房、是否要求加密传输、是否涉及个人敏感信息、审计日志是否必须保留、是否要求迁移过程可追溯。这些约束会直接影响迁移工具选择和中间文件存放位置。

迁移现状调研六维基线 业务系统清单 · 版本补丁 · 数据量 · 对象类型 · 依赖关系 · 停机与合规 迁移现状基线 可核对 · 可量化 · 可追溯 ① 业务系统清单 系统—实例—账号粒度 连接方式 / 交易量 / 接口 避免共用实例漏登记 ② 版本与补丁 版本 / PSU / RU CDB-PDB / 字符集 / RAC 决定迁移工具与路径 ③ 数据量 总容量 / 使用量 最大表 / LOB / 索引 每日增量 ④ 对象类型 表 / 分区 / 索引 过程 / 触发器 / 任务 物化视图 / 外部表 ⑤ 依赖关系 对象依赖 / 失效对象 DBLINK / 外部系统 ETL 与账号依赖 ⑥ 停机与合规 可停时长 / 窗口类型 数据出域 / 加密 / 审计 回退预留时间 输出:迁移方案输入 + 割接回退判断依据

五、把调研结果落成可执行基线

调研完成后,应形成一份“迁移现状基线表”,作为方案评审和割接检查的共同依据。下面给出一份可直接参考的字段示例(数据为教学示例,非真实实测):

调研项 示例值 对迁移的影响
业务系统订单中心、结算平台、BI 报表三套系统共用实例,需同步切换
源库版本11.2.0.4 单实例,非 CDB不能直接可传输表空间到 19c PDB
字符集ZHS16GBK → AL32UTF8需评估字符集转换与长度膨胀
数据量总 2.1 TB,最大单表 480 GBData Pump 需并行与分片导出
对象类型表 3200、索引 4100、过程 260、JOB 18JOB 需在目标库重建并核对启用状态
依赖关系3 个 DBLINK、2 个失效过程DBLINK 需重建,失效对象需先修复
停机窗口业务允许 4 小时,实际切换 2.5 小时预留 1 小时验证、0.5 小时回退
合规要求数据不出生产机房,传输加密中间文件不得落地外部存储
调研阶段建议至少做一次“反向核对”:拿着业务系统清单,逐个确认其连接串、账号、定时任务和 DBLINK 是否都已登记。漏项往往不是出现在数据库里,而是出现在“谁在用它”这一侧。
停机窗口不能只写“4 小时”。必须明确起止时间、是否包含验证、回退决策点在哪一刻。否则割接当晚容易出现“时间到了但还没验证完”的被动局面。

调研的最终判断标准是:任何一个迁移动作,都能在基线表中找到对应的输入项;任何一个割接异常,都能在基线表中找到对应的回退依据。做到这一点,后续的方案设计、演练和正式割接才有稳定的起点。