当前位置:   article > 正文

Oracle GoldenGate 12C跨平台同步Oracle 12C_oracle 12c pdb ogg,oracle 12c goldengate 12c pdb1,

oracle 12c pdb ogg,oracle 12c goldengate 12c pdb1,pdb2 in same container 数


Goldengate 12c跨平台同步Oracle 12C

GoldenGate 12C源端为Linux 6.4和目标端为window2012R2的数据同步(单向,单实例)

1.对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;

2.以交易为单位复制,保证交易一致性:只同步已提交的数据;

3.高性能,智能的交易重组和操作合并,使用数据库本地接口访问,并行处理体系,灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等。

1 环境准备

1.1 环境信息

角色操作系统IP地址Oracle数据库版本数据库SIDGoldengate(OGG)版本
源端Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.6.32-358.el6.x86_64192.168.11.223Version12.2.0.1.0PRODVersion 12.3.0.1.4
目标端Windows Server2012 R2 Datecenter [版本 6.3.9600])192.168.11.212Version12.1.0.1.0orcl12cVersion 12.3.0.1.5

1.2 环境平台准备

操作系统,数据库部署不详细写,各自安装,不会百度一大堆

1.3 环境核查(源+目标)

在生产环境中要检查很多东西,不列举。实验中都是新环境,就检查下下面两项。

1.3.1 检查监听

提示:有网上资料说,源端和目标端的监听要一样,在监听文件(tnsnames.ora,listener.ora)需要配置成一样,也就在监听文件下互相加监听内容,这个没有测试,实验中只是各种的监听状态正常。

源端:

检查tnsnames.ora

vi tnsnames.ora

PROD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PROD)
    )
  )

LISTENER_PROD =
  (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
  
  注意:HOST=[主机名或主机本地IP]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

检查listener.ora

listener.ora:用于服务端,用于提示服务端监听哪些实例。

cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

检查监听状态:lsnrctl status

[oracle@enmoedu1 admin]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:01

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                03-JAN-2023 16:03:17
Uptime                    0 days 0 hr. 34 min. 43 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/enmoedu1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=enmoedu1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=enmoedu1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/PROD/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PROD.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
Service "PRODXDB.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
The command completed successfully
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

ping测试:

[oracle@enmoedu1 admin]$ tnsping PROD
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:40
Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK (0 msec)

监听相关文件存放ORACLE_HOME/network/admin/目录下listener.ora , tnsnames.ora ;[ORACLE_HOME根据个人部署路径,不一定和实验一样]
cd $ORACLE_HOME/network/admin/
[oracle@enmoedu1 admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

目标端:

检查tnsnames文件配置:

ORCL12C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl12c)
    )
  )

LISTENER_ORCL12C =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  
  注意:HOST = [主机名,主机本地IP]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

检查listener.ora 文件配置

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

检查监听状态:lsnrctl status

PS C:\Users\Administrator> lsnrctl status

LSNRCTL for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:07

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 12.1.0.1.0 - Production
启动日期                  05-1月 -2023 17:35:19
正常运行时间              0 天 4 小时 42 分 47 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          C:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
监听程序日志文件          C:\app\oracle\diag\tnslsnr\WIN-812T4TNGO4M\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-812T4TNGO4M)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=WIN-812T4TNGO4M)(PORT=5500))(Security=(my_wallet_directory=C:\APP\ORACLE\ad
min\orcl12c\xdb_wallet))(Presentation=HTTP)(Session=RAW))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl12c" 包含 1 个实例。
  实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl12cXDB" 包含 1 个实例。
  实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

ping测试:

PS C:\Users\Administrator> tnsping orcl12c

TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:46

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

已使用的参数文件:
C:\app\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)
 (SERVICE_NAME = orcl12c)))
OK (10 毫秒)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

1.3.2 检查字符集

主要两个数据库的字符集设置是否一致,不一致的话先进行修改(看资料说OGG12C字符集不一致也是可以同步)

它的格式如下:NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性

其中:
Language: 指定服务器消息的语言,
territory: 指定服务器的日期和数字格式,
charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK

源端:

SYS@PROD> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
  • 1
  • 2
  • 3
  • 4
  • 5

目标:

SQL> select sys_context('userenv', 'language') from dual;

SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  • 1
  • 2
  • 3
  • 4
  • 5

修改字符集:
本实验修改源端字符集,在生产环境下,如果目标库是新建的,建议修改目标端。

Linux 下切换到安装数据库的用户下,本次实验是oracle,切换到Oracle用户下,添加环境变量。

su - oracle
vim ~/.bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
:wq
  • 1
  • 2
  • 3
  • 4

执行 source ~/.bash_profile 使之生效

reboot重启系统

登录数据库确认字符集修改是否成功:

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
  • 1
  • 2
  • 3
  • 4
  • 5

上面的方法只修改前面语言,地域部分,字符集没有修改成想要的。继续下面的步骤:

管理员身份登录数据库

连接数据库软件:

sqlplus /nolog
  • 1

管理员连接:

SQL> connect /as sysdba
  • 1

关闭数据库:

SQL> shutdow immediate
  • 1

挂载方式启动

SQL> startup mount
  • 1

修改会话,进程:

SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
  • 1
  • 2
  • 3

打开数据库:

SQL> alter database open;
  • 1

修改字符集:

SQL> alter database character set  internal_use ZHS16GBK;
  • 1

关闭数据库:

SQL> shutdown immediate;
  • 1

打开数据库,重启

SQL> startup
  • 1

再次确认字符集:

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  • 1
  • 2
  • 3
  • 4
  • 5

Windows 2012添加环境变量,修改注册表(实验中未修改windows,记录备用)

添加环境变量:

选中【我的电脑】——右键——【高级系统设置】——【环境变量】——【系统变量】

新建变量:NLS_LANG 值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

在这里插入图片描述

修改注册表:

win+R,输入regedit,进入注册表;找到以下路径HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_OraDB12Home1
(注意:KEY_OraDB12Home1与自己要修改的数据库对应)
找到NLS_LANG,
在这里插入图片描述

右键,修改数值,修改为客户端/服务器对应的字符集;保存,关闭

重启系统

2 Goldengate(OGG) 安装(源+目标)

goldengate12.2支持的版本是oracle11.2,oracle12c需要goldengate12.3以上版本
G o l d e n g a t e 12.3 s u p p o r t s O r a c l e ≥ 12.2.0.1 G o l d e n g a t e 12.2 s u p p o r t s O r a c l e ≥ 11.2.0.1 G o l d e n g a t e 12.1 s u p p o r t s O r a c l e ≥ 11.1.0.6 G o l d e n g a t e 11.2 s u p p o r t s O r a c l e ≥ 10.2.0.4 F o r e a r l i e r d a t a b a s e v e r s i o n s ( 8 i ( D M L o n l y ) , 9 i − 11.1 ) u s e G o l d e n g a t e 10.4 Goldengate 12.3 supports Oracle \geq 12.2.0.1\\ Goldengate 12.2 supports Oracle \geq 11.2.0.1\\ Goldengate 12.1 supports Oracle \geq 11.1.0.6\\ Goldengate 11.2 supports Oracle \geq 10.2.0.4\\ For earlier database versions(8i(DML only),9i-11.1)use Goldengate10.4 Goldengate12.3supportsOracle12.2.0.1Goldengate12.2supportsOracle11.2.0.1Goldengate12.1supportsOracle11.1.0.6Goldengate11.2supportsOracle10.2.0.4Forearlierdatabaseversions(8i(DMLonly),9i11.1)useGoldengate10.4

2.1 图形化安装

2.1.1 Linux环境

登录oracle用户创建software,ogg目录

mkdir software --软件包存放位置

mkdir ogg --ogg安装位置

软件包上传/home/oracle/software/目录下,解压

[oracle@enmoedu1 ~]$ cd /home/oracle/software/
[oracle@enmoedu1 software]$ unzip V975837-01.zip 
  • 1
  • 2

