Oracle数据库迁移到AntDB和PostgreSQL

本文档详细介绍了如何将Oracle数据库中的对象和数据迁移到PostgreSQL和AntDB,包括登录Oracle、统计对象、导出导入对象、存储过程和函数迁移,以及数据迁移的步骤。
摘要由CSDN通过智能技术生成

很多时候我们会涉及到数据库备份与迁移,本章节将介绍Oracle数据库如何迁移至PostgreSQL和AntDB数据库。为了分享给有同样需求的小伙伴,也为了自己之后方便查阅,下面将主要介绍以命令的方式迁移(原文中部分脚本来自一个同事前辈的笔记)。

一、登录oracle数据库

sqlplus 登录:

sqlplus username/'password'@10.19.82.196/testdb

二、Oracle侧对象统计:

select OBJECT_TYPE,count(*) from user_objects group by OBJECT_TYPE order by 2;

OBJECT_TYPE COUNT(*)


TYPE 3
TRIGGER 8
FUNCTION 14
PROCEDURE 24
LOB 152
VIEW 167
SEQUENCE 173
TABLE 335
INDEX 338

查看表大小:

select sum(b.bytes)/1024/1024/1024 as table_size
from user_tables a ,user_segments b
where 1=1
and a.table_name=b.segment_name;

TABLE_SIZE:
.11730957

三、导出表、分区、序列和视图对象

cat > /home/oracle/mvtemp/conf/test_ddl.conf  << EOF
ORACLE_HOME /data/oracle/db 
ORACLE_DSN  dbi:Oracle:host=10.19.82.196;service_name=testdb
ORACLE_USER testdb
ORACLE_PWD  testdb123  
SCHEMA  testdb
TYPE TABLE,PARTITION,SEQUENCE,VIEW
USER_GRANTS 1
DISABLE_SEQUENCE 1
INDEX_RENAMING 0
STOP_ON_ERROR 0
DATA_TYPE NUMBER,DATE:oracle.date
EOF

执行 ora2pg 可以通过 ora2pg --help 获取命令行帮助信息。

// 导出表、分区、序列和视图对象
nohup ora2pg -c /home/oracle/mvtemp/conf/test_ddl.conf  -o test_ddl.sql -d  > /home/oracle/mvtemp/test_ddl.log 2>&1 & 

检查对象:

grep "CREATE TABLE"  TABLE_test_ddl.sql|wc -l
grep "PARTITION OF"  PARTITION_test_ddl.sql |wc -l
grep "CREATE SEQUENCE" SEQUENCE_test_ddl.sql |wc -l
grep "CREATE OR REPLACE VIEW " VIEW_test_ddl.sql |wc -l

四、导入对象到PostgreSQL或AntDB

在部署PostgreSQL或AntDB数据库的主机上执行如下命令。

psql -p 8432 -d testdb -U testdb -f /home/testdb /ora2pg/TABLE_test_ddl.sql
psql -p 8432 -d testdb -U testdb -f /home/testdb /ora2pg/PARTITION_test_ddl.sql
psql -p 8432 -d testdb -U testdb -f /home/testdb /ora2pg/SEQUENCE_test_ddl.sql

五、导出导入存储过程和函数

导出Oracle原始的存储过程和函数定义,在PostgreSQL或AntDB中直接创建。

#!/bin/bash 
# https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm#BGBJBFGE
# https://stackoverflow.com/questions/22018804/oracle-sql-developer-4-0-how-to-remove-double-quotes-in-scripts
# https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9534496000346133031
# https://blog.csdn.net/itmyhome1990/article/details/50380718

log_print()
{
   
    echo "--"`date "
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值