美文网首页Oracle ...框架建设收集数据可视化
在Windows中 基于Oracle GoldenGate (O

在Windows中 基于Oracle GoldenGate (O

作者: 承诺一时的华丽 | 来源:发表于2019-01-16 16:36 被阅读187次
    Oracle GoldenGate Windows平台oracle->oracle单向数据同步,试验环境:
    试验环境 源端软件版本 目标端软件版本
    操作系统 Windows 10 64位 Windows 10 64位
    IP地址 192.168.2.100 192.168.2.200
    数据库 Oracle 11.2.0.3.0 64bit Oracle 11.2.0.3.0 64bit
    数据库账号 ggs ggs
    数据库表 demo demo
    GoldenGate Oracle GoldenGate 12.2.0.2.3 for Oracle on Windows (64 bit) (327 MB) Oracle GoldenGate 12.2.0.2.3 for Oracle on Windows (64 bit) (327 MB)
    dirdat目录 D:\app\win10\OGG122\install\dirdat\et E:\app\win10\OGG122\install\dirdat\et

    一、Oracle环境安装

    参考: https://www.cnblogs.com/sunseine/p/5630213.html

    注意:因开启归档日志每天产生的日志会很大,所有需要做一个定时任务,定期进行清理归档日志。否则将空间占满,引起数据库报错:ORA-00257。相关资料:

    windows:https://blog.csdn.net/anzhen0429/article/details/78637603
    linux:https://www.jianshu.com/p/d098e48b02e2

    (1)、设置Oracle的日志模式为:归档模式源端目标端都要修改):
    image.png
    • cmd 中以sysdba身份连接数据库
    > sqlplus "/as sysdba"
    
    • 查看数据库当前归档模式
    SQL> select log_mode from v$database;
    
    image.png
    • archive log list;查看自动归档状态和归档进程,shutdown immediate;关闭数据库,startup mount;启动到mount状态,alter database archivelog;修改数据库为归档模式,alter database open;打开数据库
    SQL> archive log list;
    SQL> shutdown immediate;
    SQL> startup mount;
    SQL> alter database archivelog;
    SQL> alter database open;
    

    设置完成结果查询:


    image.png
    (2)、在源端库中打开force logging
    SQL> select force_logging from v$database;
    FOR
    ---
    NO
    SQL> alter database force logging;
    Database altered.
    SQL> select force_logging from v$database;
    FOR
    ---
    YES
    
    (3)、在源端库中打开supplemental log
    SQL> select supplemental_log_data_min from v$database;
    SUPPLEME
    --------
    NO
    SQL> alter database add supplemental log data;
    Database altered.
    
    (4)、在源端库切换日志,使更改生效
    SQL> alter system switch logfile;
    System altered.
    SQL> select supplemental_log_data_min from v$database;
    SUPPLEME
    --------
    YES
    
    (5)、在源端库中关闭回收站
    SQL> show parameter recyclebin
    NAME TYPE VALUE
    ------------- ----------- ------------------------------
    recyclebin string on
    SQL> alter system set recyclebin=off;
    System altered.
    # ----------- 如果不成功,执行以下命令 -------------
    SQL> alter system set recyclebin=off deferred;
    
    (6)、创建goldengate管理用户
    • 源端创建ggs用户
    SQL> create user ggs identified by 123456 default tablespace users temporary tablespace temp;
    SQL> grant connect ,resource,unlimited tablespace to ggs;
    SQL> grant execute on utl_file to ggs;
    SQL> grant select any dictionary,select any table to ggs;
    SQL> grant alter any table to ggs;
    SQL> grant flashback any table to ggs;
    SQL> grant execute on dbms_flashback to ggs;
    
    • 源端目标端创建测试表:demo
    SQL> create table ggs.demo(id number primary key,ename varchar2(10));
    
    • 目标端创建ggs用户
    SQL> create user ggs identified by ggs default tablespace users temporary tablespace temp;
    SQL> grant dba to ggs;
    

    二、Oracle GoldenGate介绍

    参考: https://www.cnblogs.com/qiumingcheng/p/5435907.html
    文档: https://docs.oracle.com/goldengate/c1230/gg-winux/index.html

    三、Oracle GoldenGate安装(源端和目标端)

    安装条件:
    1、以administrator身份登录系统进行安装,只要安装者属于系统的administrator组就行。
    2、安装Microsoft Visual C ++ 2005 SP1 Redistributable Package,这个是必须的。

    安装方法很简单,只需要把压缩包解压后,把文件放到指定文件夹即可,如c:/gg目录。

    (1)、点击下载 Oracle GoldenGate

    在使用12.3.0.1版本遇到WARNING OGG-01988 Could not find schematrandata function in source database: failed to find function.错误,需要安装修复补丁。

    建议下载版本:12.2.0.2

    image.png
    (2)、解压122023_ggs_Windows_x64_shiphome.zip
    点击setup.exe开始安装
    选择数据库版本
    选择安装位置及数据库位置

    选择安装目录为刚才创建的安装目录其他都默认,接下来都步骤都默认直至安装完成。

    (3)、安装好了之后,设置环境变量,先查看services.msc的Oracle服务如图:
    image

    然后设置系统的环境变量:

    ORACLE_HOME=D:\oracle\product\11.2.0\dbhome_1
    ORACLE_SID=ORCL
    
    • ORACLE_HOME oracle安装路径地址
    • ORACLE_SID 上图oracle服务名

    如图:

    image

    注意:源端与目标端都需要进行安装Oracle GoldenGate

    四、Oracle GoldenGate配置

    ====== 以下为Source(同步的数据源)Oracle GoldenGate配置 ======

    1、Oracle GoldenGate(源端)

    (1)、在源端服务器安装的OGG根目录按住SHift+右键cmd进入OGG根目录的命令面板
    (2)、执行ggsci.exe

    c:\gg>ggsci.exe
    Oracle GoldenGate Command Interpreter for Oracle
    Version 12.2.0.2.3 OGGCORE_12.2.0.2.0_PLATFORMS_170727.1430
    Windows x64 (optimized), Oracle 11g on Jul 27 2017 16:38:50
    Operating system character set identified as GBK.
    
    Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (Win10) 1>
    
    • 添加manager进行到windows服务,使之可以随windows开机自行启动
      手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS命令(注意./GLOBALS为大写),进入编辑文件,输入下面内容:

    MGRSERVNAME GGMGR

    保存退出后,用install addservice命令添加服务

    c:\gg>install addservice
    Service 'GGMGR' created.
    Install program terminated normally.
    

    (3)、输入create subdirs自动创建需要用到的文件夹

    GGSCI (Win10) 1> create subdirs
    

    主要目录介绍:
    dirchk:存放检查点(Checkpoint)文件
    dirdat:存放Trail与Extract文件,以后详述
    dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
    dirpcs:存放进程状态文件
    dirprm:存放参数文件
    dirrpt:存放进程报告文件
    dirsql:存放SQL脚本文件
    dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。

    (4)、登录ggs账号,输入dblogin userid ggs,password 123456

    GGSCI (Win10) 1> dblogin userid ggs,password 123456
    Successfully logged into database.
    

    (5)、添加表级的trandata,输入add trandata ggs.demo

    GGSCI (Win10) 1> add trandata ggs.demo 
    Logging of supplemental redo data enabled for table GGS.DEMO.
    TRANDATA for scheduling columns has been added on table 'GGS.DEMO'.
    TRANDATA for instantiation CSN has been added on table 'GGS.DEMO'.
    

    注:表名可以使用通配符,如add trandata ggs.*
    (5)、配置mgr管理进程,输入edit params mgr将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params mgr
    

    以下是添加内容:

    port 7500
    dynamicportlist 7501-7505
    autorestart extract *,waitminutes 2,retries 5

    (6)、启动mgr进程,输入start mgr

    GGSCI (Win10) 1> start mgr
    

    (7)、配置extract抽取进程,输入edit params eora将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params eora
    

    以下是添加内容:

    extract eora
    userid ggs,password 123456
    exttrail D:\app\win10\OGG122\install\dirdat\et
    table ggs.demo;

    注:表名可以使用通配符,如table ggs.*
    exttrailD:\app\win10\OGG122\install\dirdat\et为源端服务器的目录(自定义)地址。
    保存后,添加并启动eora进程,输入add extract eora,tranlog,begin nowadd exttrail D:\app\win10\OGG122\install\dirdat\et,extract eorastart eora

    GGSCI (Win10) 1> add extract eora,tranlog,begin now
    GGSCI (Win10) 1> add exttrail D:\app\win10\OGG122\install\dirdat\et,extract eora
    GGSCI (Win10) 1> start eora
    

    add extract eora,tranlog,begin now //从当前时间开始同步
    add extract eora, tranlog,begin 2019-02-11 13:00:00 //指定时间点开始同步

    (8)、配置pump_so进程,输入edit params pump_so将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params pump_so
    

    以下是添加内容:

    extract Pump_so
    Userid ggs,password 123456
    rmthost 192.168.88.58, mgrport 7500
    rmttrail E:\app\win10\ogg\install\dirdat\et
    Table ggs.demo;

    注:表名可以使用通配符,如Table ggs.*
    特别注意rmttrailE:\app\win10\ogg\install\dirdat\et为目标端的缓存目录地址。
    保存成功后,添加pump_so进程,输入(先不启动pump_so)add extract pump_so,exttrailsource D:\app\win10\OGG122\install\dirdat\etadd rmttrail E:\app\win10\ogg\install\dirdat\et,extract pump_so

    GGSCI (Win10) 1> add extract pump_so,exttrailsource D:\app\win10\OGG122\install\dirdat\et -- 注意`exttrailsource`的地址为`源端`服务器的目录
    GGSCI (Win10) 1> add rmttrail E:\app\win10\ogg\install\dirdat\et,extract pump_so  -- 注意`rmttrail`的地址为`目标端`服务器的目录
    

    (8)、注意等待目标端安装完成后,启动start pump_so

    • 源端所需要启动的服务有3
    > start mgr
    > start eora
    > start pump_so
    > stop .. //停止服务
    

    << 到此源端的配置就结束了 >>
    ====== End Source(同步的数据源)Oracle GoldenGate配置 ======

    ====== 以下为Target(同步的目标数据库)Oracle GoldenGate配置 ======

    2、Oracle GoldenGate(目标端)

    (1)、在目标端服务器安装的OGG根目录按住SHift+右键cmd进入OGG根目录的命令面板

    (2)、执行ggsci.exe

    c:\gg>ggsci.exe
    
    Oracle GoldenGate Command Interpreter for Oracle
    Version 12.2.0.2.3 OGGCORE_12.2.0.2.0_PLATFORMS_170727.1430
    Windows x64 (optimized), Oracle 11g on Jul 27 2017 16:38:50
    Operating system character set identified as GBK.
    
    Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (Win10) 1>
    
    • 添加manager进行到windows服务,使之可以随windows开机自行启动
      手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS命令(注意./GLOBALS为大写),进入编辑文件,输入下面内容:

    MGRSERVNAME GGMGR

    保存退出后,用install addservice命令添加服务

    c:\gg>install addservice
    Service 'GGMGR' created.
    Install program terminated normally.
    

    (3)、输入create subdirs自动创建需要用到的文件夹

    GGSCI (Win10) 1> create subdirs
    

    (4)、登录ggs账号,输入dblogin userid ggs,password 123456

    GGSCI (Win10) 1> dblogin userid ggs,password 123456
    Successfully logged into database.
    

    (5)、添加表级的trandata,输入add trandata ggs.demo

    GGSCI (Win10) 1> add trandata ggs.demo 
    Logging of supplemental redo data enabled for table GGS.DEMO.
    TRANDATA for scheduling columns has been added on table 'GGS.DEMO'.
    TRANDATA for instantiation CSN has been added on table 'GGS.DEMO'.
    

    注:表名可以使用通配符,如add trandata ggs.*
    (6)、编辑GLOBAL文件,输入edit params ./GLOBALS将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params ./GLOBALS
    

    以下是添加内容:

    checkpointtable ggs.checkpoint
    ALLOWOUTPUTDIR E:\app\win10\ogg\install\dirdat

    (7)、登陆,输入dblogin userid ggs,password 123456

    GGSCI (Win10) 1> dblogin userid ggs,password 123456
    

    (8)、添加checkpoint,输入add checkpointtable ggs.checkpoint

    GGSCI (Win10) 1> add checkpointtable ggs.checkpoint
    

    (9)、配置mgr管理进程,输入edit params mgr将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params mgr
    

    以下是添加内容:

    port 7500
    dynamicportlist 7501-7505
    autostart er *
    autorestart extract *,waitminutes 2,retries 5
    lagreporthours 1
    laginfominutes 3
    lagcriticalminutes 5
    purgeoldextracts E:\app\win10\ogg\install\dirdat\et
    ,usecheckpoints,minkeepdays 3

    保存成功后,启动mgr管理进程start mgr

    GGSCI (Win10) 1> start mgr
    

    (10)、配置的复制进程,输入edit params repl将会弹出文本编辑器并写入:

    GGSCI (Win10) 1> edit params repl
    

    以下是添加内容:

    replicat repl
    userid ggs,password 123456
    assumetargetdefs
    reperror default,discard
    discardfile ./dirrpt/repl.dsc,append,megabytes 50
    MAP ggs.demo, target ggs.demo;

    注:表名可以使用通配符,如MAP ggs.*, target ggs.*
    保存成功后,添加并且启动复制进程,输入add replicat repl,exttrail E:\app\win10\OGG122\install\dirdat\et,checkpointtable ggs.checkpointstart repl

    GGSCI (Win10) 1> add replicat repl,exttrail E:\app\win10\ogg\install\dirdat\et,checkpointtable ggs.checkpoint
    GGSCI (Win10) 1> start repl
    

    (11)、打开目标端的7500-7505的端口,如图:


    image.png
    • 目标端所需要启动的服务有2个
    > start mgr
    > start repl
    

    << 到此目标端的配置就结束了 >>
    ====== End target(同步的目标数据库)Oracle GoldenGate配置 ======

    四、GoldenGate 测试

    (1)、启动源端start pump_so

    GGSCI (Win10) 1> start pump_so
    

    目标端显示了这个info,如图:

    image.png
    源端的sqlplus.exe输入:
    SQL> INSERT INTO "GGS"."DEMO"("ID", "ENAME") VALUES ('1', '测试1');
     已创建 1 行。
    SQL> INSERT INTO "GGS"."DEMO"("ID", "ENAME") VALUES ('2', '测试2');
     已创建 1 行。
    SQL> commit;
    

    然后再去目标端看看效果如何,如图(我插入了2条):


    image.png

    注:可以到安装ogg的根目录中找到ggserr.log文件,查看错误日志。

    五、GoldenGate 错误解决方案

    1、 问题:ERROR OGG-01031 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Failed resolving output file D:\app\win10\OGG122\dirdat\et000000 (error: 3, 系统找不到指定的路径。)).

    原因:配置抽取进程的rmttrail路径错误(配成了源端的地址,应该是目标端的地址),执行:

    GGSCI (Win10 as ggs@orcl) 30> edit params pump_so
    

    在弹出的文本编辑器中添加以下配置:

    extract Pump_so
     
    Userid ggs,password 123456
    rmthost 目标端IP, mgrport 目标端端口
     
    rmttrail 目标端存放文件地址
    Table ggs.demo;
    

    2、问题:ERROR OGG-01044 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: The trail 'D:\app\win10\ogg\install\dirdat\et' is not assigned to extract 'PUMP_SO'. Assign the trail to the extract with the command "ADD EXTTRAIL/RMTTRAIL D:\app\win10\ogg\install\dirdat\et, EXTRACT PUMP_SO".

    原因:修改了rmttrail 目标端存放文件地址未更新,在GGSCI命令控制器中执行:

    GGSCI (Win10 as ggs@orcl) 30> ADD EXTTRAIL/RMTTRAIL D:\app\win10\ogg\install\dirdat\et, EXTRACT PUMP_SO
    

    3、ERROR OGG-01031 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Output file D:\app\win10\ogg\install\dirdat\et000000 is not in any allowed output directories.).

    image.png

    原因:从ogg12.2之后,如果远端队列文件默认不是在dirdat目录下,则需要在远端(目标服务器)OGG的 GLOBALS 文件中添加如下参数:

    allowOutputDir D:\app\win10\ogg\install\dirdat
    

    重启远端mgr进程之后,再启动本地传输进程,此时,可以正常进行数据投递,问题解决。
    4、ERROR OGG-01224 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: TCP/IP error 10061 (由于目标计算机积极拒绝,无法连接。), endpoint:192.168.2.85:7500.
    重启目标端mgr服务或问题3引发的
    5、ggsci执行错误

    [oracle@doudou-NAS ~]$ ggsci
    
    ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
    

    解决方法:export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/opt/ogg

    相关文章

      网友评论

        本文标题:在Windows中 基于Oracle GoldenGate (O

        本文链接:https://www.haomeiwen.com/subject/hogxdqtx.html