暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

配置ogg同步oracle 11g数据到oracle 19c

原创 Leo 2022-12-01
697

文档课题:配置ogg同步oracle 11g数据到oracle 19c.

1、环境介绍


2、软件介绍

GoldenGate提供一个单一的平台,其可以为任何企业环境实现秒级灾难备份.它是一种基于日志的结构化数据复制方式,通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活.

GoldenGate TDM的数据复制过程解析:

a、利用捕捉进程(Extract Process)在源端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate TDM自定义的中间格式存放在队列文件(trail file)中.再利用传送进程将队列文件通过TCP/IP传送到目标数据库.捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止结束开始恢复后可从检查点位置继续复制.

b、目标系统接受数据变化开缓存到GoldenGate TDM队列当中,队列为临时存储数据变化的文件,等待投递进程读取数据.

c、GoldenGate TDM投递过程(replicat process)从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成.

 

由此可见,GoldenGate TDM是一种基于软件的数据复制方式,将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达10:1的压缩率对数据进行压缩,可以大大降低带宽需求.在目标端GoldenGate TDM可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的.

3、安装ogg

3.1、创建目录

3.1.1、源端

[root@leo-11g-ogg:~]# mkdir -p /u01/app/ogg

[root@leo-11g-ogg:~]# chown -R oracle:oinstall /u01/app/ogg

[root@leo-11g-ogg:~]# mkdir -p /u01/setup/ogg

3.1.2、目标端

[root@leo-19c-ogg:~]# mkdir -p /u01/app/ogg

[root@leo-19c-ogg:~]# chown -R oracle:oinstall /u01/app/ogg

[root@leo-19c-ogg:~]# mkdir -p /u01/setup/ogg

3.2、安装ogg软件

3.2.1、源端

sftp> cd /u01/setup/ogg

sftp> lcd F:\installmedium\ogg

sftp> put 191004_fbo_ggs_Linux_x64_shiphome.zip

[root@leo-11g-ogg:~]# chown -R oracle:oinstall /u01/setup

[oracle@leo-11g-ogg ogg]$ pwd

/u01/setup/ogg

[oracle@leo-11g-ogg ogg]$ unzip -q 191004_fbo_ggs_Linux_x64_shiphome.zip

[oracle@leo-11g-ogg Disk1]$ pwd

/u01/setup/ogg/fbo_ggs_Linux_x64_shiphome/Disk1

[oracle@leo-11g-ogg Disk1]$ export DISPLAY=192.168.133.1:0.0

[oracle@leo-11g-ogg Disk1]$ ./runInstaller






3.2.2、目标端

sftp> cd /u01/setup/ogg

sftp> lcd F:\installmedium\ogg

sftp> put 191004_fbo_ggs_Linux_x64_shiphome.zip

[root@leo-19c-ogg:~]# chown -R oracle:oinstall /u01/setup

[oracle@leo-19c-ogg ogg]$ pwd

/u01/setup/ogg

[oracle@leo-19c-ogg ogg]$ unzip -q 191004_fbo_ggs_Linux_x64_shiphome.zip

[oracle@leo-19c-ogg Disk1]$ pwd

/u01/setup/ogg/fbo_ggs_Linux_x64_shiphome/Disk1

[oracle@leo-19c-ogg Disk1]$ export DISPLAY=192.168.133.1:0.0

[oracle@leo-19c-ogg Disk1]$ ./runInstaller






3.3、环境变量

3.3.1、源端

[oracle@leo-11g-ogg:~]$ vi .bash_profile

添加如下:

export GG_HOME=/u01/app/ogg

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$GG_HOME

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

alias ggsci='cd $GG_HOME;ggsci'

 

[oracle@leo-11g-ogg:~]$ source .bash_profile

3.3.2、目标端

[oracle@leo-19c-ogg:~]$ vi .bash_profile

添加如下:

export GG_HOME=/u01/app/ogg

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$GG_HOME

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

alias ggsci='cd $GG_HOME;ggsci'

 

[oracle@leo-19c-ogg ~]$ source .bash_profile

3.4、数据库配置

3.4.1、源端

3.4.1.1、强制生成日志

sys@ORCL 2022-12-01 09:54:51> alter database force logging;

 

Database altered.

 

sys@ORCL 2022-12-01 09:55:01> select force_logging from v$database;

 

FOR

---

YES

3.4.1.2、开启归档

[oracle@leo-11g-ogg:~]$ sqlplus / as sysdba

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/archivelog';

SQL> alter database open;

3.4.1.3、开启补充日志

SQL> select supplemental_log_data_min from v$database;

 

