暂无图片
暂无图片
4
暂无图片
暂无图片
2
暂无图片

从 Oracle 到 PostgreSQL迁移成本评估揭秘

原创 梧桐 6天前
80

从 Oracle 迁移到 PostgreSQL,这一路上有哪些潜流暗滩,需要多少时间,会不会无功而返?别担心,有个超厉害的免费工具 Ora2Pg 来帮忙,它就像一位经验丰富的向导,带着我们一步步评估这场 “大冒险” 的成本。评估流程:1.安装配置→ 2.生成报告 → 3.分析不兼容项 → 4.转换测试 → 5.人工优化,以下是操作参考:

1. 安装 Ora2Pg

环境要求清单

  • Linux(CentOS7.9及兼容版本)
  • Perl 5.10+
  • DBI、DBD::Oracle(连接Oracle)
  • DBD::Pg(连接PostgreSQL,选装哦)

安装步骤

# 在Linux上安装依赖 sudo yum install perl libdbi-perl libdbd-oracle-perl libdbd-pg-perl # 如报错,请执行下列命令,如正常,可忽略 sudo yum install epel-release sudo yum update sudo yum install perl-DBI perl-DBD-Oracle perl-DBD-Pg sudo yum install perl-CPAN sudo cpan DBD::Oracle # 下载并安装Ora2Pg wget https://github.com/darold/ora2pg/archive/refs/tags/v24.3.tar.gz tar -xzf ora2pg-24.3.tar.gz cd ora2pg-24.3 perl Makefile.PL make && sudo make install
复制

2. 配置Oracle连接

编辑配置文件(如 ora2pg.conf),设置Oracle连接参数:

ORACLE_HOME /path/to/oracle/client ORACLE_DSN dbi:Oracle:host=oracle_host;sid=oracle_sid ORACLE_USER username ORACLE_PWD password # 例如: ORACLE_HOME /home/app/oracle/client ORACLE_DSN dbi:Oracle:host=192.168.0.11;sid=YYDB
复制

3. 执行兼容性评估

(1) 生成评估报告

ora2pg -t SHOW_REPORT -o migration_report.html
复制

这行命令就像给数据库做了一次全面体检,-t SHOW_REPORT是告诉 Ora2Pg 要生成兼容性分析报告,-o是指定报告输出成 HTML 格式(当然,CSV 和 TXT 格式也可以哈)。

(2) 报告内容解读

体检报告出来啦!它会给不同的部分打分,从 A 到 F,A 代表超棒,完全兼容,F 就有点糟糕啦。看看这些例子:

[TABLE] SCHEMA.TABLE1: A (完全兼容) [VIEW] SCHEMA.VIEW1: C (需重写ROWNUM为ROW_NUMBER()) [FUNCTION] SCHEMA.FUNC1: D (使用了Oracle专有的DBMS_LOB包)
复制

数据库对象、数据类型、SQL 语法、PL/SQL 代码这些方面要是有不兼容的地方,都会被指出来哦。

4. 深度评估

指定评估范围

如果只想看看表和视图有没有问题,或者不想管触发器和包,可以这样设置:
# 可以只评估特定对象类型(如表、视图) TYPE TABLE,VIEW # 或排除某些对象 EXCLUDE TRIGGER,PACKAGE
复制

评估PL/SQL复杂度

ora2pg -t PLSQL -o plsql_analysis.txt
复制

这能帮我们分析存储过程和函数里那些 Oracle 特有的 “小秘密”,比如游标、异常处理这些。

估算迁移工作量

ora2pg -t ESTIMATE
复制

Ora2Pg 还能像根据代码行数和复杂度估算出迁移需要多少人人工小时数

5. 实际迁移测试

导出DDL,用于在PostgreSQL生成数据结构

ora2pg -t TABLE -o tables.sql -b /output_dir
复制

将Oracle表结构转换为PostgreSQL DDL,生成SQL文件供人工校验。

迁移数据测试

ora2pg -t COPY -o data_copy.sql
复制

生成数据导出(Oracle)和导入(PostgreSQL)的脚本。可pgadmin、dbeaver、pgsql中把数据导入到postgresql中。

6. 注意事项

像分区表、物化视图这些有点复杂的 Oracle 特性,还有高级安全特性,都得我们手动帮忙适配。比如,可以用 REPLACE_AS_BOOLEAN 配置把 Oracle 的 NUMBER (1) 变成 PostgreSQL 的 BOOLEAN。

报告里那些被评为 F 级的对象,可能得 “大改造” 才行。比如 Oracle 的 CONNECT BY 递归查询,到 PostgreSQL 就得变成 WITH RECURSIVE。

虽然 Ora2Pg 很厉害,但复杂的业务逻辑它没办法 100% 准确转换,所以开发人员还得仔细检查,保证业务逻辑还是原来的味道。

7. 推荐辅助工具

pgAdmin、dbeaver、psql 这些工具可以帮我们手动执行生成的 SQL 脚本,检查有没有问题。还有像 pg-comparator 这样的数据校验工具,能确保迁移后的数据一模一样,不会 “丢三落四”。

总结

通过这些步骤,数据库迁移团队可精准定位迁移难点,合理分配各项资源。Ora2Pg还能导出完整的数据库 schema,处理用户和组的权限,支持各种数据类型转换,甚至能把 Oracle 视图变成 PostgreSQL 表呢!不管是中小规模数据库迁移前看看可不可行,还是想知道工作量有多大,它都能轻松搞定。

参考文献

[1].https://ora2pg.darold.net/documentation.html
[2].https://github.com/darold/ora2pg

更多请关注:神州飞象公众号
rr.jpeg

最后修改时间:2025-03-28 10:31:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

芃芃
暂无图片
4天前
评论
暂无图片 0
从 Oracle 到 PostgreSQL迁移成本评估揭秘
4天前
暂无图片 点赞
评论
怀
怀念和想念
暂无图片
4天前
评论
暂无图片 0
从 Oracle 到 PostgreSQL迁移成本评估揭秘
4天前
暂无图片 点赞
评论
梧桐
关注
暂无图片
获得了64次点赞
暂无图片
内容获得23次评论
暂无图片
获得了53次收藏
TA的专栏
与PostgreSQL对话
收录100篇内容
目录
  • 1. 安装 Ora2Pg
    • 环境要求清单
    • 安装步骤
  • 2. 配置Oracle连接
  • 3. 执行兼容性评估
    • (1) 生成评估报告
    • (2) 报告内容解读
  • 4. 深度评估
    • 指定评估范围
    • 评估PL/SQL复杂度
    • 估算迁移工作量
  • 5. 实际迁移测试
    • 导出DDL,用于在PostgreSQL生成数据结构
    • 迁移数据测试
  • 6. 注意事项
  • 7. 推荐辅助工具
  • 总结