文章内容仅供参考

环境

概况

源端

目标端

OS

Oracle Linux 7.4

kernal

4.1.12-94.3.9.el7uek.x86_64

数据库版本

Oracle19c

OGG版本

OGG 19.1.0 for Oracle

OGG安装目录

/u01/app/ogg/gg

OGG管理员名称(数据库)

C##GGADMIN

OGG目录及权限

oracle:oinstall

主机名

src.e.cc

dest.e.cc

ip地址

10.0.0.131

10.0.0.141

数据库名

CDB: SRC   PDB: P1

CDB: DEST   PDB: P1

要同步的表

P1.TOM.T1

P1.Jerry.T1

数据

源端

TOM用户T1表有五条数据, C1列是主键

目标端

Jerry用户T1表没有数据,只有表结构。

配置好OS和数据库

两端都要配:

环境变量:

vi .bash_profile
#添加
export OGG_HOME=/u01/app/ogg/gg
export PATH=$OGG_HOME:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME:$LD_LIBRARY_PATH

修改数据库:

alter database force logging;
alter database add supplemental log data;
alter system switch logfile;
alter system set enable_goldengate_replication=true;
alter system set undo_management=auto scope=spfile;
-- 重启数据库

创建ogg管理员用户(CDB)

create user C##GGADMIN identified by pwd account unlock container=all;

授予权限:

grant unlimited tablespace to C##GGADMIN container=all;grant create session, resource, unlimited tablespace to C##GGADMIN container=all;grant alter system, alter user, restricted session, create sequence to C##GGADMIN container=all;grant select any dictionary, select any transaction to C##GGADMIN container=all;grant select any table, lock any table, insert any table, update any table to C##GGADMIN container=all;grant create any table,alter any table,drop any table,flashback any table to C##GGADMIN container=all;grant execute on utl_file to C##GGADMIN container=all;grant dba to C##GGADMIN container=all;
begin
dbms_goldengate_auth.grant_admin_privilege(
grantee => 'C##GGADMIN',
privilege_type => '*',
grant_select_privileges => true,
do_grants => true,
grant_optional_privileges => '*',
container => 'all');
end;
/

-- privilege_type有三个值:capture, apply, *

源端可以指定为captrue

目标端可以指定为apply

嫌麻烦就直接*

源端

创建需要用到的目录:

mkdir -p $OGG_HOME/dirdat/E_TJ_T1
mkdir -p $OGG_HOME/dirrpt/E_TJ_T1
mkdir -p $OGG_HOME/dirdat/P_TJ_T1
mkdir -p $OGG_HOME/dirrpt/P_TJ_T1

一定要仔细检查目录名,不能用丝毫的错误

创建ogg专用专属表空间:

--(CDB)
create tablespace ggtbs datafile '/u01/app/oracle/oradata/SRC/ggtbs.dbf' size 50M autoextend on;
alter session set container=P1;
--(PDB)
create tablespace ggtbs datafile '/u01/app/oracle/oradata/SRC/P1/ggtbs.dbf' size 50M autoextend on;

更改C##GGADMIN用户默认表空间

alter session set container=CDB$ROOT;
alter user C##GGADMIN default tablespace ggtbs;

目标端

创建需要用到的目录:

mkdir -p $OGG_HOME/dirdat/R_TJ_T1
mkdir -p $OGG_HOME/dirrpt/R_TJ_T1

创建ogg专用专属表空间:

--(CDB)
create tablespace ggtbs datafile '/u01/app/oracle/oradata/DEST/ggtbs.dbf' size 50M autoextend on;
alter session set container=P1;
--(PDB)
create tablespace ggtbs datafile '/u01/app/oracle/oradata/DEST/P1/ggtbs.dbf' size 50M autoextend on;

更改C##GGADMIN用户默认表空间

alter session set container=CDB$ROOT;
alter user C##GGADMIN default tablespace ggtbs;