解压完,进行安装

[oracle@enmoedu1 software]$ cd fbo_ggs_Linux_x64_shiphome/Disk1/
[oracle@enmoedu1 Disk1]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 14952 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4061 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-01-07_10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行./runInstaller命令后,弹出图形界面

选择12c,next
在这里插入图片描述

选择ogg安装目录和数据库home目录,Start Manager前面勾“✔”是Manager进程ogg安装完成就自动启动。next

在这里插入图片描述

install进行安装

在这里插入图片描述

正在安装

在这里插入图片描述

完成安装,close

在这里插入图片描述

2.1.2 windows环境

软件包可以存放任意目录下

在c:\app下新建ogg目录 --ogg安装目录

安装步骤参考Linux步骤,目录选择自己规划的目录。

2.2 静默安装(Linux环境)

2.2.1 应答文件参数修改

有些时候我们没有图形化界面得时候就,只能用命令行得方式去安装OGG这时候就需要用到静默安装,静默安装需要配置应答文件,我将ogg安装文件解压到了/home/oracle/software目录下了,应答文件在OGG安装文件解压后的目录里(/home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp)


####################################################################
## Copyright(c) Oracle Corporation 2017. All rights reserved.     ##
##                                                                ##
## Specify values for the variables listed below to customize     ##
## your installation.                                             ##
##                                                                ##
## Each variable is associated with a comment. The comment        ##
## can help to populate the variables with the appropriate        ##
## values.                                                        ##
##                                                                ##
## IMPORTANT NOTE: This file should be secured to have read       ##
## permission only by the oracle user or an administrator who     ##
## own this installation to protect any sensitive input values.   ##
##                                                                ##
####################################################################

#-------------------------------------------------------------------------------
# Do not change the following system generated value. 
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v12_1_2


################################################################################
##                                                                            ##
## Oracle GoldenGate installation option and details                          ##
##                                                                            ##
################################################################################

#-------------------------------------------------------------------------------
# Specify the installation option.
# Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and
#         ORA11g for installing Oracle GoldenGate for Oracle Database 11g 
#-------------------------------------------------------------------------------
#安装OGG得版本  ORA11g是11g, ORA12c是12c
INSTALL_OPTION=ORA12c

#-------------------------------------------------------------------------------
# Specify a location to install Oracle GoldenGate
#-------------------------------------------------------------------------------
#OGG安装路径
SOFTWARE_LOCATION=//home/oracle/ogg

#-------------------------------------------------------------------------------
# Specify true to start the manager after installation. 
#-------------------------------------------------------------------------------
#是否开启mgr进程 true开启 false 不开启
START_MANAGER=true

#-------------------------------------------------------------------------------
# Specify a free port within the valid range for the manager process.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
#mgr进程得端口号
MANAGER_PORT=7809

#-------------------------------------------------------------------------------
# Specify the location of the Oracle Database.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
#ORACLE_HOME的路径
DATABASE_LOCATION=/u01/app/oracle/product/12.2.0/dbhome_1


################################################################################
##                                                                            ##
## Specify details to Create inventory for Oracle installs                    ##
## Required only for the first Oracle product install on a system.            ##
##                                                                            ##
################################################################################

#-------------------------------------------------------------------------------
# Specify the location which holds the install inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
#Oracle产品目录地址oraInventory
INVENTORY_LOCATION=/u01/app/oraInventory

#-------------------------------------------------------------------------------
# Unix group to be set for the inventory directory.  
# This parameter is not applicable if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
#用户组 一般为Oracle的用户组
UNIX_GROUP_NAME=oinstall
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

2.2.2 开始静默安装ogg

应答文件编辑完成,开始安装

--进入OGG安装文件解压后的目录
cd /home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1
--静默安装命令格式
./runInstaller -silent -responseFile [应答文件绝对路径]
--静默安装执行语句
./runInstaller -silent -responseFile /home/oracle/software/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.3 添加环境变量

实验中安装ogg使用Oracle目录,登录oracle用添加环境变量,ogg安装可以建立独立的用户,需要和oracle用户在同一个组。

2.31 Linux配置环境变量

注:配置环境变量,才能正常进ggsci

oracle用户vi .bash_profile

vi .bash_profile
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export OGG_HOME=/home/oracle/ogg
export PATH=$OGG_HOME:$PATH

--文件生效
. .bash_profile 或者 source .bash_profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.3.2 windows配置环境变量

右击“这台电脑”—>选择“属性”—>选择“高级系统设备”—>选择“环境变量”—>系统变量—>新建

(1)设置OGG_HOME

变量名称:OGG_HOME

变量值:C:\app\ogg

(2)设置LD_LIBRARY_PATH

变量名称:LD_LIBRARY_PATH

变量值: O R A C L E H O M E / l i b − − 前提是设置过 ORACLE_HOME/lib --前提是设置过 ORACLEHOME/lib前提是设置过ORACLE_HOME才可以这样使用

(3)添加PATH

选择path—>编辑—>在“Path”的变量值文本框的最后面先加入一个分号“;”,添加内容 O G G H O M E : OGG_HOME: OGGHOME:PATH,确定。 —前提设置过$OGG_HOME才可以这样使用。

2.4 子目录说明

安装完成,进到ogg安装目录检查是否有以下子目录:

dirprm: 用于存放各个进程进程参数文件
dirrpt: 用于存放各个进程报告
dirchk: 用于存放各个进程的检查点
dirpcs: 用于存放各个正在运行的进程信息
dirsql:
dirdef:
dirdat: 用于存放数据队列文件
dirtmp:
dirout:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果没有以上子目录,进ggscli环境下创建GoldenGate子目录 (ogg 11g以前才需要手动创建子目录,12c以后的版本会自动创建,安装完成检查下)

2.4.1 Linux环境进ggsci

以oracle用户进入goldengate目录下执行./ggsci或ggsci进入命令行界面(好像说是必须到goldengate安装目录)

[oracle@enmoedu1]$cd ogg/
[oracle@enmoedu1 ogg]$ ./ggsci 
或者
[oracle@enmoedu1 ogg]$ ggsci
GGSCI>create subdirs          ---该命令会在OGG安装目录下建立若干子目录,其中几个主要目录如下所示:
  • 1
  • 2
  • 3
  • 4
  • 5

2.4.2 windows环境进ggsci

打开C盘—app—ogg下找到ggsci右键运行

或者

win+r —运行----输入cmd----cd c:\app\ogg进到ogg安装目录执行.\ggsci

C:\Users\Administrator>cd c:\app\ogg
c:\app\ogg>ggsci.exe
或
c:\app\ogg>.\ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.5 OGGCORE_12.3.0.1.0_PLATFORMS_180501.2124
Windows x64 (optimized), Oracle 12c on May  4 2018 04:19:57
Operating system character set identified as GBK.

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.


GGSCI>create subdirs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.5 Goldengate(OGG)卸载

2.5.1 Linux环境

ogg安装目录下找到deinstall.sh文件,执行./deinstall.sh进行卸载(ogg进程停不停都可以,个人建议停掉)

/home/oracle/ogg/deinstall

[oracle@enmoedu1 deinstall]$ ./deinstall.sh

ALERT: Ensure all the processes running from the current Oracle Home are shutdown prior to running this software uninstallation script.

Proceed with removing Oracle GoldenGate home: /home/oracle/ogg (yes/no)? [no] 输入yes    --提示是否删除ogg home目录

Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 4041 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-01-07_06-05-09PM. Please wait ...Oracle Universal Installer, Version 12.2.0.1.4 Production
Copyright (C) 1999, 2016, Oracle. All rights reserved.

Starting deinstall


Deinstall in progress (Saturday, January 7, 2023 6:05:13 PM CST)
............................................................... 100% Done.

Deinstall successful
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

完成卸载

2.5.2 Windows环境

ogg安装目录下找到deinstall二进制文件,右键打开执行或者双击执行