SUPPLEME

--------

NO

SQL> alter database add supplemental log data;

SQL> alter system switch logfile;

SQL> select supplemental_log_data_min from v$database;

 

SUPPLEME

--------

YES

 

说明:redo默认情况下只记录数据块改变的信息,其实它还可以记录更详细的信息,这些信息对第三方的容灾软件很重要,所以此处将supplemental log mode模式打开,oracle一般是用rowid来唯一标识一行记录,但goldengate需要主键等其他标识,所以要开附加日志.

3.4.1.4、开启enable_goldengate_replication

SQL> alter system set enable_goldengate_replication=true;

SQL> show parameter enable_goldengate

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

enable_goldengate_replication        boolean     TRUE

3.4.2、目标端

3.4.2.1、开启enable_goldengate_replication

SQL> alter system set enable_goldengate_replication=true;

SQL> show parameter enable_goldengate

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

enable_goldengate_replication        boolean     TRUE

3.5、创建用户、表空间及授权

创建goldengate数据库用户以及专属于ogg的表空间.

3.5.1、源端

[oracle@leo-11g-ogg:~]$ sqlplus / as sysdba

create tablespace oggtbs datafile '/u01/app/oracle/oradata/orcl/oggtbs01.dbf' size 50m autoextend on;

create user ogg identified by ogg default tablespace oggtbs;

grant resource to ogg;

grant create session, alter session to ogg;

grant select any dictionary to ogg;

grant flashback any table to ogg;

grant alter any table to ogg;

grant select any table to ogg;

grant execute on dbms_flashback to ogg;

grant all privileges to ogg;

grant dba to ogg;

3.5.2、目标端

[oracle@leo-19c-ogg ~]$ sqlplus / as sysdba

create tablespace oggtbs datafile '/u01/app/oracle/oradata/SIMDB/oggtbs01.dbf' size 50m autoextend on;

create user ogg identified by ogg default tablespace oggtbs;

grant resource to ogg;

grant create session, alter session to ogg;

grant select any dictionary to ogg;

grant flashback any table to ogg;

grant alter any table to ogg;

grant select any table to ogg;

grant execute on dbms_flashback to ogg;

grant insert any table to ogg;

grant update any table to ogg;

grant delete any table to ogg;

grant dba to ogg;

3.6、准备数据

3.6.1、源端

新建用户并授予权限.

create user leo identified by leo;

grant connect,resource to leo;

grant select on scott.emp to leo;

grant select on scott.dept to leo;

create user alina identified by alina;

grant connect,resource to alina;

grant select on scott.salgrade to alina;

 

leo用户创建测试表,并增加主键.

SQL> show user

USER is "LEO"

create table lemp as select * from scott.emp;

create table ldept as select * from scott.dept;

alter table ldept add primary key (deptno);

alter table lemp add primary key (empno);

SQL> show user

USER is "ALINA"

create table asalgrade as select * from scott.salgrade;

alter table asalgrade add primary key (grade);

 

导出数据,用于目标端.

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

exp leo/leo@orcl file=/home/oracle/leo.dmp tables=ldept,lemp rows=y log=/home/oracle/exp.log

 

将源端的dmp文件scp到目标端

scp leo.dmp oracle@192.168.133.109:/home/oracle/

3.6.2、目标端

创建用户并授予权限

create user leo identified by leo;

grant connect,resource,unlimited tablespace to leo;

 

导入测试数据

[oracle@leo-deng ~]$ imp leo/leo file=/home/oracle/leo.dmp full=y statistics=none

验证测试数据

SQL> conn leo/leo

Connected.

SQL> select * from tab;

 

TNAME           TABTYPE  CLUSTERID

------------------------------ ------- ----------

LEMP            TABLE

LDEPT           TABLE

 

SQL> select count(*) from mydept;

 

  COUNT(*)

----------

         4

SQL> select count(*) from myemp;

 

  COUNT(*)

----------

        14

4、OGG配置

4.1、源端

说明:必须在ogg的home目录下启动ggsci,这样才能把子目录建在ogg的home目录下,如果不在相应位置建立子目录,在后面编辑参数文件时会报错.

[oracle@leo-11g-ogg ogg]$ cd $GG_HOME

[oracle@leo ogg]$ ./ggsci

4.1.1、创建目录

GGSCI (leo-11g-ogg) 1> create subdirs

 

Creating subdirectories under current directory /u01/app/ogg

 

Parameter file                 /u01/app/ogg/dirprm: created.

Report file                    /u01/app/ogg/dirrpt: created.

Checkpoint file                /u01/app/ogg/dirchk: created.