准备OGG

一定要进到$OGG_HOME目录下操作(以免出错)

源端

别名

#设置一个别名oggadmin, 避免使用明文密码
ggsci > add credentialstore
ggsci > alter credentialstore add user C##GGADMIN@SRC , password pwd , alias oggadmin#credentialstore存放在$OGG_HOME/dircrd下
#登录
ggsci > dblogin useridalias oggadmin

mgr进程

ggsci > edit params mgr
#内容如下:(删除这个注释)
port 7809
autostart er *
autorestart er *,waitminutes 3,retries 10
purgeoldextracts ./dirdat/*,usecheckpoints,minkeepdays 7

checkpoint table

注意: 这个GLOBALS要建在$OGG_HOME下(OGG安装目录)

ggsci > edit params ./GLOBALS
checkpointtable P1.C##GGADMIN.ckptt
ggsci > add checkpointtable P1.C##GGADMIN.ckptt

目标端

与源端基本一致

到$OGG_HOME目录下操作(以免出错)

别名

#设置一个别名oggadmin, 尽量避免使用明文密码
ggsci > add credentialstore
ggsci > alter credentialstore add user C##GGADMIN@DEST , password pwd , alias oggadmin
ggsci > alter credentialstore add user C##GGADMIN@P1, password pwd , alias ogg_p1_apply#credentialstore存放在$OGG_HOME/dircrd下

登录

ggsci > dblogin useridalias oggadmin

mgr进程

ggsci > edit params mgr
#内容如下:(删除这个注释)
port 7809
autostart er *
autorestart er *,waitminutes 3,retries 10
purgeoldextracts ./dirdat/*,usecheckpoints,minkeepdays 7

checkpoint table

注意: 这个GLOBALS要建在$OGG_HOME下(OGG安装目录)

ggsci > edit params ./GLOBALS
checkpointtable P1.C##GGADMIN.ckptt
ggsci > add checkpointtable P1.C##GGADMIN.ckptt

初始化数据

源端

创建需要用到的目录

mkdir -p $OGG_HOME/dirdat/i_TJ_T1

extract进程

到$OGG_HOME目录下操作(以免出错)

ggsci > edit params ie_TJ_T1
#内容如下:(删除这个注释)
extract ie_TJ_T1
useridalias oggadmin
rmthost 10.0.0.141,mgrport 7809
rmtfile ./dirdat/i_TJ_T1/init.dat,purge
table P1.TOM.T1;

初始化数据要用到sourceistable这个参数:

ggsci > add extract ie_TJ_T1,sourceistable
ggsci > register extract e_TJ_T1 database container(P1)

先不要启动

目标端

创建需要用到的目录

mkdir -p $OGG_HOME/dirdat/i_TJ_T1

replicat进程

初始化数据时, 目标端要用到specialrun参数, 并且一定要写在第一行

ggsci > edit params ir_TJ_T1
#内容如下:(删除这个注释)
specialrun
replicat ir_TJ_T1
useridalias ogg_p1_apply
handlecollisions
extfile ./dirdat/i_TJ_T1/init.dat
table P1.TOM.T1, target P1.Jerry.T1;
ggsci > add replicat ir_TJ_T1 exttrail ./dirdat/i_TJ_T1/re, specialrun

启动

先在源端启动:

ggsci > start ie_TJ_T1

然后在目标端启动:

ggsci > start ir_TJ_T1

配置同步(重点来了)

源端

创建需要用到的目录

mkdir -p $OGG_HOME/dirdat/e_TJ_T1
mkdir -p $OGG_HOME/dirrpt/e_TJ_T1
mkdir -p $OGG_HOME/dirdat/r_TJ_T1
mkdir -p $OGG_HOME/dirrpt/r_TJ_T1

一定要仔细检查, 不能有丝毫差错

到$OGG_HOME目录下操作(以免出错)

add trandata

格式:

ggsci > add schematrandata PDB.schema

ggsci > add trandata PDB.schema.table

ggsci > add trandata P1.TOM.T1

extract进程

ggsci > edit params e_TJ_T1
#内容如下:(删除这个注释)
extract e_TJ_T1
useridalias oggadmin
exttrail ./dirdat/e_TJ_T1/ex
warnlongtrans 12h,checkinterval 30m
discardfile ./dirrpt/e_TJ_T1.dsc,append,megabytes 200
TABLE P1.TOM.T1;
ggsci > add extract e_TJ_T1,integrated tranlog,begin now
ggsci > add exttrail ./dirdat/e_TJ_T1/ex,extract e_TJ_T1,megabytes 200
ggsci > dblogin useridalias oggadmin
ggsci > register extract e_TJ_T1 database container(P1)

pump进程

ggsci > edit params p_TJ_T1
extract p_TJ_T1
useridalias oggadmin
PASSTHRU
RMTHOST 10.0.0.141,MGRPORT 7809
rmttrail ./dirdat/r_TJ_T1/re
discardfile ./dirrpt/r_TJ_T1.dsc,append,megabytes 200
TABLE P1.TOM.T1;
ggsci > add extract p_TJ_T1,exttrailsource ./dirdat/e_TJ_T1/ex
ggsci > add rmttrail ./dirdat/r_TJ_T1/re,extract p_TJ_T1,megabytes 200

先不要启动

目标端

创建需要用到的目录

mkdir -p $OGG_HOME/dirdat/r_TJ_T1
mkdir -p $OGG_HOME/dirrpt/r_TJ_T1

replicat进程

ggsci > edit params r_TJ_T1
#内容如下:(删除这个注释)
replicat r_TJ_T1
useridalias ogg_p1_apply
handlecollisions
assumetargetdefs
discardfile ./dirrpt/r_TJ_T1.dsc,append,megabytes 200
map P1.TOM.T1,target P1.Jerry.T1;
ggsci > add replicat r_TJ_T1 exttrail ./dirdat/r_TJ_T1/re,checkpointtable P1.C##GGADMIN.ckptt

先在目标端启动replicat进程

ggsci > dblogin useridalias oggadminggsci > start r_TJ_T1

源端启动pump和extract进程

ggsci > start p_TJ_T1
ggsci > start e_TJ_T1

DDL应用

marker_setup.sql

这个脚本在$OGG_HOME目录下

源端和目标端都执行一下即可:

源端extract进程:

ggsci > edit params e_TJ_T1
#添加以下两行
DDL include all
ddloptions addtrandata,report

目标端replicat进程:

ggsci > edit params r_TJ_T1
#添加以下两行
DDL include all
ddlerror default ignore retryop

启动及查看命令

查看(例)

info all

info e_TJ_T1

info e_TJ_T1 detail

view report e_TJ_T1

启动(例)

start manager

start e_TJ_T1

关闭(例)

stop manager

stop e_TJ_T1

添加/删除

add / delete

OGG19 Oracle之间的同步(经典架构)相关推荐

  1. redis和oracle同步方案,redis与oracle之间怎么实现数据同步?

    redis与oracle之间怎么实现数据同步? 更新时间:2019-03-12 16:02 最满意答案 没有直接同步的方法,这个依赖于你的架构设计. 插入时同步,比如先更新了oracle,再更新red ...

  2. oracle和redis关联查询,redis与oracle之间如何可以实现数据同步

    redis与oracle之间不能进行直接同步,关键还是看你的架构设计是否合适: 1,插入时同步,例如先更新了oracle,再对redis进行更新,这些需要通过代码逻辑实现.设计决定先后顺序. 2,查询 ...

  3. oracle两个数据库之间,如何实现oracle两个数据库之间的同步

    如何实现oracle两个数据库之间的同步 关注:166  答案:2  手机版 解决时间 2021-01-23 22:02 提问者美人如画皮 2021-01-23 13:26 如何实现oracle两个数 ...

  4. 浅谈Oracle 数据库之间数据同步方案

    随着信息技术的飞速发展,企业信息化建设的不断深入,使得企业业务系统数量不断增加.这时,各业务系统之间数据交互,各子业务系统与核心业务系统之间数据交互,诸如此类场景的应用需求不断出现.因此,IT部门应对 ...

  5. Oracle数据库实例之进程架构(二)

    Oracle数据库实例之进程架构(二) 必需的后台进程 PMON PMAN LREG SMON DBW LGWR CKPT MMON & MMNL RECO 可选的后台进程 ARCn CJQ0 ...

  6. Lesson 16.6Lesson 16.6 复现经典架构:LeNet5 复现经典架构 (2):AlexNet

    4 复现经典网络:LeNet5与AlexNet 4.1 现代CNN的奠基者:LeNet5 使用卷积层和池化层能够创造的最简单的网络是什么样呢?或许就是下面这样的架构: 首先,图像从左侧输入,从右侧输出 ...

  7. oracle使用cgi吗_php架构之CGI、FastCGI、php-fpm有什么关系?原来这么简单

    CGI.FastCGI.php-fpm lnmp 在使用PHP开发应用时,我们用的最多的无非就是LNMP.LAMP等架构,这也是PHP开发的经典架构,使用起来简单好用,可正时因为简单好用, 使得很多人 ...

  8. Oracle使用dblink同步数据

    两台Oracle之间进行数据同步,可以借助Oracle的dblink完成,如果是Oracle与其他数据库之间,则可以使用Oracle提供的Database Gateways+dblink实现,当然,也 ...

  9. Oracle数据库实例之内存架构(一)

    Oracle数据库实例之内存架构(一) Oracle数据库内存结构 基本内存结构 Oracle内存管理 用户全局区:UGA 程序全局区:PGA PGA的内容 专用和共享服务器模式下的PGA 系统全局区 ...

最新文章

  1. 有哪些工具、技巧和方法极大地提高了远程工作效率?
  2. leetcode最小路径和 (动态规划)python
  3. 【Todo】Zookeeper系列文章
  4. 国内首家!华为获5G核心网电信设备进网许可证;亚马逊或颠覆博通等芯片制造商?2020年5G总投资额达0.9万亿元……...
  5. 华为宣布今年将投入2亿美元推动鲲鹏计算产业发展
  6. WPF_在APP.xaml应用资源样式
  7. 轻量级DI框架Guice使用详解
  8. datatables加载表格数据入门
  9. Java根据出生年月日计算年龄
  10. 花在照顾子女上的时间对父亲自己的大脑具有可塑性?
  11. ocr移动端名片识别
  12. 黑马淘淘商城第十二天 购物车实现、订单确认页面展示
  13. Kubesphere-多节点安装
  14. 微软NNI进行神经网络模型剪枝压缩的踩坑记录
  15. mysql日期时间类型
  16. 一搜◎欢乐搜索 变相滋生垃圾邮件与病毒
  17. eclipse 找不到或无法加载主类(已解决)
  18. 高效App渠道统计如何进行
  19. 米兰愈加关怀的是尼昂的伤情
  20. 20200417-SiC+移相全桥文献

热门文章

  1. 信息系统项目管理师论文-项目范围管理
  2. 什么是5G新通话?(1)
  3. ADPCM编解码的使用
  4. 2022广西贵港市覃塘区住房和城乡建设局招聘练习题及答案
  5. java 文本框只能输入数字_java swing 怎么设置文本框只能输入数字
  6. Flutter 基础之 Theme 主题(样式篇)
  7. windows 异常处理
  8. linux分区不格式化能挂栽吗,linux硬盘分区、格式化与挂载
  9. 献给毕业生:五百强各大行业简介+面试流程+tips (zhuan)
  10. Demo01HTML前端设计