打开C:\app\ogg\deinstall\,执行deinstall二进制文件,会弹出cmd对话框,显示内容如下:

ALERT: Ensure all the processes running from the current Oracle Home are shutdow
n prior to running this software uninstallation script.

Proceed with removing Oracle GoldenGate home: C:\app\ogg (yes/no)? [no] yes
  • 1
  • 2
  • 3
  • 4

3 OGG配置

3.1 数据库参数调整(源+目标)

-建立OGG需要从数据字典读取表结构
-如果Oracle日志中没有足够信息,则需通过flash back或者直接读取数据库记录(列如,CLOB/BLOG/BINARY等)

OGG数据库用户权限

-CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE USERS;
-GRANT CONNECT TO goldengate;
-GRANT CREATE SESSION TO goldengate;
-GRANT ALTER SESSION TO goldengate;
-GRANT RESOURCE TO goldengate;
-GRANT SELECT ANY DICTIONARY TO goldengate;
-GRANT SELECT ANY TABLE TO goldengate;
-GRANT FLASHBACK ANY TABLE TO goldengate;
-GRANT ALTER ANY TABLE TO goldengate;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

注:实验中没有做详细授权,直接给dba权限

3.1.1 开启数据库归档日志

--首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sqlplus / as sysdba进入sql模式)

查看数据库是否开启归档
SYS@PROD> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
Oldest online log sequence     3
Current log sequence           5
SYS@PROD> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

--非归档模式
--Database log mode              No Archive Mode
--Automatic archival             Disabled

--归档模式
--Database log mode              Archive Mode
--Automatic archival             Enabled

开启归档模式
--先关闭数据库
shutdown immediate;
--启动数据库到mount状态
startup mount;
--启用归档模式
alter database archivelog;
--启动数据库
alter database open;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

3.1.2 开启强制日志记录和最小附加日志

--查看数据库是否强制日志(force_logging)和开启最小附加日志(supplemental_log_data_min)
select force_logging, supplemental_log_data_min from v$database;
--YES 开启;NO 未开启

--开启强制日志
alter database force logging;
--开启最小附加日志
alter database add supplemental log data;
--切换日志
alter system switch logfile;

--确认强制日志(force_logging)和开启最小附加日志(supplemental_log_data_min)开启成功
 select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE     SUPPLEME FORCE_LOGGING
------------ -------- ---------------------------------------
ARCHIVELOG   YES      YES
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.1.3 开启OGG支持

调整enable_goldengate_replication参数

注:数据库修改参数,oracle 11.2.0.4.0之前和12.1.0.1不需要设置enable_goldengate_replication参数:

确认enable_goldengate_replication参数是否开启,–YES 开启;–NO 未开启

show parameter goldengate
  • 1

若enable_goldengate_replication参数没有开启,使用以下命令

alter system set enable_goldengate_replication=true scope=both;
  • 1

3.1.4 创建goldengate用户授DBA权限

实验表空间,临时表空间都默认

--创建用户
SYS@PROD> create user goldengate identified by goldengate;

User created.

--授予DBA权限
SYS@PROD>  grant dba to goldengate;

Grant succeeded.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.1.5 创建goldengate用户表

注:表结构源和目标表结构一致,实验中是源和目标都是新建

Linux环境:

SYS@PROD> conn goldengate/goldengate
Connected.
GOLDENGATE@PROD> create table table1(id number(8), name varchar2(20));

Table created.
  • 1
  • 2
  • 3
  • 4
  • 5

windows 环境:

SQL> conn goldengate/goldengate
Connected.
SQL> create table table1(id number(8), name varchar2(20));

Table created.
  • 1
  • 2
  • 3
  • 4
  • 5

3.2 Oracle Goldengate(OGG)进程配置

3.2.1 windows 环境(目标端 )

Windows Server2012 R2 Datecenter [版本 6.3.9600])

3.2.1.1 MGR进程配置

注:在安装OGG软件,start manga 前面打勾“✔”,ogg运行mgr进程就是running,若没有需要手动开启

进ggsci

配置mgr进程参数:

GGSCI>edit param mgr (会打开记事本,输入下面内容,保存,关闭记事本)
port 7809
  • 1
  • 2

启动mgr进程

GGSCI>start mgr
  • 1

补充:将MGR进程注册到服务中(windows系统)

先停止所有进程:
GGSCI>stop mgr

手动指定服务名GGSMGR
GGSCI>edit params./GLOBALS
MGRSERVNAME GGSMGR

C:\Users\Administrator>cd c:\app\ogg

c:\app\ogg>.\install addservice 或者 .\install.exe addservice

删除MGR服务
c:\app\ogg>.\install deleteservice
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
3.2.1.2 添加检查表

说明: 当我们在 GLOBALS 文件里指定了默认的 checkpoint之后,新的 Replicat groups 在创建时会自动使用这个参数,不需要其他指令。

3.2.1.2.1 编辑全局配置文件
GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint     --不使用检查表不需要配置参数
ALLOWOUTPUTDIR C:\app\ogg\dirdat    --磁盘符C必须大写
GGSCI> exit
  • 1
  • 2
  • 3
  • 4
  • 5

保存退出。
这里需要退出 ggsci 终端

3.2.1.2.2 添加checkpoint

重新进ggsci

c:\app\ogg>ggsci.exe
  • 1

登录数据库

GGSCI> dblogin userid goldengate,password goldengate
  • 1

添加检查表

GGSCI> add checkpointtable goldengate.checkpoint
GGSCI> exit
  • 1
  • 2
3.2.1.3 配置目标端 Replicat进程组

进ggsci.exe

c:\app\ogg>ggsci.exe
  • 1

编辑配置文件

GGSCI>edit params repa   打开的文本文件中增加如下参数:
replicat repa
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
assumetargetdefs
reperror default,discard

-- 磁盘符C必须大写
discardfile C:\app\ogg\dirrpt\repa.dsc,append,megabytes 50
map goldengate.*, target goldengate.*;     (具体表查询快些)

--源目标表名称,结构一致才可以*,若不是需要写具体表名称,列如:
map goldengate.table1, target goldengate.table2; 

参数说明:
setenv:设置环境变量
assumetargetdefs:两端数据结构一致使用此参数
reperror:定义出错以后进程的响应一般分为两种:abend: 即一旦错误后立即停止复制,此为缺省配置;discard: 出现错误后继续复制,只是把错误的数据放到 discard 文件中。
discardfile:定义 discardfile 文件位置,如果处理中由于记录出错会写入到此文件中。
Megabytes: 指定队列大小,这里我设置的是 50M
--dynamicresolution:(此命令在ogg12c不需要) 
map:用于指定源端与目标端表的映射关系
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

添加复制进程

--磁盘符必须大写
GGSCI>add replicat repa,exttrail C:\app\ogg\dirdat\ra, CHECKPOINTTABLE goldengate.checkpoint

--不使用检查表
GGSCI>add rep repa, exttrail C:\app\ogg\dirdat\ra, nodbcheckpoint
  • 1
  • 2
  • 3
  • 4
  • 5

注:
rep开头表示replicat进程,repa是进程名称

exttrail:表示要抽取数据队列,注意是目标端的队列位置

nodbcheckpoint: 不使用检查点

启动进程repa进程

GGSCI>start replicat repa
  • 1

检查mgr,repa进程状态

GGSCI> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     REPA        00:00:00      00:00:04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2.2 Linux环境-同步DML(源端)

配置环境变量(才能正常打开ggsci),如果在前面步骤已经设置,此时就不需要设置。

oracle用户vi .bash_profile

vi .bash_profile
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export OGG_HOME=/home/oracle/ogg
export PATH=$OGG_HOME:$PATH

--文件生效
. .bash_profile 或者 source .bash_profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3.2.2.1 MGR进程配置

以oracle用户进入goldengate目录下执行./ggsci进入命令行界面(好像说是必须到goldengate安装目录)