Process status files           /u01/app/ogg/dirpcs: created.

SQL script files               /u01/app/ogg/dirsql: created.

Database definitions files     /u01/app/ogg/dirdef: created.

Extract data files             /u01/app/ogg/dirdat: created.

Temporary files                /u01/app/ogg/dirtmp: created.

Credential store files         /u01/app/ogg/dircrd: created.

Masterkey wallet files         /u01/app/ogg/dirwlt: created.

Dump files                     /u01/app/ogg/dirdmp: created.

 

重要目录说明:

dirchk:存放检查点(checkpoint)文件

dirdat:存放trail文件

dirdef:存放通过defgen工具生成的源或目标端数据定义文件

dirpcs:存放进程状态文件

dirprm:存放配置参数文件

dirrpt:存放进程报告文件

dirsql:存放sql脚本文件

dirtmp:当事务所需要的内存超过已分配的内存时,默认存储在此目录

4.1.2、添加端口

4.1.2.1、源端配置

GGSCI (leo-11g-ogg) 2> edit param mgr

添加

port 7809

 

GGSCI (leo-11g-ogg) 3> start mgr

Manager started.

 

GGSCI (leo-11g-ogg) 4> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                                      

 

GGSCI (leo-11g-ogg) 2> dblogin userid ogg,password ogg

Successfully logged into database.

 

GGSCI (leo-11g-ogg as ogg@orcl) 3> add trandata leo.*

 

2022-12-01 12:35:24  INFO    OGG-15132  Logging of supplemental redo data enabled for table LEO.LDEPT.

 

2022-12-01 12:35:24  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table LEO.LDEPT.

 

2022-12-01 12:35:24  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table LEO.LDEPT.

 

2022-12-01 12:35:24  INFO    OGG-15132  Logging of supplemental redo data enabled for table LEO.LEMP.

 

2022-12-01 12:35:24  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table LEO.LEMP.

 

2022-12-01 12:35:24  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table LEO.LEMP.

 

说明:数据库附加日志打开后还需要对每张表执行add trandata吗?

答案是肯定的,如果不执行add trandata,insert同步没有问题(ORACLE数据库),但在同步update或delete时,就会因为丢失主键报同步错误.

不开启表级的最小附加日志,update的redo信息不记录没有进行更新的字段信息,如主键不更新的话主键不记录在redo中,所以会导致同步失败.

4.1.2.2、目标端配置

提前在目标端添加mgr端口.

GGSCI (leo-19c-ogg) 2> create subdirs

 

Creating subdirectories under current directory /u01/app/ogg

 

Parameter file                 /u01/app/ogg/dirprm: created.

Report file                    /u01/app/ogg/dirrpt: created.

Checkpoint file                /u01/app/ogg/dirchk: created.

Process status files           /u01/app/ogg/dirpcs: created.

SQL script files               /u01/app/ogg/dirsql: created.

Database definitions files     /u01/app/ogg/dirdef: created.

Extract data files             /u01/app/ogg/dirdat: created.

Temporary files                /u01/app/ogg/dirtmp: created.

Credential store files         /u01/app/ogg/dircrd: created.

Masterkey wallet files         /u01/app/ogg/dirwlt: created.

Dump files                     /u01/app/ogg/dirdmp: created.

 

GGSCI (leo-19c-ogg) 3> edit param mgr

添加以下:

port 7809

 

GGSCI (leo-19c-ogg) 4> start mgr

Manager started.

 

GGSCI (leo-19c-ogg) 5> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING

4.1.3、抓取进程

extract进程,负责从源端数据表或者日志中捕获数据.

GGSCI (leo-11g-ogg as ogg@orcl) 4> add extract exta,tranlog,begin now

EXTRACT added.

 

添加本地队列ra,exta进程捕捉到的有效数据将写入本地队列.

GGSCI (leo-11g-ogg as ogg@orcl) 5> add exttrail ./dirdat/ra,extract exta

EXTTRAIL added.

 

为exta进程配置参数

GGSCI (leo-11g-ogg as ogg@orcl) 6> edit param exta

添加如下内容:

extract exta

userid ogg,password ogg

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

exttrail ./dirdat/ra

