Goldengate 12c跨平台同步Oracle 12C
GoldenGate 12C源端为Linux 6.4和目标端为window2012R2的数据同步(单向,单实例)
1.对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;
2.以交易为单位复制,保证交易一致性:只同步已提交的数据;
3.高性能,智能的交易重组和操作合并,使用数据库本地接口访问,并行处理体系,灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等。
1 环境准备
1.1 环境信息
角色 | 操作系统 | IP地址 | Oracle数据库版本 | 数据库SID | Goldengate(OGG)版本 |
---|---|---|---|---|---|
源端 | Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.6.32-358.el6.x86_64 | 192.168.11.223 | Version12.2.0.1.0 | PROD | Version 12.3.0.1.4 |
目标端 | Windows Server2012 R2 Datecenter [版本 6.3.9600]) | 192.168.11.212 | Version12.1.0.1.0 | orcl12c | Version 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]
检查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))
)
)
检查监听状态: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
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
目标端:
检查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]
检查listener.ora 文件配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
检查监听状态: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 个处理程序...
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.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
目标:
SQL> select sys_context('userenv', 'language') from dual;
SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改字符集:
本实验修改源端字符集,在生产环境下,如果目标库是新建的,建议修改目标端。
Linux 下切换到安装数据库的用户下,本次实验是oracle,切换到Oracle用户下,添加环境变量。
su - oracle
vim ~/.bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
:wq
执行 source ~/.bash_profile 使之生效
reboot重启系统
登录数据库确认字符集修改是否成功:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
上面的方法只修改前面语言,地域部分,字符集没有修改成想要的。继续下面的步骤:
管理员身份登录数据库
连接数据库软件:
sqlplus /nolog
管理员连接:
SQL> connect /as sysdba
关闭数据库:
SQL> shutdow immediate
挂载方式启动
SQL> startup mount
修改会话,进程:
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
打开数据库:
SQL> alter database open;
修改字符集:
SQL> alter database character set internal_use ZHS16GBK;
关闭数据库:
SQL> shutdown immediate;
打开数据库,重启
SQL> startup
再次确认字符集:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
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.3supportsOracle≥12.2.0.1Goldengate12.2supportsOracle≥11.2.0.1Goldengate12.1supportsOracle≥11.1.0.6Goldengate11.2supportsOracle≥10.2.0.4Forearlierdatabaseversions(8i(DMLonly),9i−11.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
解压完,进行安装
[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
执行./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
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
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
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:
如果没有以上子目录,进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安装目录下建立若干子目录,其中几个主要目录如下所示:
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
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
完成卸载
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
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;
注:实验中没有做详细授权,直接给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;
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
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
若enable_goldengate_replication参数没有开启,使用以下命令
alter system set enable_goldengate_replication=true scope=both;
3.1.4 创建goldengate用户授DBA权限
实验表空间,临时表空间都默认
--创建用户
SYS@PROD> create user goldengate identified by goldengate;
User created.
--授予DBA权限
SYS@PROD> grant dba to goldengate;
Grant succeeded.
3.1.5 创建goldengate用户表
注:表结构源和目标表结构一致,实验中是源和目标都是新建
Linux环境:
SYS@PROD> conn goldengate/goldengate
Connected.
GOLDENGATE@PROD> create table table1(id number(8), name varchar2(20));
Table created.
windows 环境:
SQL> conn goldengate/goldengate
Connected.
SQL> create table table1(id number(8), name varchar2(20));
Table created.
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
启动mgr进程
GGSCI>start mgr
补充:将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
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
保存退出。
这里需要退出 ggsci 终端
3.2.1.2.2 添加checkpoint
重新进ggsci
c:\app\ogg>ggsci.exe
登录数据库
GGSCI> dblogin userid goldengate,password goldengate
添加检查表
GGSCI> add checkpointtable goldengate.checkpoint
GGSCI> exit
3.2.1.3 配置目标端 Replicat进程组
进ggsci.exe
c:\app\ogg>ggsci.exe
编辑配置文件
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:用于指定源端与目标端表的映射关系
添加复制进程
--磁盘符必须大写
GGSCI>add replicat repa,exttrail C:\app\ogg\dirdat\ra, CHECKPOINTTABLE goldengate.checkpoint
--不使用检查表
GGSCI>add rep repa, exttrail C:\app\ogg\dirdat\ra, nodbcheckpoint
注:
rep开头表示replicat进程,repa是进程名称
exttrail:表示要抽取数据队列,注意是目标端的队列位置
nodbcheckpoint: 不使用检查点
启动进程repa进程
GGSCI>start replicat repa
检查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
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
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!
启动mgr进程
GGSCI>start mgr
注:在图形化界面安装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 用户下的所有表
添加抽取进程
GGSCI>add extract exta, tranlog,begin now
添加本地 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
说明:
创建本地 trail 文件,主 extract 进程负责写这部分文件,pump 负责把这部分文件传到目标服务器端。
在GGSCI命令行中登录数据库,为所有要复制的数据表添加trandata
GGSCI>dblogin userid goldengate, password goldengate
GGSCI>add trandata goldengate.*
或者
add trandata goldengate.table1 (具体表查询快些)
注册exta进程到数据库
GGSCI>REGISTER EXTRACT exta DATABASE
启动 exta 服务
GGSCI >start extract exta
查看状态
GGSCI >info all
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:目标端保存队列文件的目录
添加 pump 进程源端路径
GGSCI>add extract dpea,exttrailsource /home/oracle/ogg/dirdat/la
添加pump 进程远程 trail 文件目标路径
GGSCI>add rmttrail C:\app\ogg\dirdat\ra,extract dpea
说明: 指定远程 trail 文件
启动 pump 进程
GGSCI>start extract dpea
检查进程状态:
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
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 数据工程
3.2.2.4.2 目标端查看
SQL> select * from table1;
ID NAME
---------- --------------------
40 閺佺増宓佸銉р柤
注:此时目标端看到是乱码,这是字符集不支持中文造成,可以修改字符集(参考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.
看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.
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.
3.2.3 Linux环境-同步DDL(源端)
3.2.3.1 编辑全局参数
进ggsci
[oracle@enmoedu1 ogg]$ ggsci
编辑全局参数
GGSCI> edit param ./GLOBALS (输入 i 进入编辑模式,在文件中增加如下参数)
ggschema goldengate
3.2.3.2 关闭MGR,退出
GGSCI> stop mgr
GGSCI> exit
3.2.3.3 数据库关闭回收站
在关之前可以先看一下,如果是 on,如下图所示,则回收站是开启的
$sqlplus / as sysdba
SQL>show parameter recyclebin
修改为 off
SQL>alter system set recyclebin=off deferred;
改完需要把数据库重启一下才会生效
SQL>shutdown immediate
SQL>startup
再次确认是否关闭
SQL>show parameter recyclebin
3.2.3.4 安装 DDL 对象
需要进ogg 目录
cd /home/oracle/ogg
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
说明: 以下各执行如提示: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: 执行 dbmspool 包将在数据库中创建 DBMS_SHARED_POOL 包,之后 ddl_pin 包需要用到
SQL>@?/rdbms/admin/dbmspool.sql
注 2: 执行 ddl_pin.sql 通过 dbms_shared_pool.keep 存储过程将 DDLReplication 相关对象keep 在共享池中,以保证这些对象不要 RELOAD,提升性能。
SQL>@ddl_pin.sql goldengate
3.2.3.5 修改 exta(抽取)进程参数文件
停止 exta(抽取)进程
GGSCI> stop extract exta
编辑配置文件
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.*;
启动 mgr,exta 进程
GGSCI> start mgr
GGSCI> start extract exta
查看 exta 进程启动情况
GGSCI 6> info extract exta
3.2.3.6 目标端操作
3.2.3.6.1 增加goldengate用户权限
$ sqlplus / as sysdba
SQL> grant dba to goldengate;
3.2.3.6.2 修改replicat进程参数文件
停止 mgr,repa进程
GGSCI>stop mgr
GGSCI>stop replicat repa
编辑 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.*;
启动 mgr, repa进程
GGSCI>start mgr
GGSCI>start replicat repa
查看进程是否running状态
GGSCI> info all
3.2.3.7 DDL同步测试
本节验证源端 table1 表增加字段后,目标端自动改变。
3.2.3.7.1 添加字段前查看表结构:
源端查看:
$ sqlplus goldengate/goldengate
SQL> desc table1;
目标端查看:
SQL> sqlplus /nolog
SQL> conn goldengate/goldengate
SQL> desc table1;
3.2.3.7.2 源端添加字段
SQL> alter table table1 add(sex varchar2(2) default '男');
SQL>desc table1;
3.2.3.7.3 目标端验证
SQL> desc table1;
看到目标端表结构和源端表结构一致。
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
解决方案:
如果没有监听,查看监听文件
cd $ORACLE_HOME/network/admin
oracle@enmoedu1 admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
检查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))
问题是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))
检查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))
)
)
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
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)
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
添加上面参数dpea进程正常开启,但是数据同步还是未成功,需要把磁盘符c修改大写C。(此处不确定端磁盘符源端和目标大写不一致,这个后面正常以后才想到的,没有实测试)
GGSCI>edit params ./GLOBALS
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.checkpoint
ALLOWOUTPUTDIR C:\app\ogg\dirdat
重启源端dpea进程
GGSCI>stop dpea
GGSCI>start dpea
重启目标repa进程
GGSCI>stop repa
GGSCI>start repa
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
解决方案:
[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)
5 Goldengate参数
5.1 DML\DDL参数配置说明
MGR参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | PORT 7839 | 必选参数(端口默认7809) |
2 | USERID ggs, PASSWORD 123456, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
3 | DYNAMICPORTLIST 7840-7914 | 必选参数,配置建议:一个传输进程(datapump)一般需要预留5个端口,其他监控端口另行考虑; |
4 | AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 | 可选参数,配置建议:在系统运行稳定时,打开该参数; |
5 | PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3 | 必选参数–配置建议:根据队列空间大小适当进行调整,建议>=3天 |
6 | PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 | DDL 配置时需要的参数 |
7 | PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 | DML 配置时需要的参数 |
8 | LAGREPORTHOURS 1 | 必选参数,配置建议:统一设定为1个小时 |
9 | LAGINFOMINUTES 30 | 必选参数,配置建议:统一设定为30分钟 |
10 | LAGCRITICALMINUTES 45 | 必选参数,配置建议:统一设定为45分钟; |
EXTRACT参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | EXTRACT extxx | 必选参数 |
2 | setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) | 必选参数,配置建议:需要根据数据库的字符集进行设置; |
3 | USERID ggs, PASSWORD AACAAAAAAAAAAGAIF, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
4 | GETTRUNCATES | 可选参数,配置建议:在没有配置DDL时,该参数需要打开;如果配置DDL,就是FULL DDL SUPPORT模式,不必配置 |
5 | DDL & INCLUDE MAPPED OBJTYPE ‘table’ & INCLUDE MAPPED OBJTYPE ‘index’ & EXCLUDE OPTYPE COMMENT DDLOPTIONS NOCROSSRENAME REPORT DDLOPTIONS ADDTRANDATA REPORT | 必选参数,配置建议:为ddl开启时需要使用的参数,此处配置仅开启表和索引,过滤comment语句; |
6 | DISCARDFILE ./dirrpt/extxx.dsc,APPEND,MEGABYTES 1024 | 必选参数,配置建议:该参数的路径必须为相对路径,该参数的值设置为1024M |
7 | THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000 | 特定参数,在Rac环境下需要配置,非Rac的生产环境不需要配置 |
8 | DBOPTIONS ALLOWUNUSEDCOLUMN | 必选参数,配置建议:在生产端库表中存在unused列时,需要配置该参数 |
9 | WARNLONGTRANS 2h,CHECKINTERVAL 3m | 必选参数,配置建议:要求设置为2h,3m,如有特殊需要,可以调整 |
10 | EXTTRAIL ./dirdat/xx | 必选参数,配置建议:要求使用相对路径,遵循命名规范; |
11 | TRANLOGOPTIONS EXCLUDEUSER USERNAME | 可选参数,配置建议:可以使用来排除大事务用户 |
12 | FETCHOPTIONS USESNAPSHOT | 必选参数, 要求必须设置该参数 |
13 | TRANLOGOPTIONS CONVERTUCS2CLOBS | 可选参数参数,对CLOB字段进行处理V11版本版本不需要此参数 |
14 | TRANLOGOPTIONS altarchivelogdest primary instance rac1 /arch1 altarchivelogdest instance rac2 /arch2 | 特定参数,配置建议:Rac使用,解决归档路径不一致的问题;可以在一个实例上面配置; |
15 | TRANLOGOPTIONS RAWDEVICEOFFSET 0 | 特定参数, 配置建议:仅限于AIX平台下使用裸设备时使用,其它平台或非裸设备均不需要 |
16 | Table SCHEMA.* Sequence SCHEMA.* | 复制用户 |
DATADUMP参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | EXTRACT dpxx | 必选参数 |
2 | PASSTHRU | 必选参数 |
3 | RMTHOST ..., MGRPORT 7839, compress | 必选参数,配置建议:... 目标端的ip地址,7839为目标端的管理端口,要求配置compress压缩参数, |
4 | RMTTRAIL ./dirdat/xx | 必选参数,配置建议:要求使用相对路径,遵循命名规范; |
5 | Table SCHEMA.* Sequence SCHEMA.* | 复制用户 |
REPLICAT****参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | REPLICAT repxx | 必选参数 |
2 | setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) | 必选参数,配置建议:需要根据数据库源端的字符集进行设置 |
4 | USERID ggs, PASSWORD AACAAAAAAAAAAGAIFAAAUDVHCFUGFIYF, ENCRYPTKEY default | 必选参数,配置建议:要求使用密文参数,添加需要的配置参数 |
5 | DDL include mapped | 必选参数,为开启DDL复制时需要配置的参数 |
6 | ddloptions report | 必选参数,为开启DDL复制时需要配置的参数 |
7 | REPORT AT 01:59 | 可选参数,配置建议:该时间也根据需要进行修改 |
8 | REPORTCOUNT EVERY 30 MINUTES, RATE | 可选参数,配置建议:可以根据需要进行调整 |
9 | REPERROR DEFAULT, ABEND | 必选参数,配置要求:必须使用abend参数,不允许使用 |
10 | DBOPTIONS DEFERRORFCONST | 必选参数,Replicate进程在commit后进行完整性约束检查 |
11 | Assumetargetdefs | 必选参数 |
12 | DISARDFILE ./dirrpt/repya1.dsc, APPEND, MEGABYTES 1024 | 必选参数,配置建议:该参数的路径必须为相对路径,建议该参数的值设置为1024M |
13 | DISCARDROLLOVER AT 02:30 | 每天2:30自动重新建立一个dsc文件,可选参数 |
14 | GETTRUNCATES | 可选参数,未开启DDL打开,开启DDL不开 |
15 | ALLOWNOOPUPDATES | 必选参数 |
16 | MAP SCHEMA., TARGET SCHEMA. | 复制用户 |
17 | DDLOPTIONS MAPSESSIONSCHEMA ogg_src target ogg_trg | 目标端与源端用户不一致,但需要相同数据结构,需要session schema进行转换。 |
常用优化参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | numfile xxx | 可选参数,GoldenGate默认值1000,各单位根据灾备复制系统数据库表数量可酌情调整。不配置该参数亦生效满足要求。 |
2 | GROUPTRANSOPS xxx | 可选参数,GoldenGate默认值1000,调大该参数会调整OGG提交记录数。各单位可根据实际情况酌情配置。不配置该参数亦生效满足要求。 |
3 | DBOPTION SUPPERSSTRIGGERS DEFERREFCONST | 可选参数,若Oracle 10.2.0.5以上版本,OGG V11.1以上版本可以配置,灾备端数据库无需禁止Trigger。不满足Oracle和OGG版本要求禁止配置 |
4 | DBOPTION SUPPRESSTRIGGERS | 可选参数,要求数据库版本10.2.0.5或11.2.0.2以上,还需要赋予stream的管理员的权限给GoldenGate,(确认方法:SELECT *FROM dba_streams_administrator;)不满足上述所有条件不合格 |
禁止参数
序号 | 配置参数 | 备注 |
---|---|---|
1 | Reperror default DSC | Reperror default后必须配置ABEND,确保当复制运行报错后,及时告知运维人员,确保灾备数据一致 |
2 | reperror 【报错代码】 transdiscard 或 reperror(【报错代码】,discard) | 此类配置将导致复制发生错误后,忽略指定报错信息,严重影响数据一致 |
3 | handlecolisions | 打开此参数则所有数据错误不管reperror如何配置均不再写discard文件,即所有数据冲突信息被默认规则处理,没有任何日志(会忽略error mapping数据错误,而且不会报告到discard文件) |
4 | ddlerror default ignore | 此类配置将导致DDL复制发生错误后,忽略指定报错信息,严重影响数据一致 |
5 | REPERROR (1403, ignore) | 此配置导致OGG恢复发生错误后,忽略指定的报错信息,严重影响数据一致。(注:1403为报错代码,禁止此项配置 |
6 | MAXTRANSOPS | GoldenGate默认值100000000,修改此参数会导致数据不一致,禁止配置。 |
8 | DDLERROR RESTARTSKIP 100000 SKIPTRIGGERERROR 100000 | 让extract在启动时,跳过或忽略100000个引起abend的DDL操作,跳过或忽略10000个由TRIGGER引起的造成abend 的DDL操作 |
9 | FETCHOPTIONS FETCHPKUPDATECOLS | 使用OGG进行数据初始化时,和HANDLECOLLISIONS配合使用,来解决replicat 主键更新丢失的问题 |
10 | FETCHOPTIONS 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
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
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;
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文件进行删除
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
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;
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
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;
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;
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;
6.1.2.2 创建用户并赋予权限
-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;
-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;
exit;
6.1.2.3 创建归档日志目录
mkdir D:\app\JSSR\virtual\archive
6.1.2.4 设置日志目录
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
6.1.2.5 开强制规档
SQL> alter system archive log current;
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;
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;
6.1.2.7.2 执行 sql 文件
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
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 设置导出文件大小
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.2 创建用户并赋予权限
-- 创建用户
create user test identified by test default tablespace test_tablespace temporary tablespace TEMP;
-- 赋予权限
grant CONNECT,RESOURCE,DBA to test;
exit;
6.1.2.3 创建归档日志目录
mkdir D:\app\JSSR\virtual\archive
6.1.2.4 设置日志目录
SQL> alter system set log_archive_dest_1='location=D:\app\JSSR\virtual\archive' scope=both;
6.1.2.5 开强制规档
SQL> alter system archive log current;
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;
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;
6.1.2.7.2 执行 sql 文件
# su - oracle
$ sqlplus / as sysdba
SQL>@init.sql
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 设置导出文件大小
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 表存在执行覆盖操作