Oracle OGG 单向DML同步
ccwgpt 2025-01-05 16:12 51 浏览 0 评论
介绍
本文介绍OGG单向dml复制,先从数据初始化开始,然后配置实时同步!数据库和OGG的安装过程略!
初始化数据有很多方法,这里介绍用ogg来初始化,所以创建了T1表!
实时同步使用源端EXTRACT进程捕捉增量数据,存到源端trail文件中,然后使用源端pump进程读取EXTRACT的trail文件并投递到目标端的replicat进程的trail文件中。
服务器 | 操作系统版本 | 数据库版本 | OGG版本 | |
源端 | 192.168.141.100 | CentOS6.8 | 11.2.0.4 | 12.2.0.1 |
目标端 | 192.168.141.105 | CentOS6.8 | 11.2.0.4 | 12.2.0.1 |
数据库配置
1.源端和目标端数据库需要运行在归档模式,开启最小数据库附加日志,开启force_logging(可选)
alter database archivelog; (需要数据库在mount状态执行)
alter database force logging;
alter database add supplemental log data;
注意:
需要配置参数ENABLE_GOLDENGATE_REPLICATION否则后面会遇到报错:
ERROR OGG-02091 Operation not supported because enable_goldengate_replication is not set to true.
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
2.创建OGG用户和单独表空间(源端和目标端都需要)
create tablespace ts_ogg datafile '/u01/app/oracle/oradata/tdb01/ts_ogg01.dbf' size 200M AUTOEXTEND on extent management local segment space management auto;
create user ggusr identified by ggusr default tablespace ts_ogg;
为了方便直接给予DBA权限:
grant resource,connect,dba to ggusr;
3.测试用户和表准备(源端目标端都需要)
这里直接使用scott用户来做测试:
alter user scott identified by scott account unlock;
grant select_catalog_role to scott;
源端:使用 sys用户在scott下面创建表,因为DBA_OBJECTS表scott无法访问
create table scott.t1 as select * FROM DBA_OBJECTS;
ALTER TABLE scott.t1 ADD constraint pk_t1 primary key(object_id);
目标端:只需要创建表结构
create table scott.t1 as select * FROM DBA_OBJECTS where 1=2;
ALTER TABLE scott.t1 ADD constraint pk_t1 primary key(object_id);
4.配置TNS
源端:
目标端:
OGG MGR进程配置
在源端和目标端都要配置MGR管理进程
GGSCI (oracle01) 1>EDIT PARAMS mgr
PORT 7809 ---手动编辑输入
GGSCI (oracle01) 3> view params mgr -查看
PORT 7809
其他命令:
-- info all 查看进程信息
-- start mgr 启动mgr进程
-- info mgr 查看mgr进程信息
-- view report mgr 查看mgr的报告
配置完成后,将源端和目标端的mgr进程都启动
start mgr
OGG数据初始化
在做实时同步之前,需要将源端和目标端的表(t1)中的数据进行同步,同步的方式有很多(数据泵,dblink,ogg等),这里介绍通过ogg来同步表数据,直接从源库同步数据到目标库(direct load),不生成trail文件。
1.在源端添加 extract 进程
GGSCI (oracle01) 1> ADD EXTRACT initab,SOURCEISTABLE
查看相关信息:
info initab,task
info initab,showch
编辑参数:
GGSCI (oracle01) 4> EDIT PARAMS initab
extract initab
setenv (ORACLE_SID=tdb01)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ggusr,password ggusr
rmthost 192.168.141.105,mgrport 7809
rmttask replicat,group scott1 --- scott1 为目标端replicat进程名称(红色字体使用时需要去掉)
table scott.t1;
GGSCI (oracle01) 6> view params initab -----查看参数
2.在目标端添加replicat进程
GGSCI (oracle02) 2> add replicat scott1,specialrun ---specialrun 只运行一次
编辑参数rinig1 --名字可以随便取,但是必须和上面同意
GGSCI (oracle02) 3> EDIT PARAMS scott1
replicat scott1
setenv (ORACLE_SID=tdb02)
setenv (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
assumetargetdefs
userid ggusr,password ggusr
discardfile ./dirrpt/rinig1.dsc,purge
map scott.*,target scott.*;
GGSCI (oracle02) 4> view params scott1 ---查看参数
3.开始初始化数据
源端:
启动extract进程 并查看日志输出
GGSCI (oracle01) 9>start extract initab
GGSCI (oracle01) 10>info *,task --查看运行状态
GGSCI (oracle01) 11>view report initab ---查看输出信息,检查是否有报错
没有报错最后会出现:
注意:
OGG-01201 Error reported by MGR : Access denied.
如果出现这个报错,说明目标端mgr拒绝了连接,需要在目标端添加mgr的参数文件中添加
ACCESSRULE, PROG *, IPADDR *, ALLOW
查询两边表scott.t1表的数据量是否相同:
select count(*) from scott.t1; ---86953条(我这里是)
至此,数据初始化完成!
DML实时同步
源端EXTRACT进程捕捉增量数据,存到trail文件中,然后使用pump进程读取EXTRACT的trail并投递到目标端的replicat进程!!!
1.配置OGG实时同步功能(源端操作)
####使用ogg用户ggusr登录
GGSCI (oracle01) 1> dblogin userid ggusr, password ggusr
Successfully logged into database.
####在源端配置将需要传输的用户的表的附加日志:
GGSCI (oracle01 as ggusr@tdb01) 2>info trandata scott.* ---查看表附加日志信息
Logging of supplemental redo log data is disabled for table SCOTT.BONUS.
Logging of supplemental redo log data is disabled for table SCOTT.DEPT.
Logging of supplemental redo log data is disabled for table SCOTT.EMP.
Logging of supplemental redo log data is disabled for table SCOTT.SALGRADE.
Logging of supplemental redo log data is disabled for table SCOTT.T1.
####添加表附加日志信息
GGSCI (oracle01 as ggusr@tdb01) 3> add trandata scott.*
2.源端配置EXTRACT进程并添加trail文件,进程名字不能超过8个字符
GGSCI (oracle01) 2>ADD EXTRACT scott_st,tranlog,begin now
编辑参数:
GGSCI (oracle01) 3>EDIT PARAMS scott_st
extract scott_st
setenv (ORACLE_SID=tdb01)
setenv (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
userid ggusr,password ggusr
exttrail ./dirdat/st
table scott.*;
GGSCI (oracle01) 4>view PARAMS scott_st
添加 exttrail文件,文件前缀不能超过2个字:
GGSCI (oracle01) 5>add exttrail ./dirdat/st,extract scott_st,megabytes 100
启动extract进程scott_st:
GGSCI (oracle01) 6>start extract scott_st
3.源端添加并启动pump进程(pump进程也是一种extract进程)
GGSCI (oracle01) 7>EDIT PARAMS pora_st
extract pora_st
setenv (ORACLE_SID=tdb01)
setenv (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
passthru
rmthost 192.168.141.105,mgrport 7809
rmttrail ./dirdat/pa
table scott.*;
添加pump进程,并使用前面extract捕获的日志
GGSCI (oracle01) 8>add extract pora_st,exttrailsource ./dirdat/st
添加输出到目标端的trail文件名称,和参数中一致
GGSCI (oracle01) 9>add rmttrail ./dirdat/pa,extract pora_st,megabytes 100
启动extract进程pora_st:
start extract pora_st
4.目标端配置replicat进程
####在目标端添加检查表,
GGSCI (oracle02) 1> EDIT PARAMS ./GLOBALS
checkpointtable ggusr.rep_demo_ckpt
ggsci 登录到ggusr用户
GGSCI (oracle02) 2>dblogin userid ggusr, password ggusr
GGSCI (oracle02 as ggusr@tdb02) 3>add checkpointtable ggusr.rep_demo_ckpt
此时,在oracle中登录ggusr后,可以看到该用户下多出2张表
REP_DEMO_CKPT TABLE 和 REP_DEMO_CKPT_LOX
添加并启动replicat进程
GGSCI (oracle02) 1>EDIT PARAMS rora_st
replicat rora_st
setenv (ORACLE_SID=tdb02)
setenv (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
userid ggusr,password ggusr
handlecollisions
assumetargetdefs
discardfile ./dirrpt/rora_st.dsc,purge
map scott.*,target scott.*;
添加replicat进程,配置trail
GGSCI (oracle02) 2>add replicat rora_st,exttrail ./dirdat/pa
启动extract进程!!(前面已经启动mgr)
GGSCI (oracle02) 3>start replicat rora_st
其他命令:
stats rora_st -----查看进程的捕获信息!!!!
info *.task
测试
同步测试:
select max(object_id) from t1; --在源端和目标端都查询T1表中最大的object_id号
源端做insert操作并提交:
insert into t1(object_id,object_name) values('88606','ogg_test');
commit;
目标端查询:
select object_id,object_name from t1 where object_id='88606';
相关推荐
- 自己动手写Android数据库框架_android开发数据库搭建
-
http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...
- 谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic
-
智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...
- 工信部:着力推动大模型算法、框架等基础性原创性的技术突破
-
工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...
- 乒乓反复纠结“框架不稳定”的三个小误区
-
很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...
- 前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈
-
IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...
- 三种必须掌握的嵌入式开发程序架构
-
前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...
- 怪不得别人3秒就知道软考案例怎么做能50+
-
软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...
- UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透
-
10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...
- 勒索软件转向云原生架构,直指备份基础设施
-
勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...
- ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来
-
在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...
- APP 制作界面设计教程:一步到位_app界面设计模板一套
-
想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...
- MCP 的工作原理:关键组件_mcp部件
-
以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...
- 软件架构_软件架构师工资一般多少
-
软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...
- 不知不觉将手机字体调大!老花眼是因为“老了吗”?
-
现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...
- 8000通用汉字学习系列讲座(第046讲)
-
[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)