[oracle@enmoedu1]$cd ogg/
[oracle@enmoedu1 ogg]$ ./ggsci 
或者
[oracle@enmoedu1 ogg]$ ggsci

GGSCI>edit param mgr (会打开一个vi编辑窗口,按i键输入以下内容)
port 7809

按esc键
shift+:
wq!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

启动mgr进程

GGSCI>start mgr
  • 1

注:在图形化界面安装OGG软件,start manga 前面的打勾“✔”,ogg运行mgr进程就是running,若没有需要手动开启

3.2.2.2 Extract 进程组配置

编辑 exta 配置文件(exta进程名称,可以自定义)

GGSCI>edit params exta     (输入 i 进入编辑模式,在文件中增加如下参数)
extract exta
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
exttrail /home/oracle/ogg/dirdat/la
table goldengate.*;    (具体表查询快些)


参数说明:
extract exta: 定义 extract 进程别名
dynamicresolution  (12c不需要此参数)
setenv: 设置环境变量
userid: 登录数据库
exttrail: 指定本地 trail 文件地址
table: 定义同步的表 goldengate.* 表示 同步 goldengate 用户下的所有表
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

添加抽取进程

GGSCI>add extract exta, tranlog,begin now
  • 1

添加本地 trail 文件
添加extract进程的trail文件配置
其中megabytes表示队列大小,这里设置的10m

GGSCI 6>add exttrail /home/oracle/ogg/dirdat/la,extract exta
或
GGSCI 6>add exttrail /home/oracle/ogg/dirdat/la,extract exta,megabytes 10
  • 1
  • 2
  • 3

说明:
创建本地 trail 文件,主 extract 进程负责写这部分文件,pump 负责把这部分文件传到目标服务器端。

在GGSCI命令行中登录数据库,为所有要复制的数据表添加trandata

GGSCI>dblogin userid goldengate, password goldengate

GGSCI>add trandata goldengate.*
或者
add trandata goldengate.table1   (具体表查询快些)
  • 1
  • 2
  • 3
  • 4
  • 5

注册exta进程到数据库

GGSCI>REGISTER EXTRACT exta DATABASE
  • 1

启动 exta 服务

GGSCI >start extract exta
  • 1

查看状态

GGSCI >info all
  • 1
3.2.2.3 Pump 传输进程组配置

编辑 pump 配置文件

GGSCI> edit params dpea
extract dpea
passthru
rmthost 192.168.11.212,mgrport 7809,compress
rmttrail  C:\app\ogg\dirdat\ra       (磁盘符C必须大写)
table goldengate.*;                   (具体表查询快些)


参数说明:
dynamicresolution:动态解析表名 (12c不需要此参数)
passthru:采用 pass-through 模式处理表
rmthost:目标端主机 IP,管理进程端口号,投递传输前压缩队列文件
rmttrail:目标端保存队列文件的目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

添加 pump 进程源端路径

GGSCI>add extract dpea,exttrailsource /home/oracle/ogg/dirdat/la
  • 1

添加pump 进程远程 trail 文件目标路径

GGSCI>add rmttrail C:\app\ogg\dirdat\ra,extract dpea
  • 1

说明: 指定远程 trail 文件

启动 pump 进程

GGSCI>start extract dpea
  • 1

检查进程状态:

GGSCI> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     DPEA        00:00:00      00:00:09    
EXTRACT     RUNNING     EXTA        00:00:00      00:00:01    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3.2.2.4 DML同步测试

源端和目标端同时创建表table1,实验中在3.1.5章节已经创建,不在创建。

(表提前创建好也可以,这个步骤创建也没有问题。)

3.2.2.4.1 源端执行DML操作后提交
GOLDENGATE@PROD> insert into table1 values(40,'数据工程');
GOLDENGATE@PROD> commit;

--查询下源端,数据是否成功配置
GOLDENGATE@PROD> select * from table1;

        ID NAME
---------- --------------------
        40 数据工程
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
3.2.2.4.2 目标端查看
SQL> select * from table1;

        ID NAME
---------- --------------------
        40 閺佺増宓佸銉р柤
  • 1
  • 2
  • 3
  • 4
  • 5

注:此时目标端看到是乱码,这是字符集不支持中文造成,可以修改字符集(参考1.3.2章节)。

3.2.2.4.3 查看源端exta,dpea进程统计信息

看exta进程

GGSCI> stats exta

Sending STATS request to EXTRACT EXTA ...

Start of Statistics at 2023-01-06 16:29:48.

Output to /home/oracle/ogg/dirdat/la:

Extracting from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1:

*** Total statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Daily statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Hourly statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Latest statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

End of Statistics.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

看dpea进程

GGSCI (enmoedu1) 42> stats dpea

Sending STATS request to EXTRACT DPEA ...

Start of Statistics at 2023-01-06 16:34:28.

Output to C:\app\ogg\dirdat\ra:

Extracting from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1:

*** Total statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Daily statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Hourly statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Latest statistics since 2023-01-05 17:43:48 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

End of Statistics.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
3.2.2.4.4 查看目标端repa进程统计信息
GGSCI (WIN-812T4TNGO4M) 10> stats repa

Sending STATS request to REPLICAT REPA ...

Start of Statistics at 2023-01-06 16:29:38.

Replicating from GOLDENGATE.TABLE1 to GOLDENGATE.TABLE1:

*** Total statistics since 2023-01-05 17:43:58 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Daily statistics since 2023-01-06 00:00:00 ***

        No database operations have been performed.

*** Hourly statistics since 2023-01-06 16:00:00 ***

        No database operations have been performed.

*** Latest statistics since 2023-01-05 17:43:58 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

End of Statistics.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

3.2.3 Linux环境-同步DDL(源端)

3.2.3.1 编辑全局参数

进ggsci

[oracle@enmoedu1 ogg]$ ggsci
  • 1

编辑全局参数

GGSCI> edit param ./GLOBALS   (输入 i 进入编辑模式,在文件中增加如下参数)
ggschema goldengate
  • 1
  • 2
3.2.3.2 关闭MGR,退出
GGSCI> stop mgr
GGSCI> exit
  • 1
  • 2
3.2.3.3 数据库关闭回收站

在关之前可以先看一下,如果是 on,如下图所示,则回收站是开启的

$sqlplus / as sysdba

SQL>show parameter recyclebin
  • 1
  • 2
  • 3

修改为 off

SQL>alter system set recyclebin=off deferred;
  • 1

改完需要把数据库重启一下才会生效

SQL>shutdown immediate
SQL>startup
  • 1
  • 2

再次确认是否关闭

SQL>show parameter recyclebin
  • 1
3.2.3.4 安装 DDL 对象

需要进ogg 目录

cd /home/oracle/ogg
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
  • 1
  • 2
  • 3

说明: 以下各执行如提示:Enter Oracle GoldenGate schema name,均指定用户:goldengate

SQL>@marker_setup
SQL>@ddl_setup
SQL>@role_setup
SQL>grant GGS_GGSUSER_ROLE to goldengate;
SQL>@ddl_enable
SQL>@marker_status.sql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注 1: 执行 dbmspool 包将在数据库中创建 DBMS_SHARED_POOL 包,之后 ddl_pin 包需要用到

SQL>@?/rdbms/admin/dbmspool.sql
  • 1

注 2: 执行 ddl_pin.sql 通过 dbms_shared_pool.keep 存储过程将 DDLReplication 相关对象keep 在共享池中,以保证这些对象不要 RELOAD,提升性能。

SQL>@ddl_pin.sql goldengate
  • 1
3.2.3.5 修改 exta(抽取)进程参数文件

停止 exta(抽取)进程

GGSCI> stop extract exta
  • 1

编辑配置文件

GGSCI 2> edit params exta  (输入 i 进入编辑模式,在文件中增加备注参数)
extract exta
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
exttrail /home/oracle/ogg/dirdat/la
ddl include all                    --新增参数
ddloptions addtrandata, report     --新增参数
table goldengate.*;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

