Oracle 转 PostgreSQL 的 Docker Compose 实践

使用 Docker Compose 可以快速搭建 ora2pg 环境,简化 Oracle 到 PostgreSQL 的迁移流程。以下是一个简单实践版的步骤说明。

准备工作

确保已安装 Docker 和 Docker Compose。创建一个项目目录,用于存放相关配置文件和数据。

mkdir ora2pg-docker
cd ora2pg-docker

编写 Docker Compose 文件

在项目目录中创建 docker-compose.yml 文件,内容如下:

version: '3.8'

services:
  ora2pg:
    image: dgarros/ora2pg
    volumes:
      - ./config:/etc/ora2pg
      - ./data:/data
    environment:
      - ORACLE_DSN=dbi:Oracle:host=oracle_host;sid=oracle_sid
      - ORACLE_USER=oracle_user
      - ORACLE_PWD=oracle_password
      - PG_DSN=dbi:Pg:dbname=postgres_db;host=postgres_host
      - PG_USER=postgres_user
      - PG_PWD=postgres_password
    depends_on:
      - postgres
      - oracle

  postgres:
    image: postgres:13
    environment:
      - POSTGRES_USER=postgres_user
      - POSTGRES_PASSWORD=postgres_password
      - POSTGRES_DB=postgres_db
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data

  oracle:
    image: container-registry.oracle.com/database/express:21.3.0-xe
    environment:
      - ORACLE_PWD=oracle_password
    ports:
      - "1521:1521"
    volumes:
      -acle/oradata

volumes:
  pgdata```

### 配置 ora2pg

在项目目录中创建 `config` 目录,并添加 ora2pg 的配置文件 `ora2pg.conf`:

```perl
ORACLE_HOME /usr/lib/oracle/21/client64/lib
ORACLE_DSN dbi:Oracle:host=oracle;sid=XE
ORACLE_USER oracle_user
ORACLE_PWD oracle_password

PG_DSN dbi:Pg:dbname=postgres_db;host=postgres
PG_USER postgres_user
PG_PWD postgres_password

SCHEMA oracle_schema
TYPE TABLE
OUTPUT_DIR /data

运行迁移

启动 Docker Compose 服务:

docker-compose up -d

进入 ora2pg 容器执行迁移:

docker-compose exec ora2pg ora2pg

验证迁移结果

连接到 PostgreSQL 数据库验证数据是否已迁移:

docker-compose exec postgres psql -U postgres_user -d postgres_db

常见问题处理

如果遇到 Oracle 客户端库缺失的问题,可以在 docker-compose.yml 中为 ora2pg 服务添加以下环境变量:

environment:
  - LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib

优化建议

对于大型数据库,可以调整 ora2pg 的配置参数以提高性能:

JOBS 4
ALLOW strftime
BLOB_LIMIT 1024

以上步骤提供了一个简单的 ora2pg Docker Compose 实践方案,可根据实际需求进行调整和扩展。

https://github.com/stdiegon/x50_ctx0
https://github.com/midtzc/uej_uur7
https://github.com/miladschul/djq_r84o
https://github.com/marcaramas/qgu_yihs
https://github.com/idarsp/1hy_wgwq

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