dynamicresolution  /* 优化参数,动态分析表结构

gettruncates   /*抓取truncate table操作

table leo.*;

4.1.4、投递进程

源端数据库配置投递过程.

GGSCI (leo-11g-ogg as ogg@orcl) 7> add extract dp1,exttrailsource ./dirdat/ra

EXTRACT added.

 

GGSCI (leo-11g-ogg as ogg@orcl) 8> edit param dp1

添加如下:

extract dp1

userid ogg,password ogg

setenv (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)

passthru

rmthost 192.168.133.109,mgrport 7809

rmttrail ./dirdat/ra

table leo.*;

--添加远程trail文件.

GGSCI (leo-11g-ogg as ogg@orcl) 9> add rmttrail ./dirdat/ra,extract dp1

RMTTRAIL added.

 

GGSCI (leo-11g-ogg as ogg@orcl) 10> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     STOPPED     DP1         00:00:00      00:03:45   

EXTRACT     STOPPED     EXTA        00:00:00      00:08:13       

 

GGSCI (leo) 6> start dp1

 

Sending START request to MANAGER ...

EXTRACT DP1 starting

 

 

GGSCI (leo) 7> start exta

 

Sending START request to MANAGER ...

EXTRACT EXTA starting

 

 

GGSCI (leo) 8> info all

 

Program     Status      Group       Lag           Time Since Chkpt

 

MANAGER    RUNNING                                          

EXTRACT     RUNNING     DP1         00:00:00      00:04:26   

EXTRACT     RUNNING     EXTA        00:38:56      00:00:04   

4.2、目标端

[oracle@leo-deng ~]$ cd $GG_HOME

[oracle@leo-deng ogg]$ ./ggsci

4.2.1、添加checkpointtable

GGSCI (leo-19c-ogg) 1> edit params ./globals

添加如下

checkpointtable ogg.checkpoint

 

GGSCI (leo-19c-ogg) 2> dblogin userid ogg,password ogg

Successfully logged into database.

 

GGSCI (leo-19c-ogg as ogg@simdb) 2> add checkpointtable ogg.checkpoint

 

Successfully created checkpoint table ogg.checkpoint.

 

4.2.2、复制进程

GGSCI (leo-19c-ogg as ogg@simdb) 3> add replicat repa,exttrail ./dirdat/ra,checkpointtable ogg.checkpoint

REPLICAT added.

 

GGSCI (leo-19c-ogg as ogg@simdb) 4> edit param repa

添加如下:

replicat repa

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password ogg

numfiles 500

grouptransops 10000

handlecollisions

assumetargetdefs

allownoopupdates

dynamicresolution

discardfile ./dirrpt/repsa_discard.txt, append, megabytes 10

map leo.*, target leo.*;

 

说明:逗号与target之间需用空格隔开, ogg.checkpoint中的ogg为之前创建的用户.

GGSCI (leo-19c-ogg as ogg@simdb) 5> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

REPLICAT    STOPPED     REPA        00:00:00      00:02:16        

 

GGSCI (leo-19c-ogg as ogg@simdb) 8> start repa

 

Sending START request to MANAGER ...

REPLICAT REPA starting

 

 

GGSCI (leo-19c-ogg as ogg@simdb) 9> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                           

REPLICAT    RUNNING     REPA        00:00:00      00:00:00       

5、验证数据

--源端向ldept表中插入一条数据.

sys@ORCL 2022-12-01 15:29:30> conn leo/leo

Connected.

leo@ORCL 2022-12-01 15:29:35> select * from ldept;

 

    DEPTNO DNAME          LOC

---------- -------------- -------------

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

 

leo@ORCL 2022-12-01 15:29:45> insert into ldept values (50,'IT','ChongQing');

 

1 row created.

 

leo@ORCL 2022-12-01 15:30:03> commit;

 

Commit complete.

 

--目标端验证.

SQL> select * from ldept

 

    DEPTNO DNAME          LOC

---------- -------------- -------------

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES           CHICAGO

        40 OPERATIONS     BOSTON

        50 IT                ChongQing

ogg基本配置完成.

 

总结:配置过程包括操作系统层面前期准备、源端目标端数据库配置、源端中mgr/extract/pump进程配置、目标端中mgr/replicat进程配置.配置过程要保持数据库开启状态,否则ggsci中用户不能登录.

墨力计划
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

哆哆女性网废名bl动画片开公司起名猫起名字晴起名字大全女孩2021年女孩起名字大全免费堪怎么读至尊神位联锁超市起名起名网英文名免费取名三会顾姓男宝宝名字大全 顾姓男孩起名大全姓杨的起什么名好明字辈取名起名大全大全灵蛇爱海南新闻频道直播建筑公司起名字谷姓男孩起名国家命运演员表注册商标起名字免费黄豆公司起名金姓女童起名大宋权相给姓于的男孩起人名描写枫叶的作文曹姓牛年女宝宝起名大全中国排球在线张氏宝宝男孩起名活着百度云淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化