拷贝配置文件,注意路径,后面执行 sh 的时候会找 config/ora2pg.conf。
cp
ORACLE 相关参数:
ORACLE_HOME /u01/app/oracle/product/11.2.0/
ORACLE_DSN dbi:Oracle:host=oracleIP;sid=orcl;port=1521
ORACLE_USER customerchat // 这里用的 oracle 普通用户和密码
ORACLE_PWD XXXXX
SCHEMA customerchat // 一般和用户名一样
openGauss 相关参数:
PG_DSN dbi:Pg:dbname=mydb;host=localhost;port=5432
PG_USER tuser
PG_PWD 自己定义的密码
工具自身参数:
DATA_LIMIT 默认是 10000,如果 oracle 服务器内存较小,比如 4G 以下,可以修改为 2500 或 5000, 否则可能会报内存不足。
更多更详细的配置项说明,可查看 ora2pg.darold.net 官网.
测试一下配置:
执行如下命令会返回连接的 Oracle 版本号。
ora2pg -t SHOW_VERSION -c config/ora2pg.conf
在这里插入图片描述
测试迁移
修改迁移工具 oramig 目录下 export_schema.sh 中导出类型 EXPORT_TYPE 和 SOURCE_TYPE,本次迁移导出 TABLE。
导出
在 oramig 目录下执行
sh export_schema.sh
在这里插入图片描述
执行完成后 在 schema/tables 生成 table.sql ,里面是建表脚本。
在这里插入图片描述
reports / 目录下生成的 report 报告 report.html
在这里插入图片描述
导入
还是在 oramig 目录下执行导入
为了使用 openGauss 命令行工具 gsql,需要将数据库的 bin 和 lib 加在操作系统的环境变量 PATH 和 LD_LIBRARY_PATH 中。可以通过直接 root 用户执行 gsql 测试。
3. 将 import_all.sh 里的 psql 修改为 gsql。
执行导入脚本,表示使用用户 tuser 登录 openGauss 中 mydb 的数据库,ip 和端口,-f 选项表示跳过用户和数据库是否需要创建的检查。
sh import_all.sh -d mydb -o tuser -h openGaussIP -p 5432 -f
在这里插入图片描述
执行成功。
可以看到表和数据都已经迁移过来。
在这里插入图片描述
Ora2Pg 不足
Ora2Pg 对 PL/SQL 和 PL/PGSQL 的语法转换处理采用正则表达式和文本替换的方式,先天设计不足,很难覆盖所有的语法,目前仅支持部分转换。因此,Ora2Pg 可以满足 SQL 简单的应用迁移,对于复杂的语法,并不能完全保证转换的正确性,需要对生成的 SQL 语句进行核对,必要时需要人工修正。
FAQ
[root@oraclehost ~]# openssl version -a
OpenSSL 1.0.2k-fips 26 Jan 2017
yum remove openssl
获取新的版本并安装
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
tar -zxvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c
./config --prefix=/usr/local/openssl #如果此步骤报错,需要安装perl以及gcc包
make && make install
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo “/usr/local/openssl/lib” >> /etc/ld.so.conf
ldconfig -v
sudo yum install postgresql-devel
再重新执行 perl -MCPAN -e ‘install DBD::Pg’