OGG实现Oracle19C到postgreSQL14的实时同步
📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
- 前言
- 📣 1.架构设计
- 📣 2.OGG下载
- 📣 3.安装OGG for Oracle
- ✨ 3.1 解压授权
- ✨ 3.2. 静默安装
- ✨ 3.3 环境变量
- ✨ 3.4 创建目录
- 📣 4.安装OGG for postgreSQL
- ✨ 4.1 解压及授权
- ✨ 4.2 修改环境变量
- ✨ 4.3 创建目录
- 📣 5.Oracle配置
- ✨ 5.1 开归档
- ✨ 5.2 打开附加日志
- 📣 6.MGR管理进程
- 📣 7.抽取进程extract
- 📣 8.传送进程pump
- 📣 9.目标端配置
- 📣 10.测试同步
前言
本文详细介绍了我的OGG旅程、从OGG实现Oracle19C到postgreSQL14的实时同步📣 1.架构设计
主机名 | IP | 操作系统 | 内存/空间 | 角色 | 说明 |
---|---|---|---|---|---|
ora19c | 172.18.12.90 | centos7.8 | 2c/18G 400G | 源端 | Oracle 19.3 |
postgres14 | 172.18.12.50 | centos7.8 | 2c/18G 400G | 目标库 | postgreSQL 14 |
📣 2.OGG下载
1.官方下载
https://www.oracle.com/middleware/technologies/goldengate-downloads.html
1.OGG for oracle安装包
213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
2.OGG for PostgreSQL安装包
213000_ggs_Linux_x64_PostgreSQL_64bit.zip
📣 3.安装OGG for Oracle
✨ 3.1 解压授权
mkdir /ogg
mkdir /soft
chown oracle.oinstall /ogg
unzip /opt/213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip -d /soft
cd /soft/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/
chown -R oracle.oinstall *
✨ 3.2. 静默安装
#使用oracle用户安装ogg
[root@jemora19c ~]# su - oracle
[oracle@jemora19c ~]$ cd /soft/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/
./runInstaller -silent
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v21_1_0
INSTALL_OPTION=ORA19c
SOFTWARE_LOCATION=/ogg
START_MANAGER=true
MANAGER_PORT=7809
DATABASE_LOCATION=/opt/oracle/product/19c/dbhome_1
INVENTORY_LOCATION=/opt/oracle/oraInventory
UNIX_GROUP_NAME=oinstall
✨ 3.3 环境变量
cat >> /home/oracle/.bash_profile <<"EOF"
export OGG_HOME=/ogg
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:$LD_LIBRARYPATH
alias ggsci='cd $OGG_HOME;ggsci'
EOFsource /home/oracle/.bash_profile[oracle@jemora19c ~]$ ggsciOracle GoldenGate Command Interpreter for Oracle
Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047_FBO
Oracle Linux 7, x64, 64bit (optimized), Oracle Database 21c and lower supported versions on Jul 29 2021 03:59:23
Operating system character set identified as UTF-8.Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.GGSCI (jemora19c) 1> info allProgram Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
✨ 3.4 创建目录
oracle@jemora19c ~]$ ggsci
GGSCI (jemora19c) 2> create subdirs
📣 4.安装OGG for postgreSQL
✨ 4.1 解压及授权
mkdir /ogg
unzip /opt/213000_ggs_Linux_x64_PostgreSQL_64bit.zip
tar vxf ggs_Linux_x64_PostgreSQL_64bit.tar -C /ogg
chown -R postgres.postgres /ogg
✨ 4.2 修改环境变量
cat >> /var/lib/pgsql/.bash_profile <<"EOF"
export OGG_HOME=/ogg
export PATH=$OGG_HOME:$PATH
export LD_LIBRARY_PATH=$OGG_HOME/lib:$LD_LIBRARY_PATH
alias ggsci='cd $GG_HOME;ggsci'
EOFsource /var/lib/pgsql/.bash_profile
✨ 4.3 创建目录
GGSCI (postgres14) 2> create subdirs
📣 5.Oracle配置
✨ 5.1 开归档
– mount阶段
alter database archivelog;
archive log list;
✨ 5.2 打开附加日志
lter system set enable_goldengate_replication=true;
alter database add supplemental log data;
SELECT supplemental_log_data_min min,
supplemental_log_data_pk pk,
supplemental_log_data_ui ui,
supplemental_log_data_fk fk,
supplemental_log_data_all allc
FROM v$database;
📣 6.MGR管理进程
cat > /ogg/dirprm/mgr.prm << “EOF”
PORT 7809
DYNAMICPORTLIST 7810-7830
AUTOSTART EXTRACT *
AUTORESTART EXTRACT , RETRIES 100, WAITMINUTES 2, RESETMINUTES 10
PURGEOLDEXTRACTS ./dirdat/, usecheckpoints, minkeepdays 30
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
EOF
📣 7.抽取进程extract
cat > /ogg/dirprm/ext_ora.prm << “EOF”
extract ext_ora
setenv (ORACLE_SID=oradb)
setenv (ORACLE_HOME=/opt/oracle/product/19c/dbhome_1)
setenv (NLS_LANG=“AMERICAN_AMERICA.AL32UTF8”)
userid PGOGG@oradb,password oracle
exttrail /ogg/dirdat/ex
table PGOGG.test01;
table STEST.*;
EOF
– 添加进程
add extract ext_ora, tranlog, begin now
add exttrail /ogg/dirdat/ex, extract ext_ora
📣 8.传送进程pump
cat > /ogg/dirprm/pump_ora.prm << “EOF”
extract pump_ora
setenv (ORACLE_SID=oradb)
setenv (ORACLE_HOME=/opt/oracle/product/19c/dbhome_1)
setenv (NLS_LANG=“AMERICAN_AMERICA.AL32UTF8”)
rmthost 172.18.12.50,mgrport 7809,compress
rmttrail /ogg/dirdat/ex
table PGOGG.test01;
table STEST.*;
EOF
📣 9.目标端配置
cat > /ogg/dirprm/rep_pg.prm <<“EOF”
replicat rep_pg
SOURCEDEFS ./dirdef/defgen_PG.prm
SETENV(PGCLIENTENCODING = “UTF8” )
SETENV(ODBCINI=“/ogg/odbc.ini” )
SETENV(NLS_LANG=“AMERICAN_AMERICA.AL32UTF8”)
TARGETDB PGDSN, userid stest, password post
DISCARDFILE ./discard/rep_pg.dsc, append
–ap lhrogg.test01, target lhrogg.test01;
map stest., target stest.;
EOF
📣 10.测试同步
-- oracle查询
col table_name format a30
SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='STEST' order by num_rows desc ;SYS@oradb> delete from STEST.LOGON;
2383 rows deleted.SYS@oradb> select count(*) from STEST.LOGON;COUNT(*)
----------0jemdb=# select count(*) from stest.LOGON;count
-------0
(1 row)-- 在pg中查询数据量
select nspname AS schemaname,relname,reltuples::numeric as rowcount,pg_size_pretty (pg_total_relation_size ( '"' || nspname || '"."' || relname || '"' )) AS SIZE
from pg_class C LEFT JOIN pg_namespace N ON ( N.oid = C.relnamespace )
where nspname NOT IN ( 'pg_catalog', 'information_schema' ) AND relkind = 'r'
ORDER by reltuples DESC
LIMIT 20;schemaname | relname | rowcount | size
------------+----------------------+----------+------------stest | inventories | 899441 | 433 MBstest | order_items | 7341 | 1072 kBstest | addresses | 1500 | 264 kBstest | card_details | 1500 | 264 kBstest | orders | 1430 | 376 kBstest | product_information | 1000 | 400 kBstest | warehouses | 1000 | 192 kBstest | customers | 1000 | 440 kBstest | product_descriptions | 1000 | 288 kBstest | logon | 0 | 16 kBstest | orderentry_metadata | -1 | 8192 bytespgogg | test01 | -1 | 8192 bytesstest | checkpointtab | -1 | 32 kBstest | checkpointtab_lox | -1 | 16 kB
(14 rows)GGSCI (postgres14) 2> stats rep_pg,table stest.logon, totalSending STATS request to Replicat group REP_PG ...Start of statistics at 2023-12-02 00:27:37.Replicating from STEST.LOGON to stest.logon:*** Total statistics since 2023-12-02 00:24:44 ***Total inserts 0.00Total updates 0.00Total deletes 2383.00Total upserts 0.00Total discards 0.00Total operations 2383.00
相关文章:

