保持时区和日期一致
任何迁移都应评估应用程序、数据库和系统级别的时区设置。许多传统解决方案都是在特定时区内构建的,面临着保持一致性、添加新时区和适应夏令时变化的挑战。
必须评估时区影响,因为 MariaDB 不支持 Oracle 的数据类型“带时区的日期时间”。如果此过程处理不正确,时区将从数据集中删除。如果只有日期时间戳,这些数据基本上毫无用处。
您可以在迁移过程中使用 Oracle Golden Gate 转换为 UTC 时区,以消除许多此类问题。另一种方法是添加一个列来跟踪时区,但这需要更改代码。
审查你的索引
良好的索引对于数据库性能至关重要,但 DBMS 系统以不同的方式处理查询执 匈牙利电报数据 行计划。许多旧系统会随着时间的推移积累索引,这些索引可能不再相关或有用。即使这些索引是为活动查询创建的,MariaDB 也可能会选择不同的索引来执行相同的查询。如果未针对您当前的需求进行优化,则删除行为上的外键级联和循环外键是另外两个可能导致性能问题的组件。
您还需要确认 MariaDB 是否支持您的 Oracle 索引。例如,它不支持基于函数的索引和索引压缩。
检查这些索引以确定它们在新系统中是否有用,还是只是增加了开销。当您在迁移系统上检查慢速查询时,您可以确定是否需要任何新索引或针对 MariaDB 的查询优化器修改的索引。
在实际迁移过程中,在非常大的表上执行没有索引的初始加载可能会缩短整体迁移时间。当您拥有包含许多需要同时写入磁盘的索引的大型表时,导入批量数据的速度会变慢。有时,在初始加载后使用 ADD INDEX 命令会很有帮助。
注意序列、触发器、存储过程和作业
对可能在数据库中表现不同或需要更改语法才能迁移的对象给予特别考虑和准备。MariaDB 的 Oracle 模式有助于处理非 ANSI 存储过程构造和存储过程参数;在转换必要的语法后,您应该检查并测试所有存储过程和触发器,以确认它们仍然有效并返回与 Oracle 相同的数据。某些元素可能在 MariaDB 中没有等效的对象或函数。例如,Oracle 中的触发器可以在 DML、DDL 或数据库更改时触发,但 MariaDB 触发器仅适用于 DML 更改。您可以将所有 Oracle 调度程序作业转换为作为 MariaDB 事件运行。