OGG19 Oracle之间的同步(经典架构)
文章内容仅供参考
环境
概况
|
源端 |
目标端 | |
|
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 |
数据
|
源端
|
目标端
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 oggadmin
ggsci > 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 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐







所有评论(0)