启动 mgr,exta 进程

GGSCI> start mgr
GGSCI> start extract exta
  • 1
  • 2

查看 exta 进程启动情况

GGSCI 6> info extract exta
  • 1
3.2.3.6 目标端操作
3.2.3.6.1 增加goldengate用户权限
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
  • 1
  • 2
3.2.3.6.2 修改replicat进程参数文件

停止 mgr,repa进程

GGSCI>stop mgr
GGSCI>stop replicat repa
  • 1
  • 2

编辑 repa参数文件

GGSCI>edit params repa    (增加如下备注参数)
replicat repa
setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
userid goldengate,password goldengate
assumetargetdefs
reperror default,discard

-- 磁盘符C必须大写
discardfile C:\app\ogg\dirrpt\repa.dsc,append,megabytes 50
ddloptions report                                          --新增参数
ddlerror default ignore retryop maxretries 3 retrydelay 5  --新增参数
ddlerror default discard                                   --新增参数
ddlerror default ignore retryop                            --新增参数
map goldengate.*, target goldengate.*;     

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

启动 mgr, repa进程

GGSCI>start mgr
GGSCI>start replicat repa
  • 1
  • 2

查看进程是否running状态

GGSCI> info all
  • 1
3.2.3.7 DDL同步测试

本节验证源端 table1 表增加字段后,目标端自动改变。

3.2.3.7.1 添加字段前查看表结构:

源端查看:

$ sqlplus goldengate/goldengate
SQL> desc table1;
  • 1
  • 2

目标端查看:

SQL> sqlplus /nolog
SQL> conn  goldengate/goldengate
SQL> desc table1;
  • 1
  • 2
  • 3
3.2.3.7.2 源端添加字段
SQL> alter table table1 add(sex varchar2(2) default '男');
SQL>desc table1;
  • 1
  • 2
3.2.3.7.3 目标端验证
SQL> desc table1;
  • 1

看到目标端表结构和源端表结构一致。

4 实验中遇到问题记录

4.1 源端监听故障

实验源端监听有问题:

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 11:57:42

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused

监听ping测试:tnsping PROD[实例名称]

TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 11:55:02

Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD.enmoedu.com)))
TNS-12541: TNS:no listener
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

解决方案:
如果没有监听,查看监听文件

cd $ORACLE_HOME/network/admin
oracle@enmoedu1 admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora
  • 1
  • 2
  • 3

检查tnsnames.ora

tnsnames.ora:用于客户端,提示客户端从哪个监听实例连接。

oracle@enmoedu1 admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

PROD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PROD.enmoedu.com)
    )
  )

LISTENER_PROD =
  (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

问题是tnsnames.ora文件下SERVICE_NAME不对,实际数据库实例名为PROD

修改为SERVICE_NAME = PROD

vi tnsnames.ora

PROD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PROD)
    )
  )

LISTENER_PROD =
  (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

检查listener.ora

listener.ora:用于服务端,用于提示服务端监听哪些实例。

cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

lsnrctl start #开启监听

检查监听状态:lsnrctl status

[oracle@enmoedu1 admin]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:01

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                03-JAN-2023 16:03:17
Uptime                    0 days 0 hr. 34 min. 43 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/enmoedu1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=enmoedu1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=enmoedu1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/PROD/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PROD.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
Service "PRODXDB.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
The command completed successfully
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

ping测试:

[oracle@enmoedu1 admin]$ tnsping PROD

TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:40

Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK (0 msec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.2 为所有要复制的数据表添加trandata报错

执行以上命令报如下错误:
GGSCI (enmoedu1) 2> add trandata goldengate.*
ERROR: Error (1031, ORA-01031: insufficient privileges) start select in get_total_columns.

解决方案:
conn / as sysdba
SYS@PROD> grant all on sys.user$ to goldengate;

4.3 源端dpea开启失败

查看状态:

GGSCI (enmoedu1) 158> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT ABENDED DPEA 00:00:00 00:45:55
EXTRACT RUNNING EXTA 00:00:00 00:41:53

报错如下:
2022-12-28 11:41:41 ERROR OGG-01031 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 c:/app/ogg/dirdat/ra000000 is not in any allowed output directories.).

解决方案:

在目标端添加如下内容:

GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint
ALLOWOUTPUTDIR c:\app\ogg\dirdat
  • 1
  • 2
  • 3
  • 4

添加上面参数dpea进程正常开启,但是数据同步还是未成功,需要把磁盘符c修改大写C。(此处不确定端磁盘符源端和目标大写不一致,这个后面正常以后才想到的,没有实测试)

GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint
ALLOWOUTPUTDIR C:\app\ogg\dirdat
  • 1
  • 2
  • 3
  • 4

重启源端dpea进程

GGSCI>stop dpea
GGSCI>start dpea
  • 1
  • 2

重启目标repa进程

GGSCI>stop repa
GGSCI>start repa
  • 1
  • 2

4.4 设置环境变量,进ggsci报错(ogg 11g)

下面报错是安装ogg11g时候遇到,可以作为参考记录下。

[oracle@enmoedu1 ogg]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
  • 1
  • 2

解决方案:

[oracle@enmoedu1 ~]$ cd ogg/
[oracle@enmoedu1 ogg]$ ldd ggsci
        linux-vdso.so.1 =>  (0x00007fffe594d000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00000036e2c00000)
        libgglog.so => /home/oracle/ogg/./libgglog.so (0x00007f3838232000)
        libggrepo.so => /home/oracle/ogg/./libggrepo.so (0x00007f38380de000)
        libdb-5.2.so => /home/oracle/ogg/./libdb-5.2.so (0x00007f3837e3d000)
        libicui18n.so.38 => /home/oracle/ogg/./libicui18n.so.38 (0x00007f3837adc000)
        libicuuc.so.38 => /home/oracle/ogg/./libicuuc.so.38 (0x00007f38377a3000)
        libicudata.so.38 => /home/oracle/ogg/./libicudata.so.38 (0x00007f38367c7000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000036e3400000)
        libxerces-c.so.28 => /home/oracle/ogg/./libxerces-c.so.28 (0x00007f38362af000)
        libantlr3c.so => /home/oracle/ogg/./libantlr3c.so (0x00007f3836199000)
        libnnz11.so => not found            --此处没有文件目录
        libclntsh.so.11.1 => not found     --此处没有文件目录
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036f0c00000)
        libm.so.6 => /lib64/libm.so.6 (0x00000036e3800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036ef400000)
        libc.so.6 => /lib64/libc.so.6 (0x00000036e3000000)
        /lib64/ld-linux-x86-64.so.2 (0x00000036e2800000)
        [oracle@enmoedu1 ogg]$ cd $ORACLE_HOME/lib
        
[oracle@enmoedu1 lib]$ ls -l libnnz11.so
ls: cannot access libnnz11.so: No such file or directory

[oracle@enmoedu1 lib]$ ls -ald libnnz*
-rw-r--r-- 1 oracle oinstall  1928046 Nov 21  2016 libnnz12.a
-rw-r--r-- 1 oracle oinstall  6568149 Nov 21  2016 libnnz12.so
-rw-r--r-- 1 oracle oinstall 20354396 Nov 21  2016 libnnzst12.a

[oracle@enmoedu1 lib]$ ln -s /u01/app/oracle/product/12.2.0/dbhome_1/lib/libnnz12.so libnnz11.so

[oracle@enmoedu1 lib]$ ls -l libclntsh.so.11.1
lrwxrwxrwx 1 oracle oinstall 12 Jun 14  2017 libclntsh.so.11.1 -> libclntsh.so

[oracle@enmoedu1 ~]$ ln -s /u01/app/oracle/product/12.2.0/dbhome_1/lib/libclntsh.so.11.1 /home/oracle/ogg/./libclntsh.so.11.1

