【DB宝63】项目分享:使用ora2pg迁移Oracle19c到PG13并使用OGG配置实时同步
Tags: MySQLOGGora2pgOraclePG监控迁移
一、项目目标
1、使用ora2pg迁移Oracle 19.3数据到PG13.2
- 使用swingbench压测生成oracle数据
- 部署ora2pg工具,实现Oracle数据迁移到PG数据库
2、配置OGG实时同步并实现告警
- 部署OGG 19.1,配置实时同步
- 配置OGG director的监控告警功能
- 用swingbench压测生成批量事务,测试OGG实时同步功能
二、环境配置
2.1、环境规划
DG环境规划:
项目 | Oracle源库 | PG目标库 |
---|---|---|
db 类型 | 单实例 | 单实例 |
db version | 19.3.0.0.0 | 13.2 |
OS版本 | CentOS7.6 64位 | CentOS7.6 64位 |
OS hostname | lhrora19c | lhrpg13 |
IP地址 | 192.168.68.66 | 192.168.68.67 |
dbname | lhrsdb | lhrdb |
监听端口 | 1521 | 5432 |
映射的主机端口 | 1528 | 25432 |
SOFT_HOME | /opt/oracle/product/19c/dbhome_1 | /pg13/pg13 |
安装用户 | oracle | pg13 |
同步用户 | SOE | soe |
软件安装:
主机 | 需要的软件 |
---|---|
源端(192.168.68.66) | Oracle 19c database、swingbench、ogg软件 |
目标端(192.168.68.67) | PG 13.2、ora2pg、ogg软件 |
2.2、申请主机环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -- 创建本次的网络 docker network create --subnet=192.168.68.0/16 mhalhr docker network inspect mhalhr -- 创建Oracle主机,已安装Oracle 19c数据库 docker rm -f lhrora19c docker run -itd -h lhrora19c --name lhrora19c \ -p 11521:1521 -p 15500:5500 -p 15501:5501 -p 13389:3389 \ --network mhalhr --ip 192.168.68.66 \ --privileged=true \ lhrbest/oracle19clhr_rpm_db_12.2.0.3:2.0 init -- 创建PG主机,已安装PG 13数据库 docker rm -f lhrpg13 docker run -d --name lhrpg13 -h lhrpg13 \ --net=mhalhr --ip 192.168.68.67 \ -p 25432:5432 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ lhrbest/lhrpgall:1.0 /usr/sbin/init -- 添加网卡 docker network connect bridge lhrora19c docker network connect bridge lhrpg13 -- 重启主机 docker restart lhrora19c lhrpg13 -- 进入主机 docker exec -it lhrora19c bash docker exec -it lhrpg13 bash |
2.3、源端使用swingbench生成压测数据
2.3.1、安装swingbench
下载地址:
http://www.dominicgiles.com/downloads.html
每个swingbench的zip 包里都包含了Linux/Unix 和Windows 文件,所以只需要从官方下载之后,解压缩就可以了。解压之后bin目录下是linux的,winbin目录下是windows的。
需要jdk 1.8环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | wget https://github.com/domgiles/swingbench-public/releases/download/production/swingbenchlatest.zip unzip swingbenchlatest.zip -d /usr/local chown -R oracle.oinstall /usr/local/swingbench/ su - oracle cat >> ~/.bash_profile <<"EOF" export JAVA_HOME=/opt/oracle/product/19c/dbhome_1/jdk export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=/usr/local/swingbench/bin:$PATH EOF source ~/.bash_profile |
2.3.2、使用swingbench生成数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -- 启动数据库和监听 . oraenv lhrsdb lsnrctl start sqlplus / as sysdba startup alter user system identified by lhr; -- swingbench造数据 oewizard -s -create -c /usr/local/swingbench/wizardconfigs/oewizard.xml -create \ -version 2.0 -cs //192.168.68.66:1521/lhrsdb -dba "sys as sysdba" -dbap lhr -dt thin \ -ts users -u SOE -p lhr -allindexes -scale 0.001 -tc 16 -v -cl |
-s是静默,-create表示创建数据,-c是指定配置文件,就是oewizard.xml,-version指定swingbench版本,-cs表示数据库连接串,-dba表示连接到oracle数据库的用户,-dbap表示连接到oracle数据库的密码,-dt表示连接类型,-ts是指定表空间为users, -u表示压测的用户,-p表示压测用户的密码,-scale是数据量,1就是1G,0.001就是1Mb数据,-tc 是并发度,-allindexes是支持所有的索引类型,-v显示详细信息,-cl表示运行在字符模式。
数据量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | SYS@lhrsdb> col TABLE_NAME format a30 SYS@lhrsdb> SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='SOE' ; TABLE_NAME NUM_ROWS -------------------- ---------- CUSTOMERS 1000 ADDRESSES 1500 CARD_DETAILS 1500 WAREHOUSES 1000 ORDER_ITEMS 7168 ORDERS 1430 INVENTORIES 898934 PRODUCT_INFORMATION 1000 LOGON 2383 PRODUCT_DESCRIPTIONS 1000 ORDERENTRY_METADATA 0 11 rows selected. SYS@lhrsdb> select object_type,count(*) from dba_objects where owner='SOE' group by object_type; OBJECT_TYPE COUNT(*) ---------------------------------------------- ---------- INDEX 27 PACKAGE BODY 1 PACKAGE 1 SEQUENCE 5 TABLE 11 VIEW 2 6 rows selected. SYS@lhrsdb> select sum(bytes)/1024/1024 from dba_segments where owner='SOE'; SUM(BYTES)/1024/1024 -------------------- 279.25 |