OGG实现Oracle19C到postgreSQL14的实时同步
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

windows 你的电脑不能投影到其他屏幕,请尝试重新安装驱动程序
注意 千万不要去下载什么驱动精灵,太垃圾不好用还一堆附带的软件。按以下步骤进行解决: 解决方法 可能是显卡驱动的问题,我的笔记本按照如下步骤重启一下驱动后解决了,步骤如下: 右键点击桌面的开始菜单,选择”设备…...

2023-简单点-树莓派中的硬件通讯
树莓派中的通讯方式 串口通讯什么是串口通讯?串口通讯的特点 tips并行通讯?基于网络的通讯?socket通讯 串口通讯 什么是串口通讯? 串行通信每次传输一个位元数据,并在连续进行单次过程的基础上进行通信。根据数据的传送方向&am…...

游戏反Frida注入检测方案
在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用内存修改器,除此之外,还有一种门槛相对更高、也更难检测的「注入挂」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险…...

观海微电子---AF、AG、AR 的差别和作用
一、名称解释及原理 1.AF ---- Anti-fingerprint,中文为抗指纹。一般 SiO2AF 材料(DON,M4、道康宁 AF 材料),一般采用真空蒸发镀膜法。 原理:AF 防污防指纹玻璃是根据荷叶原理,在玻璃外表面涂制…...