[oracle@enmoedu1 ogg]$ ldd ggsci
        linux-vdso.so.1 =>  (0x00007fff197ff000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00000036e2c00000)
        libgglog.so => /home/oracle/ogg/./libgglog.so (0x00007fb5efc56000)
        libggrepo.so => /home/oracle/ogg/./libggrepo.so (0x00007fb5efb02000)
        libdb-5.2.so => /home/oracle/ogg/./libdb-5.2.so (0x00007fb5ef861000)
        libicui18n.so.38 => /home/oracle/ogg/./libicui18n.so.38 (0x00007fb5ef500000)
        libicuuc.so.38 => /home/oracle/ogg/./libicuuc.so.38 (0x00007fb5ef1c7000)
        libicudata.so.38 => /home/oracle/ogg/./libicudata.so.38 (0x00007fb5ee1eb000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000036e3400000)
        libxerces-c.so.28 => /home/oracle/ogg/./libxerces-c.so.28 (0x00007fb5edcd3000)
        libantlr3c.so => /home/oracle/ogg/./libantlr3c.so (0x00007fb5edbbd000)
        libnnz11.so => /home/oracle/ogg/./libnnz11.so (0x00007fb5ed473000)
        libclntsh.so.11.1 => /home/oracle/ogg/./libclntsh.so.11.1 (0x00007fb5e99cc000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036f0c00000)
        libm.so.6 => /lib64/libm.so.6 (0x00000036e3800000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036ef400000)
        libc.so.6 => /lib64/libc.so.6 (0x00000036e3000000)
        /lib64/ld-linux-x86-64.so.2 (0x00000036e2800000)
        libclntshcore.so.12.1 => /home/oracle/ogg/./libclntshcore.so.12.1 (0x00007fb5e93fc000)
        libmql1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libmql1.so (0x00007fb5e9185000)
        libipc1.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libipc1.so (0x00007fb5e8d51000)
        libons.so => /u01/app/oracle/product/12.2.0/dbhome_1/lib/libons.so (0x00007fb5e8b03000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00000036f3400000)
        librt.so.1 => /lib64/librt.so.1 (0x00000036e3c00000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007fb5e8901000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00000036e5400000)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

5 Goldengate参数

5.1 DML\DDL参数配置说明

MGR参数

序号配置参数备注
1PORT 7839必选参数(端口默认7809)
2USERID ggs, PASSWORD 123456, ENCRYPTKEY default必选参数,配置建议:要求使用密文参数,添加需要的配置参数
3DYNAMICPORTLIST 7840-7914必选参数,配置建议:一个传输进程(datapump)一般需要预留5个端口,其他监控端口另行考虑;
4AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3可选参数,配置建议:在系统运行稳定时,打开该参数;
5PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3必选参数–配置建议:根据队列空间大小适当进行调整,建议>=3天
6PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10DDL 配置时需要的参数
7PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10DML 配置时需要的参数
8LAGREPORTHOURS 1必选参数,配置建议:统一设定为1个小时
9LAGINFOMINUTES 30必选参数,配置建议:统一设定为30分钟
10LAGCRITICALMINUTES 45必选参数,配置建议:统一设定为45分钟;

EXTRACT参数

序号配置参数备注
1EXTRACT extxx必选参数
2setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)必选参数,配置建议:需要根据数据库的字符集进行设置;
3USERID ggs, PASSWORD AACAAAAAAAAAAGAIF, ENCRYPTKEY default必选参数,配置建议:要求使用密文参数,添加需要的配置参数
4GETTRUNCATES可选参数,配置建议:在没有配置DDL时,该参数需要打开;如果配置DDL,就是FULL DDL SUPPORT模式,不必配置
5DDL & INCLUDE MAPPED OBJTYPE ‘table’ & INCLUDE MAPPED OBJTYPE ‘index’ & EXCLUDE OPTYPE COMMENT DDLOPTIONS NOCROSSRENAME REPORT DDLOPTIONS ADDTRANDATA REPORT必选参数,配置建议:为ddl开启时需要使用的参数,此处配置仅开启表和索引,过滤comment语句;
6DISCARDFILE ./dirrpt/extxx.dsc,APPEND,MEGABYTES 1024必选参数,配置建议:该参数的路径必须为相对路径,该参数的值设置为1024M
7THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000特定参数,在Rac环境下需要配置,非Rac的生产环境不需要配置
8DBOPTIONS ALLOWUNUSEDCOLUMN必选参数,配置建议:在生产端库表中存在unused列时,需要配置该参数
9WARNLONGTRANS 2h,CHECKINTERVAL 3m必选参数,配置建议:要求设置为2h,3m,如有特殊需要,可以调整
10EXTTRAIL ./dirdat/xx必选参数,配置建议:要求使用相对路径,遵循命名规范;
11TRANLOGOPTIONS EXCLUDEUSER USERNAME可选参数,配置建议:可以使用来排除大事务用户
12FETCHOPTIONS USESNAPSHOT必选参数, 要求必须设置该参数
13TRANLOGOPTIONS CONVERTUCS2CLOBS可选参数参数,对CLOB字段进行处理V11版本版本不需要此参数
14TRANLOGOPTIONS altarchivelogdest primary instance rac1 /arch1 altarchivelogdest instance rac2 /arch2特定参数,配置建议:Rac使用,解决归档路径不一致的问题;可以在一个实例上面配置;
15TRANLOGOPTIONS RAWDEVICEOFFSET 0特定参数, 配置建议:仅限于AIX平台下使用裸设备时使用,其它平台或非裸设备均不需要
16Table SCHEMA.* Sequence SCHEMA.*复制用户

DATADUMP参数

序号配置参数备注
1EXTRACT dpxx必选参数
2PASSTHRU必选参数
3RMTHOST ..., MGRPORT 7839, compress必选参数,配置建议:... 目标端的ip地址,7839为目标端的管理端口,要求配置compress压缩参数,
4RMTTRAIL ./dirdat/xx必选参数,配置建议:要求使用相对路径,遵循命名规范;
5Table SCHEMA.* Sequence SCHEMA.*复制用户

REPLICAT****参数

序号配置参数备注
1REPLICAT repxx必选参数
2setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)必选参数,配置建议:需要根据数据库源端的字符集进行设置
4USERID ggs, PASSWORD AACAAAAAAAAAAGAIFAAAUDVHCFUGFIYF, ENCRYPTKEY default必选参数,配置建议:要求使用密文参数,添加需要的配置参数
5DDL include mapped必选参数,为开启DDL复制时需要配置的参数
6ddloptions report必选参数,为开启DDL复制时需要配置的参数
7REPORT AT 01:59可选参数,配置建议:该时间也根据需要进行修改
8REPORTCOUNT EVERY 30 MINUTES, RATE可选参数,配置建议:可以根据需要进行调整
9REPERROR DEFAULT, ABEND必选参数,配置要求:必须使用abend参数,不允许使用
10DBOPTIONS DEFERRORFCONST必选参数,Replicate进程在commit后进行完整性约束检查
11Assumetargetdefs必选参数
12DISARDFILE ./dirrpt/repya1.dsc, APPEND, MEGABYTES 1024必选参数,配置建议:该参数的路径必须为相对路径,建议该参数的值设置为1024M
13DISCARDROLLOVER AT 02:30每天2:30自动重新建立一个dsc文件,可选参数
14GETTRUNCATES可选参数,未开启DDL打开,开启DDL不开
15ALLOWNOOPUPDATES必选参数
16MAP SCHEMA., TARGET SCHEMA.复制用户
17DDLOPTIONS MAPSESSIONSCHEMA ogg_src target ogg_trg目标端与源端用户不一致,但需要相同数据结构,需要session schema进行转换。

常用优化参数

