# oracle2polardb_pg **Repository Path**: hayratjan/oracle2polardb_pg ## Basic Information - **Project Name**: oracle2polardb_pg - **Description**: oracle 11g 数据迁移到国产数据库polardb-pg 包括:表、视图、例程..... - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2025-04-25 - **Last Updated**: 2026-03-25 ## Categories & Tags **Categories**: dbmanager **Tags**: Python, Postgresql, Oracle, Vue, Vuex ## README

Oracle to PolarDB 迁移工具 Logo

Oracle 到 PolarDB PostgreSQL 企业级迁移平台

面向企业的 Oracle → 阿里云 PolarDB (PostgreSQL) 一站式迁移与同步解决方案

Python Django Vue PostgreSQL Oracle

--- ## 📋 目录 - [产品概述](#-产品概述) - [适用场景与版本](#-适用场景与版本) - [核心功能](#-核心功能) - [系统架构](#-系统架构) - [快速开始](#-快速开始) - [功能说明](#-功能说明) - [开发指南](#-开发指南) - [文档与支持](#-文档与支持) - [许可证](#-许可证) --- ## 🎯 产品概述 **Oracle 到 PolarDB PostgreSQL 迁移平台** 是一套面向企业级场景的数据库迁移与数据同步解决方案,帮助客户将现有 Oracle 数据库(含 11g 及更高版本)的结构与数据,安全、可控地迁移至阿里云 PolarDB PostgreSQL 兼容引擎(PostgreSQL 15),并支持任务编排、进度监控、冲突策略与日志审计,满足合规与运维需求。 - **一站式**:从连接配置、对象选择、任务创建到执行与监控,全流程 Web 化操作。 - **可扩展**:支持单对象、多对象及整库表批量迁移,适配不同迁移规模。 - **可观测**:实时进度、明细日志、任务状态与失败诊断,便于排障与汇报。 --- ## 📌 适用场景与版本 | 项目 | 说明 | |------|------| | **源端数据库** | Oracle Database 11g 及更高版本(如 11.2.0.4 等),支持表、视图、物化视图、存储过程/函数等对象 | | **目标数据库** | 阿里云 PolarDB PostgreSQL 或兼容 PostgreSQL 15 的实例 | | **典型场景** | 上云迁移、数据库替换、读写分离/只读实例数据同步、历史数据归档与离线分析(如 SQLite 导出) | --- ## ✨ 核心功能 ### 🔗 连接与配置管理 - **Oracle 连接**:支持多套 Oracle 源库配置,连接测试与健康检查。 - **PostgreSQL / PolarDB 连接**:支持多目标实例、多库、SSL 等配置,连接校验。 - **任务级目标库**:创建任务时按三步选择目标 PolarDB:**① 选择数据库链接 → ② 选择目标数据库 → ③ 选择目标 Schema**,便于多库、多 Schema 分发;任务详情页会展示 PolarDB 连接名、目标数据库、目标 Schema 以及源端选择的表/视图列表。 ### 📦 对象类型与迁移能力 | 功能模块 | 说明 | |----------|------| | **表 (Table)** | 迁移表结构(含类型映射)及全量数据;支持百万级大表分批读取与进度更新 | | **视图 (View)** | 迁移视图定义至 PostgreSQL 等价语法(含常见 Oracle 函数/语法转换) | | **视图数据迁移到表 (View→Table)** | 将视图查询结果物化到目标表,支持多视图批量、冲突策略与实时进度 | | **物化视图 (Materialized View)** | 迁移物化视图定义及刷新逻辑 | | **例程 (Routine)** | 迁移存储过程、函数等,并进行基础语法转换(如 NVL→COALESCE) | | **所有表 (All Tables)** | 按 Schema 批量迁移该 Schema 下所有表,在当前任务中依次执行并显示进度(不创建子任务) | | **视图数据迁移到 SQLite** | 将指定视图数据导出为本地 SQLite 文件,便于离线分析或归档 | ### ⚙️ 冲突与策略 - **冲突策略**:目标对象已存在时可选择 **报错 / 替换 / 跳过 / 追加 / 清空后重导**,按任务或对象粒度控制。 - **标识符大小写**:支持 **小写 / 大写 / 保持原样**,避免目标库命名规范差异导致的引用错误。 ### 📊 迁移监控与可观测性 - **实时进度**:任务级总进度 + 各对象(表/视图)明细进度,前端轮询展示。 - **大表优化**:百万级行表/视图采用「先 COUNT 再分批迁移」策略,进度按真实行数更新,避免长时间显示 0%。 - **节流写库**:进度约每 1% 或每 5 万行更新一次,兼顾体验与数据库压力。 - **取消与安全**:支持运行中取消;取消后已写入数据保留,事务回滚,不影响后续任务。 - **日志与诊断**:任务日志、对象级日志、错误堆栈与建议,便于排查与审计。 ### 🔒 安全与多租户 - **认证**:支持 JWT 等认证方式,与现有企业身份体系集成。 - **连接信息**:数据库密码等敏感信息存储与展示遵循最小化原则,可按企业策略扩展加密。 --- ## 🏗 系统架构 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ Web 前端 (Vue 3 + TypeScript + Vite) │ │ 任务列表 / 任务详情 / 连接管理 / 对象选择 / 进度与日志 / 系统配置 │ └─────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────┐ │ REST API (Django REST framework) │ │ 认证、任务 CRUD、启动/取消、状态与进度、连接测试、库表/视图/例程枚举 │ └─────────────────────────────────────────────────────────────────────────┘ │ ┌───────────────────┼───────────────────┐ ▼ ▼ ▼ ┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ │ Oracle 源库 │ │ PostgreSQL/PolarDB │ │ 本地 SQLite / 配置 │ │ (表/视图/例程/数据) │ │ 目标库(结构与数据) │ │ 任务与日志存储 │ └──────────────────────┘ └──────────────────────┘ └──────────────────────┘ ``` - **后端**:Django 5.x + Python 3.12,负责业务逻辑、调度、类型转换与进度持久化。 - **前端**:Vue 3 + TypeScript + Vite,Bootstrap 5 样式,与后端 API 解耦,便于独立部署与定制。 - **数据流**:Oracle 只读访问 → 应用层转换与分批写入 → PostgreSQL/PolarDB 或 SQLite。 --- ## 🚀 快速开始 ### 环境要求 | 类别 | 要求 | |------|------| | **运行环境** | Python 3.12+,Node.js 18+(前端构建) | | **依赖** | Oracle 客户端与驱动(如 cx_Oracle)、PostgreSQL 驱动(如 psycopg2) | | **包管理** | 后端推荐 `uv`,前端推荐 `pnpm` | ### 后端启动 ```bash # 安装依赖 uv pip install -r requirements.txt # 数据库迁移(使用项目配置的 SQLite/PostgreSQL 等) uv run manage.py migrate # 创建超级用户(首次) uv run manage.py createsuperuser # 启动开发服务器 uv run manage.py runserver 0.0.0.0:8000 ``` ### 前端启动 ```bash cd frontend pnpm install pnpm dev ``` 生产环境可将前端构建产物部署至 Nginx 等静态服务器,并配置 API 代理指向后端。 ### 基本使用流程 1. **配置连接**:在「连接管理」中新增 Oracle 源连接与 PolarDB/PostgreSQL 目标连接,并执行连接测试。 2. **选择对象**:通过「创建任务」选择源 Schema、对象类型(表/视图/视图→表/例程等)及具体对象。 3. **创建任务**:选择目标 PolarDB 时依次完成「数据库链接 → 目标数据库 → 目标 Schema」,再设置冲突策略、标识符大小写等,保存任务。任务详情页可查看已选的 PolarDB 连接、目标数据库、目标 Schema 以及源表/视图列表。 4. **执行与监控**:在任务列表或详情页启动任务,查看实时进度与日志,必要时可取消。 5. **结果校验**:在目标库中检查对象结构与数据,结合日志处理失败或部分成功项。 --- ## 📖 功能说明 ### 任务类型一览 | 类型 | 说明 | 典型用途 | |------|------|----------| | **表** | 单表结构 + 全量数据迁移 | 核心业务表迁移 | | **视图** | 仅迁移视图定义 | 逻辑视图上云 | | **视图数据迁移到表** | 将视图结果导入到目标表 | 物化视图数据、报表表 | | **物化视图** | 物化视图定义与刷新 | 汇总层迁移 | | **例程** | 存储过程、函数 | 业务逻辑迁移 | | **所有表** | 按 Schema 批量建表任务 | 整库表结构+数据 | | **视图数据迁移到 SQLite** | 导出为本地 SQLite 文件 | 归档、离线分析 | ### 冲突策略说明 - **报错**:目标已存在则任务失败,便于发现配置错误。 - **替换**:删除已存在对象后重新创建(谨慎使用)。 - **跳过**:已存在则跳过该对象,继续后续。 - **追加**:仅追加数据(适用于表),不重建结构。 - **清空后重导**:先 Truncate 再导入,适用于需要全量刷新的表。 ### 大表与进度 - 单表或「视图→表」在迁移前会执行 `COUNT(*)` 获取总行数(大表可能略慢)。 - 数据按批(如 5000 行/批)读取与写入,进度按「已迁移行数/总行数」更新并节流持久化。 - 详见 [迁移进度与监控](docs/迁移进度与监控.md)。 --- ## 🔧 开发指南 ### 后端技术栈 - **Python 3.12** · **Django 5.2** · **Django REST framework** · **SimpleUI**(可选管理后台) - **cx_Oracle** · **psycopg2** · **JWT 认证** ### 前端技术栈 - **Vue 3** · **TypeScript** · **Vite** · **Bootstrap 5** · **Vue Router** · **Pinia**(可选) ### 前端常用命令 ```bash cd frontend pnpm install # 安装依赖(推荐使用 pnpm) pnpm dev # 开发模式 pnpm build # 生产构建 ``` ### 为什么使用 pnpm? pnpm 在安装速度、磁盘占用与依赖一致性方面表现更好,本项目推荐使用 pnpm 管理前端依赖。 ### 为什么使用 Django? Django 提供成熟的 ORM、Admin、安全与扩展生态,适合快速构建稳定、可维护的 REST API 与迁移调度服务。 --- ## 📚 文档与支持 | 文档 | 说明 | |------|------| | [文档索引](docs/文档索引.md) | 所有说明文档的集中索引与阅读建议 | | [迁移进度与监控](docs/迁移进度与监控.md) | 进度计算方式、大表优化、接口说明与注意事项 | | [路由与前后端配置](docs/路由与前后端配置.md) | 前后端路由、API 端点、开发/生产部署与常见问题 | | [颜色系统使用说明](docs/颜色系统使用说明.md) | 主题与 CSS 变量、Bootstrap 集成、pnpm/uv 使用与启动流程 | | [需求与版本说明](docs/需求与版本说明.md) | 项目背景、适用 Oracle/PolarDB 版本及技术栈 | | 本 README | 产品概述、功能说明、快速开始与开发指南 | 更多说明可查看项目内 `docs/` 目录及代码注释。 --- ## 📄 许可证 © 2025 Oracle 到 PolarDB 迁移工具 · 版权所有 ---

Logo

Oracle → PolarDB PostgreSQL 企业级迁移平台