版本:
windows server 2012 R2
oracle 12
postgresql-9
说明:
目前该操作是在安装了oracle的机子上做的。官方文档查看相关操作命令Ora2Pg : Migrates Oracle to PostgreSQL (darold.net)
1、安装perl
Strawberry Perl下载地址: Strawberry Perl for Windows - Releases
选择一个合适的版本,下载下来之后只需要选择好安装路径一直下一步就好了
2、下载Ora2Pg
可以直接在github选择一个版本下载,然后解压到指定目录就可以,下载地址 Releases · darold/ora2pg (github.com)
3、配置Perl
a、cmd定位到解压后的Ora2Pg目录中,执行下面的命令使用Perl解析Ora2Pg
perl Makefile.PL
b、上面的命令执行完成后,会有提示,按照提示执行下面的命令即可
执行 dmake && dmake install
如果不行就执行 gmake.exe && gmake.exe install
4、修改Ora2Pg的配置文件ora2pg.conf.dist(安装目录下)
# 设置Oracle主目录:Oracle的安装目录(我的是自动配制好了,进行完第3步后有的)
ORACLE_HOME D:\oracle\product\12.1.0\dbhome_1# 设置Oracle数据库连接(数据源、用户、密码)连接远程的,需要配置远程数据库ip和端口
ORACLE_DSN dbi:Oracle:host=127.0.0.1;sid=XE;port=1521
ORACLE_USER TEST
ORACLE_PWD testtest# 需要迁移什么内容,就配置什么内容
TYPE TABLE,VIEW,SEQUENCE,TRIGGER,FUNCTION,PROCEDURE# 导出SQL目录
OUTPUT D:\ora2pg_output# 这里配置你自己的Oracle数据库 不配置的情况下默认导出所有表
SCHEMA XXXX
5、导出表结构语句
注意:如果type设置为多个时,output不能写具体的是哪个目录,因为导出多个type时,是以type_output.sql命名文件的,建议TYPE 一开始只用TABLE。
ora2pg -c D:\ora2pg-24.3\ora2pg.conf.dist
也可以执行
ora2pg -c D:\ora2pg-24.3\ora2pg.conf.dist -d
两者执行的效果图如下:
6、库对库迁移
--- 先配制一下PG的库地址(ora2pg.conf.dist文件)
PG_DSN dbi:Pg:dbname=cvs;host=XXX.XX.XX.XX;port=5432
PG_USER postgres
PG_PWD 123456--- 如果要改导出的字段名
REPLACE_COLS table_name(ORIG_COLNAME1:NEW_COLNAME1)
--- 退出到CMD下执行导出命令
ora2pg -d -t copy -c D:\ora2pg-24.3\ora2pg.conf.dist -P 9 -L 100000 -j 12
执行导出时如果服务器内存不足,可能会服内存溢出;可以尝试修改这个参数-L 100000改成100试试
ps:ora2pg命令解析
-d
:表示调试模式,会输出更多的日志信息,有助于诊断问题。-t copy
:指定迁移时使用COPY
命令来插入数据,这是PostgreSQL中一种高效的数据导入方式。-c <配置文件>
:指定ora2pg
的配置文件路径,用于定义迁移过程中的各种设置,如数据库连接信息、类型转换规则等。-P <版本>
:指定目标PostgreSQL数据库的版本号,以便ora2pg
能够生成与该版本兼容的SQL语句。-L <版本>
:参数用于指定迁移过程中每个批次的记录数限制。-j <数量>
:指定并行迁移的线程数。在支持多线程的系统中,增加这个值可以加快迁移速度,但也会增加系统的负载。
7、导出数据文件
导出数据文件的话,第6步不配制,直接修改ora2pg.conf.dist文件中TYPE为 INSERT
执行第5步的命令:ora2pg -c D:\ora2pg-24.3\ora2pg.conf.dist -d