序号配置参数备注
1numfile xxx可选参数,GoldenGate默认值1000,各单位根据灾备复制系统数据库表数量可酌情调整。不配置该参数亦生效满足要求。
2GROUPTRANSOPS xxx可选参数,GoldenGate默认值1000,调大该参数会调整OGG提交记录数。各单位可根据实际情况酌情配置。不配置该参数亦生效满足要求。
3DBOPTION SUPPERSSTRIGGERS DEFERREFCONST可选参数,若Oracle 10.2.0.5以上版本,OGG V11.1以上版本可以配置,灾备端数据库无需禁止Trigger。不满足Oracle和OGG版本要求禁止配置
4DBOPTION SUPPRESSTRIGGERS可选参数,要求数据库版本10.2.0.5或11.2.0.2以上,还需要赋予stream的管理员的权限给GoldenGate,(确认方法:SELECT *FROM dba_streams_administrator;)不满足上述所有条件不合格

禁止参数

序号配置参数备注
1Reperror default DSCReperror default后必须配置ABEND,确保当复制运行报错后,及时告知运维人员,确保灾备数据一致
2reperror 【报错代码】 transdiscard 或 reperror(【报错代码】,discard)此类配置将导致复制发生错误后,忽略指定报错信息,严重影响数据一致
3handlecolisions打开此参数则所有数据错误不管reperror如何配置均不再写discard文件,即所有数据冲突信息被默认规则处理,没有任何日志(会忽略error mapping数据错误,而且不会报告到discard文件)
4ddlerror default ignore此类配置将导致DDL复制发生错误后,忽略指定报错信息,严重影响数据一致
5REPERROR (1403, ignore)此配置导致OGG恢复发生错误后,忽略指定的报错信息,严重影响数据一致。(注:1403为报错代码,禁止此项配置
6MAXTRANSOPSGoldenGate默认值100000000,修改此参数会导致数据不一致,禁止配置。
8DDLERROR RESTARTSKIP 100000 SKIPTRIGGERERROR 100000让extract在启动时,跳过或忽略100000个引起abend的DDL操作,跳过或忽略10000个由TRIGGER引起的造成abend 的DDL操作
9FETCHOPTIONS FETCHPKUPDATECOLS使用OGG进行数据初始化时,和HANDLECOLLISIONS配合使用,来解决replicat 主键更新丢失的问题
10FETCHOPTIONS SUPPRESSDUPLICATES仅在我们在遭遇抽取LOB字段时,遇到相关故障时,开启该参数;而一旦处理该故障后,应将其从配置中删除

MANAGER进程参数配置说明:

PORT:指定服务监听端口,默认为7809。

DYNAMICPORTLIST:动态端口,可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标端的Collector、Replicat、GGSCI进程通信也会使用这些端口。

COMMENT:注释行,也可以用–来代替。

AUTOSTART:指定在管理进程启动时自动启动哪些进程。

AUTORESTART:自动重启参数设置。本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;

PURGEOLDEXTRACTS:定期清理trail文件设置。本处设置表示对于超过3天的trail文件进行删除。

LAGREPORTHOURS、LAGINFOMINUTES、LAGCRITICALMINUTES:定义数据延迟的预警机制。本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。

EXTRACT进程参数配置说明:

SETENV:配置系统环境变量

USERID/ PASSWORD:指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;

COMMENT:注释行,也可以用–来代替;

TABLE:定义需复制的表,后面需以;结尾

TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。

GETUPDATEAFTERS|IGNOREUPDATEAFTERS:是否在队列中写入后影像,缺省复制

GETUPDATEBEFORES| IGNOREUPDATEBEFORES:是否在队列中写入前影像,缺省不复制

GETUPDATES|IGNOREUPDATES:是否复制UPDATE操作,缺省复制

GETDELETES|IGNOREDELETES:是否复制DELETE操作,缺省复制

GETINSERTS|IGNOREINSERTS:是否复制INSERT操作,缺省复制

GETTRUNCATES|IGNORETRUNDATES:是否复制TRUNCATE操作,缺省不复制;

RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;

RMTTRAIL:指定写入到目标断的哪个队列;

EXTTRAIL:指定写入到本地的哪个队列;

SQLEXEC:在extract进程运行时首先运行一个SQL语句;

PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;

REPORT:定义自动定时报告;

STATOPTIONS:定义每次使用stat时统计数字是否需要重置;

REPORTCOUNT:报告已经处理的记录条数统计数字;

TLTRACE:打开对于数据库日志的跟踪日志;

DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;

DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;

TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0

WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;

REPLICAT进程参数配置说明:

ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;

SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。

MAP:用于指定源端与目标端表的映射关系;

MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;

REPERROR:定义出错以后进程的响应,一般可以定义为两种:

ABEND,即一旦出现错误即停止复制,此为缺省配置;

DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。

DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;

SQLEXEC:在进程运行时首先运行一个SQL语句;

GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。

MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。

5.2 参数配置举列

5.2.1 MGR 进程(目标端)

GGSCI 1>edit params mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts  D:\oggs\dirdat\rt*,  usecheckpoints,MINKEEPFILES 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.2.2 REPLICAT(复制)进程配置(目标端)

--创建检查点
checkpointtable ggs.checkpoint
--编辑复制进程
edit params rep01
--指定复制进程要读取的tail日志文件
add replicat rep01 exttrail ./dirdat/te,checkpointtable ggs.checkpoint
--从指定SCN号开始同步数据,启动接收进程
start replicat rep01,aftercsn [备份时使用的SCN号] --SCN为源端数据库

源端上查询最新的SCN
select current_scn from v$database;
scn
16563972104

目标端通过指定SCN启动repa进程
start replicat repa, aftercsn 16563972104
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

5.2.3 复制进程参数(参考)

replicat  rep01
SETENV (ORACLE_SID=orcl)
SETENV (OGG_HOME=E:\ggs)
userid ggs@orcl,PASSWORD 123456
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
GETTRUNCATES
REPORT AT 1:59
REPORTROLLOVER AT 2:00
DISCARDFILE ./dirrpt/rep01.dsc,append,megabytes 4096
DISCARDROLLOVER AT 05:00 
DDL INCLUDE OBJTYPE 'TABLE',
INCLUDE OPTYPE 'ALTER'
ddl error default ignore retryop maxretries 3 retrydelay 5
DBOPTIONS SUPPRESSTRIGGERS

MAP TEST.TB1,TARGET TEST.TB1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

5.2.4 MGR进程配置(源端)

port 7809

dynamicportlist 7800-8000
autostart er *
autorestart er *,retries 5,waitminutes 2,resetminutes 5
purgeoldextracts /u01/app/oracle/ogg/dirdat/et*,usecheckpoints,minkeepdays 10		
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45


说明:
port 指定 mgr 进程通信端口;
dynamicportlist 表示 mgr 进程可以为源与目的端动态通信指定端口;
autorestart er 表示 mgr 启动以后自动启动所有进程组,每 2 分钟尝试重启所有进程,重试5 次,每 5 分钟清零。
purgeoldextracts表示定期清理tail文件这里设置的是超过10天的tail文件进行删除
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

5.2.5 EXTRACT(抽取)进程配置

--配置抽取集成需要通过ogg登录到oracle
dblogin userid ggs@orcl,password 123456
--为需要同步的用户或表开启表级附加日志
--同步某用户下的所有表
add trandata 用户名.*
--同步某张表
add trandata 用户名.表名
--编辑抽取进程参数
edit params ext01(抽取进程名 不超过8个字符)
--指定抽取进程从那个时间点抽取日志(前提数据库归档日志存在)
--从当前时间点抽取
--单实例
add extract ext01,tranlog, begin now
--RAC集群
add extract ext01,tranlog, begin now,threads 2
--从指定时间抽取
--单实例
add extract ext01,tranlog, begin 2020-12-20 00:00:00
--RAC集群
add extract ext01,tranlog, begin 2020-12-20 00:00:00,threads 2
--绑定抽取进程抽取到本地的tail日志文件队列
add exttrail ./dirdat/te,extract ext01 (te为tail日志文件名,只能是2个字符)
--开启抽取进程
start ext01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

5.2.6 EXTRACT抽取进程参数(参考)

EXTRACT ext01
SETENV (ORACLE_SID=orcl);
SETENV (OGG_HOME=/u01/ggs);
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK);
USERID ggs@orcl, PASSWORD AACAAAAAAAAAAAIAUEYFIIJCXEOHZDTB, ENCRYPTKEY default
TRANLOGOPTIONS DBLOGREADER;
REPORTCOUNT EVERY 5 HOURS,RATE;
REPORT AT 01:05;
EXTTRAIL ./dirdat/te;
DISCARDFILE ./dirrpt/ext01.dsc,APPEND,MEGABYTES 4096;
DYNAMICRESOLUTION;
WARNLONGTRANS 12h,CHECKINTERVAL 30m;
DDL INCLUDE OBJTYPE 'TABLE',INCLUDE OPTYPE 'ALTER';
DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10;
DDLOPTIONS REPORT;

