背景:

Oracle 授权费用高, 故转PostgreSQL , 找了一下解决方案, 连AI 都推荐用 ora2pg, 但是看起来环境搭建略显复杂, 并且只是一次性的工作, 比较适合使用 docker 

步骤:

1. 拉取镜像: georgmoser/ora2pg

2. 准备编排文件 /data/ora2pg/docker-compose.yml 

version: "3.9"

services:
  ora2pg:
    image: georgmoser/ora2pg:latest
    container_name: ora2pg
    restart: "no"
    environment:
      CONFIG_LOCATION: "/config/ora2pg.conf"
      OUTPUT_LOCATION: "/data"
      ORA_HOST: "dbi:Oracle:host=xxxxx;service_name=ORCLPDB1;port=1521"
      ORA_USER: "user"
      ORA_PWD: "pwd"
    volumes:
      - '/data/ora2pg/config:/config'   # 挂载配置文件目录
      - '/data/ora2pg/data:/data'       # 挂载输出目录
    command: >
      ora2pg -c /config/ora2pg.conf

3. 准备配置文件 /data/ora2pg/config/ora2pg.conf

# Oracle
ORACLE_DSN     dbi:Oracle:host=172.16.xxx.xxx;service_name=ORCLPDB1;port=1521
ORACLE_USER    USER
ORACLE_PWD     PWD

# Postgres
PG_DSN         dbi:Pg:dbname=IWMS;host=172.16.xxx.xxx;port=5432
PG_USER        user
PG_PWD         password
PG_VERSION     16

# Schema
SCHEMA         db1

OUTPUT_DIR     /data

# 导出控制
EXPORT_SCHEMA  1
EXPORT_DATA    1
DATA_EXPORT_MODE COPY

4. docker compose up 启动完成后会自动退出, 如果想单独使用容器中的环境, 可以用这个命令启动后直接打开一个终端

docker compose run --rm ora2pg bash

然后在容器中执行命令, 例如:

ora2pg -c /config/ora2pg.conf > /data/db1.sql

更多 ora2pg 使用方法见: https://ora2pg.darold.net/documentation.html#Oracle-schema-to-export

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