高端网站设计培训机构靠谱的seo收费
一、环境准备
*项目* | *源环境* | *目标环境* |
---|---|---|
操作系统 | CentOS Linux release 7.6 | CentOS Linux release 7.6 |
IP地址 | 192.168.3.92 | 192.168.3.168 |
数据库及版本 | SQLserver 2016 | Oracle 11.2.0.4.0 |
GoldenGate用户 | ogg | ogg |
GoldenGate版本 | 12.3.0.2.0 | 12.3.0.2.0 |
二、OGG架构
GoldenGate v11 能够在异构平台之间实现事务级的复制。它支持 Oracle Database、IBM DB2、Microsoft SQL Server、MySQL、Teradata 以及众多其他平台。(它还支持通过通用 ODBC 驱动程序进行访问)
我们需要熟悉的最重要的组件是 Extract 和 Replicat 进程。Extract 进程运行在源系统上,负责捕获数据更改。Replicat 运行在目标计算机上,负责将更改应用于目标数据库。
以上是 Extract 进程的两个常见配置。所谓的“初始加载”用于用源数据的精确副本填充目标数据库(即 Extract 从源数据库提取所有数据并且通常只运行一次)。然后就可以进行“更改同步”。在“更改同步”配置中,Extract 不间断地监视源数据库并即时捕获所有更改。
三、OGG安装
在Oracle用户下新建gg目录,
[oracle@szzf-----0024 oracle]$ mkdir gg[oracle@szzf-----0024 gg]$ export GGATE=$ORACLE_BASE/gg[oracle@szzf-----0024 gg]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg
新建完成后设置环境变量:
完成该操作后,需要设置 PATH 和 LD_LIBRARY_PATH 环境变量。
查看环境变量参数:[oracle@szzf-----0024 ~]$ cat .bash_profile
上传安装包至服务器:
[oracle@szzf-----0024 opt]$ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/oracle/gg
进入相应的目录:
[oracle@szzf-----0024 gg]$ ./ggsci
GGSCI (szzf-----0024.novalocal) 2> create subdirs
配置manager端口号
启动mgr进程:
查看进程是否正常:
源端replicat进程配置
SPECIALRUN 参数定义一个初始加载进程(这是不使用检查点的一次性加载)。文件中的下一行指示 Replicat 进程在加载完成后终止。
接下来提供了数据库用户和口令、提取文件以及表定义。最后一个参数 MAP 指示 Replicat 将表 dbo.* 重新映射到 GG.*。
四、初始提取和加载
源端:
C:\Users\Administrator\Desktop\V34342-01>extract paramfile dirprm\inext.prm reportfile dirrpt\inext.rpt************************************************************************* Running with the following parameters *************************************************************************2025-02-26 09:46:55 INFO OGG-03035 Operating system character set identified as GBK. Locale: zh_Hans_CN, LC_ALL:.2025-02-26 09:46:55 INFO OGG-02696 NON-ANSI SQL parameter syntax is used for parameter parsing.2025-02-26 09:46:55 INFO OGG-01017 Wildcard resolution set to IMMEDIATE because SOURCEISTABLE is used.2025-02-26 09:46:55 INFO OGG-03036 Database character set identified as windows-936. Locale: zh_Hans_CN.2025-02-26 09:46:55 INFO OGG-03037 Session character set identified as GBK.Wildcard TABLE resolved (entry dbo.*):TABLE dbo.systranschemas;Using the following key columns for source table dbo.systranschemas: startlsn.Wildcard TABLE resolved (entry dbo.*):TABLE dbo.t1;Using the following key columns for source table dbo.t1: id.22025-02-26 09:46:55 INFO OGG-01815 Virtual Memory Facilities for: COManon alloc: MapViewOfFile anon free: UnmapViewOfFilefile alloc: MapViewOfFile file free: UnmapViewOfFiletarget directories:c:\gg\dirtmp.CACHEMGR virtual memory values (may have been adjusted)CACHESIZE: 2GCACHEPAGEOUTSIZE (normal): 4MPROCESS VM AVAIL FROM OS (min): 3.94GCACHESIZEMAX (strict force to disk): 3.36G2025-02-26 09:46:55 WARNING OGG-01842 CACHESIZE PER DYNAMIC DETERMINATION (2G)LESS THAN RECOMMENDED: 64G (64bit system)vm found: 3.94GCheck swap space. Recommended swap/extract: 128G (64bit system).Database Version:Microsoft SQL ServerVersion 10.00.1600ODBC Version 03.80.0000Driver Information:SQLSRV32.DLLVersion 06.01.7601ODBC Version 03.522025-02-26 09:46:55 INFO OGG-01478 Output file /u01/app/oracle/gg/dirdat/exis using format RELEASE 11.2.2025-02-26 09:46:55 INFO OGG-01226 Socket buffer size set to 27985 (flush size 27985).Processing table dbo.systranschemasProcessing table dbo.t1***********************************************************************\* ** Run Time Statistics ** ************************************************************************Report at 2025-02-26 09:48:55 (activity since 2025-02-26 09:48:55)Output to /u01/app/oracle/gg/dirdat/ex:From Table dbo.t1: \# inserts: 4 \# updates: 0 \# deletes: 0 \# discards: 0
运行时统计信息显示已成功提取 4 行数据。
目标端:
[oracle@szzf-----0024 gg]$ ./replicat paramfile dirprm/inload.prm*********************************************************************** Oracle GoldenGate Delivery for OracleVersion 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBOLinux, x64, 64bit (optimized), Oracle 11g on 20:37:31Copyright (C), Oracle and/or its affiliates. All rights reserved. Starting at 2025-02-26 09:49:42***********************************************************************Operating System Version:LinuxVersion #1 SMP Release 3.10.0-957.el7.x86_64Node: szzf-----0024.novalocalMachine: x86_64 soft limit hard limitAddress Space Size : unlimited unlimitedHeap Size : unlimited unlimitedFile Size : unlimited unlimitedCPU Time : unlimited unlimitedProcess id: 29131Description: ************************************************************************* Running with the following parameters *************************************************************************2025-02-26 09:49:42 INFO OGG-03035 Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.SPECIALRUNEND RUNTIMEUSERID gg, PASSWORD **2025-02-26 09:49:42 INFO OGG-03501 WARNING: NLS_LANG environment variable is invalid or not set. Using operating system character set value of AL32UTF8.EXTFILE /u01/oracle/gg/dirdat/exSOURCEDEFS /u01/oracle/gg/dirdef/emp.defSource Context :SourceModule : [er.init]SourceID : [/scratch/aime1/adestore/views/aime1_adc4150256/oggcore/OpenSys/src/app/er/init.cpp]SourceFunction : [get_infile_params]SourceLine : [1573]ThreadBacktrace : [7] elements : [/u01/oracle/gg/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x7fc852d3270e]] : [/u01/oracle/gg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x2cc) [0x7fc852d2b6ac]] : [/u01/oracle/gg/libgglog.so(_MSG_ERR_STARTUP_PARAMERROR_ERRORTEXT(CSourceContext*, char const*, CMessageFactory::MessageDisposition)+0x31) [0x7fc852d1eb8d]] : [./replicat(get_infile_params(time_elt_def*, time_elt_def*, char**)+0x3c23) [0x528a43]] : [./replicat(main+0x117) [0x54c5e7]] : [/lib64/libc.so.6(__libc_start_main+0xf5) [0x7fc84d10c3d5]] : [./replicat(__gxx_personality_v0+0x31a) [0x4c0c6a]]
查看情况:
SQL> select id, first_name from t1;ID FIRST_NAME
---------- --------------------------------------------------1 Dave2 Chris3 David4 Shawn
EMP 表现在包含原先在 SQL Server 上插入的所有记录的副本。
通过上面的配置source端和target的数据完全一致。
五、实时数据捕获配置
源端:
Oracle Database 现在已有了 SQL Server 的 EMP 表的一个精确副本,可以创建实时捕获配置了。我们将 Extract 和 Replicat 进程配置成一直运行并不断传输/应用 EMP 表的更改。
为了实现这一新配置,需要为提取和复制创建新的参数文件。不过首先必须在 SQL Server 上另外执行两个步骤:确认数据库已设置为完全恢复,然后执行 EMP 数据库的完整数据库备份。如果执行完整备份失败,将阻碍 Extract 进程捕获实时数据更改。
通过右键单击 EMP 数据库,选择 属性 并检查 Recovery model 的值,可以轻松检查该数据库是否处于完全恢复模式。
执行完整备份也只需几次单击即可完成。右键单击 EMP 数据库,选择 任务,然后选择 备份。这将启动 Back Up Database 对话框。确认 Backup type 配置为 Full,然后单击 OK。
备份已完成:
创建一个挖掘事务日志的新 extract 组,将其命名为 MSEXT。然后设置数据更改应写入的目标 (/u01/app/oracle/gg/dirdat/ms)。
GGSCI (szzf-----0026) 1> ADD EXTRACT MSEXT, TRANLOG, BEGIN NOWEXTRACT added.GGSCI (szzf-----0026) 2> ADD RMTTRAIL /u01/oracle/gg/dirdat/ms, EXTRACT MSEXTRMTTRAIL added.
添加一个新的配置文件:
GGSCI (szzf-----0026) 3> EDIT PARAMS MSEXTGGSCI (szzf-----0026) 4> view PARAMS MSEXTEXTRACT MSEXTSOURCEDB db01 userid sa,password 123TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINTRMTHOST 10.211.3.168, MGRPORT 7809RMTTRAIL /u01/oracle/gg/dirdat/msTABLE dbo.*;GGSCI (szzf-----0026) 5>
目标端:
这里不同的是我们省略了 SOURCEISTABLE 参数并引入一个新参数:TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT。此选项告诉 Extract 进程定期检查和删除 CDC 捕获作业,从而提高性能并减小捕获数据所占用的空间。
源计算机上所需要的配置就是这些。我们转到目标计算机去配置复制。
在 Linux 系统上,首先需要创建一个检查点表。检查点用于存储 Extract 和 Replicat 进程的当前读/写位置。它们可以防止数据丢失并确保进程可以进行故障恢复(例如,如果源和目标计算机之间的网络暂时中断)。通过在目标机上发出 ADD CHECKPOINT 命令创建一个表,用来保存检查点信息。
GGSCI (szzf-----0024.novalocal) 3> DBLOGIN USERID gg, PASSWORD ggSuccessfully logged into database.GGSCI (szzf-----0024.novalocal) 4> GGSCI (szzf-----0024.novalocal) 4> ADD CHECKPOINTTABLE gg.chkptSuccessfully created checkpoint table gg.chkpt.GGSCI (szzf-----0024.novalocal) 5>
GGSCI (szzf-----0024.novalocal) 5> ADD REPLICAT MSREP, EXTTRAIL /u01/oracle/gg/dirdat/ms, CHECKPOINTTABLE gg.chkptREPLICAT added.
配置现已完成。下面我们来启动 Extract 和 Replicat 执行一些测试
六、启动并测试联机事务复制
源端:
GGSCI (szzf-----0026) 5> START EXTRACT MSEXTSending START request to MANAGER ('GGSMGR') ...EXTRACT MSEXT startingGGSCI (szzf-----0026) 6> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGEXTRACT STOPPED MSEXT 00:00:00 00:09:34GGSCI (szzf-----0026) 7>GGSCI (szzf-----0026) 7>
目标端:
GGSCI (szzf-----0024.novalocal) 8> START REPLICAT MSREPSending START request to MANAGER ...REPLICAT MSREP startingGGSCI (szzf-----0024.novalocal) 9> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNING REPLICAT STOPPED MSREP 00:00:00 00:03:48 GGSCI (szzf-----0024.novalocal) 10>