TABLE COMM.*;
TABLE DICT.*;
TABLE TEST.TAB1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

5.2.7 投递进程配置

--投递进程本质也是EXTRACT进程,只是分工不同
--编辑投递进程
edit params dpt01
--指定投递进程要投递的源端tail日志文件
add extract dpt01,exttrailsource ./dirdat/te
add exttrail ./dirdat/te,extract dpt01
--指定投递到远端(目标端)tail文件名
add rmttrail ogg安装路径/dirdat/te,extract dpt01
--启动投递进程(需要目标端的mgr进程启动)
start dpt01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5.2.8 投递进程配置(参考)

EXTRACT dpt01
PASSTHRU
GETTRUNCATES
RMTHOST 172.16.128.11,MGRPORT 7909,COMPRESS --目标端IP和OGG端口
RMTTRAIL ./dirdat/te
REPORTCOUNT EVERY 5 HOURS,RATE
REPORT AT 01:05

TABLE COMM.*;
TABLE DICT.*;
TABLE TEST.TAB1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

6 参数配置参考

6.1 Oracle数据参数配置

创建用户单独的表空间,临时表空间,用户授权DBA权限

6.1.1 Linux平台操作

为ogg创建单独的表空间,临时表空间和用户,为用户授权DBA权限

--创建表空间
create tablespace OGG_DATA datafile '文件路径/ogg_data01.dbf' size 100M autoextend on maxsize 30G;
--创建临时表空间
create temporary tablespace OGG_TEMP tempfile '文件路径/ogg_temp01.dbf'  size 50m  autoextend on maxsize 10G;
--创建用户
create user ggs identified by "123456" default tablespace OGG_DATA temporary tablespace OGG_TEMP quota unlimited on OGG_DATA;
--授予DBA权限
grant dba to ggs;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6.1.2 Windows平台操作

6.1.2.1 创建表空间
create tablespace test_tablespace
datafile ' D:\app\JSSR\virtual\oradata\orcl\test_tablespace.dbf' size 30M autoextend on next 100M;
  • 1
  • 2
6.1.2.2 创建用户并赋予权限
-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;

-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;

exit;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
6.1.2.3 创建归档日志目录
mkdir D:\app\JSSR\virtual\archive
  • 1
6.1.2.4 设置日志目录
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
  • 1
6.1.2.5 开强制规档
SQL> alter system archive log current;
  • 1
6.1.2.6 查看配置结果
col open_mode for a10
col LOG_MODE for a20
col  FORCE_LOGGING for a20

SQL> select open_mode,log_mode,supplemental_log_data_min,force_logging from v$database;
  • 1
  • 2
  • 3
  • 4
  • 5
6.1.2.7 创建 GoldenGate数据库帐号并赋予权限(init.sql文件方式)
6.1.2.7.1 使用init.sql文件方式
vim init.sql
-- drop user ogg cascade; //删除用户
-- drop tablespace tbs_ogg including contents and datafiles; //删除表空间
-- 创建表空间
create tablespace tbs_ogg datafile ' D:\app\JSSR\virtual\oradata\orcl\tbs_ogg.dbf' size 100M
autoextend on next 50M;
-- 创建 ogg 用户
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP
quota unlimited on tbs_ogg;
-- 赋予 ogg 用户权限
grant connect,resource,dba to ogg;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
6.1.2.7.2 执行 sql 文件
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
  • 1
  • 2
  • 3

6.1.3 数据备份

--查询当前数据库scn号
select current_scn from v$database;
--创建导出数据的路径
create or replace directory bak_dir as '/u01/bak';
--按用户导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp schemas=COMM,DICT LOGFILE=tables_backup0201.log PARALLEL=6  FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--按表导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp tables=TEST.TAB1,tables2  LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--PARALLEL=6  并行度 设置并行线程 提高导出速率 不要高于CPU线程数
--FILESIZE=30G 设置导出文件大小
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

6.1.4 初始化备份数据

--创建导出数据的路径
create or replace directory dump as '/share/bak'
--查看已经创建的导入导出目录
select * from dba_directories;

impdp system/szadmin@nanf directory=dump DUMPFILE=TABLES_20210201_%U.dmp LOGFILE=tables_import.log PARALLEL=6 table_exists_action=replace job_name=Tables_Import

--table_exists_action=replace 表存在执行覆盖操作
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

.1.2.2 创建用户并赋予权限

-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;

-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;

exit;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
6.1.2.3 创建归档日志目录
mkdir D:\app\JSSR\virtual\archive
  • 1
6.1.2.4 设置日志目录
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
  • 1
6.1.2.5 开强制规档
SQL> alter system archive log current;
  • 1
6.1.2.6 查看配置结果
col open_mode for a10
col LOG_MODE for a20
col  FORCE_LOGGING for a20

SQL> select open_mode,log_mode,supplemental_log_data_min,force_logging from v$database;
  • 1
  • 2
  • 3
  • 4
  • 5
6.1.2.7 创建 GoldenGate数据库帐号并赋予权限(init.sql文件方式)
6.1.2.7.1 使用init.sql文件方式
vim init.sql
-- drop user ogg cascade; //删除用户
-- drop tablespace tbs_ogg including contents and datafiles; //删除表空间
-- 创建表空间
create tablespace tbs_ogg datafile ' D:\app\JSSR\virtual\oradata\orcl\tbs_ogg.dbf' size 100M
autoextend on next 50M;
-- 创建 ogg 用户
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP
quota unlimited on tbs_ogg;
-- 赋予 ogg 用户权限
grant connect,resource,dba to ogg;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
6.1.2.7.2 执行 sql 文件
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
  • 1
  • 2
  • 3

6.1.3 数据备份

--查询当前数据库scn号
select current_scn from v$database;
--创建导出数据的路径
create or replace directory bak_dir as '/u01/bak';
--按用户导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp schemas=COMM,DICT LOGFILE=tables_backup0201.log PARALLEL=6  FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--按表导出
expdp 'userid="/ as sysdba"' directory=bak_dir DUMPFILE=TABLES_20210201_%U.dmp tables=TEST.TAB1,tables2  LOGFILE=tables_backup0201.log PARALLEL=6 FILESIZE=30G flashback_scn=当前scn号 job_name=Tables_Export

--PARALLEL=6  并行度 设置并行线程 提高导出速率 不要高于CPU线程数
--FILESIZE=30G 设置导出文件大小
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

6.1.4 初始化备份数据

--创建导出数据的路径
create or replace directory dump as '/share/bak'
--查看已经创建的导入导出目录
select * from dba_directories;

impdp system/szadmin@nanf directory=dump DUMPFILE=TABLES_20210201_%U.dmp LOGFILE=tables_import.log PARALLEL=6 table_exists_action=replace job_name=Tables_Import

--table_exists_action=replace 表存在执行覆盖操作
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/616654
推荐阅读
相关标签
  

闽ICP备14008679号