颠覆性语音识别:单词级时间戳和说话人分离
vbenjs/vue-vben-admin[1] Stars: 19.7k License: MIT Vue Vben Admin 是一个免费开源的中后台模板,使用最新的 vue3、vite4 和 TypeScript 等主流技术进行开发。该项目提供了现成的中后台前端解决方案,并可用于学习参考。 使用先进的前端技术如 Vue3/…...

吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合
产品:4块55寸OLED透明拼接屏 项目地点:南宁 项目时间:2023年11月 应用场景:吉利展厅 在2023年11月的南宁,吉利展厅以其独特的展示设计吸引了众多参观者的目光。其中最引人注目的亮点是展厅中央一个由四块55寸OLED透…...

qnx修改tcp和udp缓冲区默认大小
拷贝/home/test/qnx/qos223/target/qnx7/aarch64le/sbin/sysctl进系统中 https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/s/sysctl.html kern.sbmax 默认262144,这个限制住了发送、接收缓冲器大小 ./sysctl -w kern.sbmax10000…...

vscode的eslint检查代码格式不严谨的快速修复
问题: 原因:复制的代码,esLint检查代码格式不正确。或者写的代码位置不严谨,总是提示 解决 设置在Ctrl S保存时自动格式化代码 1、vscode设置 2、点击右上角,切换json模式 3、添加设置 "editor.codeActionsOn…...

OpenAI GPT-4 Turbo发布:开创AI新时代
🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. GPT-4 Turbo的突破1.1上下文长度和控制手段的加强:1.2多模态支持:…...
基于c 实现 FIFO
功能: 1、读和写长度不限制 2、数据操作 和 指针操作分开(如先操作数据,再操作指针) 适用场景: 单向通信模式,一方写、一方读,可用于任务间单向通信(无需锁) 如&…...
tortoisegit 报错:server refused to start a shell/command
原因:阿里云的云效不支持TortoiseGit 使用 TortoiseGitPlink,请修改为 OpenSSH。 官网修改教程:TortoiseGit 工具相关报错如何处理? 基本流程: 选择设置(Settings),选择通用&#x…...
电商平台API接口指南,京东商品详情接口,京东详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5实时详情页数据展示
京东商品详情API接口是京东开放平台提供的一种API接口,通过该接口,可以获取到京东商品的详细信息,如商品名称、价格、图片和描述等信息。 使用方法如下: 注册并获取API密钥:首先需要在京东开放平台上注册并获取API密…...

什么是迁移学习
1 迁移学习概述 迁移学习(Transfer Learning)是机器学习中的一种方法,它允许模型将从一个任务中学到的知识应用到另一个相关的任务中。这种方法在数据稀缺的情况下尤为有用,因为它减少了对大量标记数据的需求。迁移学习已成为深度…...

万宾科技水环境综合治理监测系统的融合与应用
随着社会经济的快速发展,我国的水环境污染问题日益凸显,这不仅对生态环境造成了严重破坏,也严重威胁到人民群众的健康和生活质量。为了解决这一问题,城市生命线与水环境综合治理监测系统应运而生,二者的结合将为水环境…...

【EI会议征稿】第三届图像,信号处理与模式识别国际学术会议(ISPP 2024)
第三届图像,信号处理与模式识别国际学术会议(ISPP 2024) 2024 3rd International Conference on Image, Signal Processing and Pattern Recognition(ISPP 2024) 第三届图像,信号处理与模式识别国际学术会议…...

继阿里云、滴滴、语雀后,腾讯视频也出现重大系统故障
昨晚,许多网友报告称腾讯视频出现了网络故障,具体表现为首页无法加载内容、VIP 用户无法观看会员视频等问题。 针对这一问题,腾讯视频回应称:目前腾讯视频遇到了暂时的技术问题,正在紧急修复中,各项功能正在…...
kotlin中sealed语句的使用
sealed 密封类是 Kotlin 中的一种特殊类别,它的主要作用是限制类的继承结构。密封类用于表示受限的类继承结构,即一个值只能有有限几种类型,而不能有任意类型。密封类通常用于表示一种有限集合的类型。 下面是密封类的主要特性和作用&#x…...

软信天成:数据泄露日趋严重 “资产”保护何去何从
随着数据应用的逐渐深入,越来越多的企业意识到:数据作为信息的载体,可以成为企业知识产权、收益流和具备竞争优势的基础资产。然而,当包含大量敏感信息的数据被视作资产时,亦将直面信息被“窃取”、“泄露”和“滥用”…...

GitHub打不开的解决方案(百试不爽法)
一、githup首先打开以下网址,搜索 DNS Resource Records 找到对应的IP地址信息 1、点击访问 GitHub.com - GitHub: Lets build from here GitHubGitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over fo…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...