一次超详细OGGDDL单项复制配置记录
OS层面的配置清单
配置大致过程(source与target)
1.1 修改IP地址,hostname,添加hosts信息
1.2 创建相关的用户,用户组,用户分组,目录分配
1.3 oracle用户的环境变量~/.bash_profile
DATABASE层面配置清单
基本信息
DBCA建库
SOFT 层面配置清单
1.1 基于单向的source-target原理介绍
1.1.1 OGG大致体系与进程
1.1.2 Progress1:Eini_1(source) – Rini_1(target)
1.1.3 Progress2: Eora_1(source)
1.1.4 Progress3:Pora_1(source)
1.1.5 Progress4:Rora_1(target)
1.1.6 Progress5:Mgr ( source&target )
1.1.7 trail文件
1.1.8 流程图一览
o 1.2 基于单向的source-target实际操作
1.2.1 数据库方面配置
1. 添加数据库Supplemental Log
2. 添加数据库Force Logging
3. 为数据库打开归档日志
4. 在数据库内创建专属ogg用户及其表空间
5. 为ogg用户分配相关权限
6.调整参数
7.执行OGG -DDL支持
8.检查数据库内部用户及表状态
1.2.2 OGG软件层面上的配置
1 添加指定表的trandata
2.配置Mgr及创建一些目录
3.Configure inital Extract process in source(可选)
4.Configure inital replicat process in target(可选)
5.start init load in source(可选)
6.config extract Process in Source system
7.Define GoldenGate local trail
8 start extract progress Eora_1
9.Configure pump process in source system
10.Add GoldenGate remote trail in Source system
11.Configure replicat process in target system
12.Create GLOBALS parameter in target system
13.Config a base-on_scn’s expdp in source system
14.Config a base-on_scn’s impdp in target system
15.Start Replicate procress in targget system
OS层面的配置清单
GG软件支持异构平台软件之间的数据灾备,所以在OS层面上我们最关心的是各自平台与同一版本GG软件之间的兼容性,GG软件的异构灾备主要数据传输依赖于网络TCP/IP协议,所要要确保主机之间的网络通信畅通。
OS层面准备清单
配置大致过程(SOURCE与TARGET)
1.1 修改IP地址,HOSTNAME,添加HOSTS信息
|
vi /etc/sysconfig/network
vi /etc/sysconfig/network-script/ifcfg-eth0
source端与target端按照上表信息填写修改。
• 1
vi /etc/hosts
service network restart
ping <<hostaname
hosts不仅要写自己的hosts与ip对应,还要写目标主机的
• 1
1.2 创建相关的用户,用户组,用户分组,目录分配
chown –R oracle:oinstall /u01 ROOT将目录权限给予oracle和oinstall组
• 1
1.3 ORACLE用户的环境变量~/.BASH_PROFILE
.bash_profile
Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=prod
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
alias sqlplus=’rlwrap sqlplus’
alias rman=’rlwrap rman’
NLS_LANG=”simplified chinese”china.AL32UTF8
export NLSLANG
export NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib ‘
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
• 14
• 15
• 16
• 17
• 18
• 19
• 20
• 21
注意ORACLE_SID一项在不同主机上应该指向不同实例名,用以区分SOURCE/TARGET
DATABASE层面配置清单
基本信息
DBCA建库
export DISPLAY=<客户端地址>:0.0 oracle用户来操作,安装前再次确认环境变量信息是否正确
SOFT 层面配置清单
1.1 基于单向的SOURCE-TARGET原理介绍
1.1.1 OGG大致体系与进程
source端与target端进程大多是成对出现的,各自都有一个总的进程mgr来统一管理所有抽取、传输、复制进程。
目标端:1.根据源端extract进程的请求,扫描和绑定可用的端口给mgr主进程分配给请求的extract进程;2.接收源端extract抽取trail并写入到目标端的trail文件;之后replicat进程读取并应用数据到目标数据库。(可以和data capture同步或之后执行)后台进程,不可直接交互
trail 文件用来存储源端extract捕获的数据更改,可以用add exttrail ./dirdat ,extract
eora_1添加本体trail文件然后经由pump进程发送通过tcp发送到目标端,由目标端后台进程收取trail存入本地的trail文件队列,再由replicat进程复用。
extract-local trail-pump rmttrail-tcp-collector-local trail-replicat
• 1
1.1.2 PROGRESS1:EINI_1(SOURCE) – RINI_1(TARGET)
• 初始化装载进程。用于初始化同步俩个表,对于需要表结构与表数据进行校验,如果俩表之间没有差异,可以不同步。
• 对于比较大的表需要gg灾备到另外主机,最好用数据泵进行导入导出,初始化装载会快。
• 同步的表与表之间最好是有主键约束的,没有以表rowid为标识进行数据变更定位,效率受到影响。
1.1.3 PROGRESS2: EORA_1(SOURCE)
• source端数据变更抽取进程。主抽取进程,用于抽取source端表数据的dml 变更,要求数据库要开启附加日志和强制日志功能。
• 抽取完的变更向量,存放在本地队列文件中,等待传输。$OGG_HOME/dirdat队列文件夹,需要add extrail ./dirdat/aa,extract eora_1 创建一个本地trail文件
• 根据业务需求可以同时运行在源端与目标端,抽取捕获系统数据变更。
• 根据业务需求也可以捕获ddl变更,需要额外的配置。
• 初始化进程也是extract的一种业务需求表现形式。
1.1.4 PROGRESS3:PORA_1(SOURCE)
• source端的数据泵进程。second extract进程,也叫data pump将数据把数据经TCP/IP网络发送到目标端,这样做的好处是可以保护抽取的数据,防止网络或target trail出现问题。也可设定一定的规则,让GG自动在一定的条件下,清除trailpump进程提高了源端与目标端捕获数据的可用性
• 如果不使用Data Pump,extract进程必须发送抽取捕获的操作数据到目标端trail;
• 如果配置了Data Pump,extract进程抽取捕获数据写入到trail,Data pump读取trail并且通过网络发送trail到目标端trail。需要配置add rmttrail ./dirdat/pa,extract pora_1 远程trail文件
1.1.5 PROGRESS4:RORA_1(TARGET)
• target端复用进程,配置好mgr后,自动启动,获取本地队列文件 $OGG_HOME/dirdat/,
应用源端表数据更改
add REPLICAT RORA_1, EXTTRAIL ./dirdat/pa
• 1
• Replicat进程运行在目标端读取tail文件和重构DML、DDL并应用到目标数据库
1.1.6 PROGRESS5:MGR ( SOURCE&TARGET )
• 在灾备此过程中,源端及目标端均有manager process运行,执行对其他进程的启动,检测,重启,分配存储空间,报告错误等
1.1.7 TRAIL文件
• trail文件保存抽取捕获的变更数据信息,trail根据GoldenGate配置可能存在于源系统的磁盘上或者目标系统的磁盘上或者系统内部介质或者相关的系统中
• 使用trail文件存储抽取捕获的数据可以不依赖于extract或replicat进程,你可以有更多的选择处理数据和何时到达目标端,比如你可能配置抽取和保存在同一时刻,然后稍后发送数据到目标端。
1.1.8 流程图一览
1.2 基于单向的SOURCE-TARGET实际操作
1.2.1 数据库方面配置
- 添加数据库SUPPLEMENTAL LOG
alter database add supplemental log data;
• 1 - 添加数据库FORCE LOGGING
alter database force logging;
• 1 - 为数据库打开归档日志
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>shutdown immediate;
SQL>startup;
SQL>archive log list;
• 1
• 2
• 3
• 4
• 5
• 6 - 在数据库内创建专属OGG用户及其表空间
create tablespace tbs_gguser datafile ‘+DATA’ size 50M autoextend on;
create user ogg identified by Ogg default tablespace tbs_gguser temporary tablespace TEMP quota unlimited on tbs_gguser;
• 1
• 2 - 为OGG用户分配相关权限
ogg用户权限按照上述图示授权即可,但在实际工作中可能会出现确实权限导致进程抽取失败问题,也可以考虑提前赋予DBA权限,之后再收回的形式。
6.调整参数
alter system set set enable_goldengate_replication=true;
• 1
开启goldengate复制支持
alter system set recycle_bin=off
• 1
如果你在Oracle 10g平台使用DDL复制功能,需要关闭Oracle自带的回收站功能
7.执行OGG -DDL支持
$ cd /ogg
$ ./ggsci
SQL> @marker_setup
SQL> @ddl_setup
SQL> @ddl_setup
SQL> @role_setup
SQL> GRANT GGS_GGSUSER_ROLE TO ogg;
Grant succeeded.
SQL> @ddl_enable
Trigger altered.
SQL> @marker_status.sql
Please enter the name of a schema for the GoldenGate database objects:
ogg
Setting schema name to OGG
MARKER TABLE
OK
MARKER SEQUENCE
OK
SQL> @?/rdbms/admin/dbmspool.sql
Package created.
Grant succeeded.
SQL> @ddl_pin.sql
Enter value for 1: ogg
PL/SQL procedure successfully completed.
Enter value for 1: ogg
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
• 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
8.检查数据库内部用户及表状态
SQL> select username,account_status from dba_users where account_status=’OPEN’ and username not in (‘OGG’,’SYS’,’SYSTEM’);
USERNAME ACCOUNT_STATUS
SCOTT OPEN
SQL> select owner,table_name,LOGGING from dba_tables where LOGGING = ‘NO’and owner in(‘SCOTT’);
no rows selected
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
检查数据库内存在的启用账户及其表的LOGGING状态
1.2.2 OGG软件层面上的配置
1 添加指定表的TRANDATA
DBLOGIN USERID ogg@prod, PASSWORD Ogg 在gg里登录数据库
add trandata scott.* 为表添加trandata
info trandata scott.* 查看验证。
• 1
• 2
• 3
2.配置MGR及创建一些目录
EDIT PARAMS MGR
port 7809
DYNAMICPORTLIST 7810-7860
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
AUTORESTART EXTRACT *,RETRIES 15,WAITMINUTES 3,RESETMINUTES 180
AUTOSTART EXTRACT *
目标端同上
start mgr
info mgr
create subdirs
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
• 14
• 15
3.CONFIGURE INITAL EXTRACT PROCESS IN SOURCE(可选)
ADD EXTRACT EINI_1, SOURCEISTABLE
EDIT PARAMS EINI_1
EXTRACT EINI_1:说明这是EXTRACT进程,名字是EINI_1
SETENV:环境变量
USERID:数据库OGG用户
PASSWORD:数据库用户OGG的密码
RMTHOST:目标端地址,如果在/etc/hosts文件里已经设置解析,可以写主机名
MGRPORT:目标端MGR管理进程监听的端口
RMTTASK REPLICAT:目标端REPLICAT应用进程的组和名字
TABLE:源端要初始化数据的表的名字
编辑好捕获进程EINI_1后,还需要在目标端配置REPLICAT应用进程,名字要和源端的捕获进程EINI_1里面RMTTASK REPLICAT参数配置的一样,也就是还需要在目标端配置RMTTASK REPLICAT RINI_1。
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
4.CONFIGURE INITAL REPLICAT PROCESS IN TARGET(可选)
ADD REPLICAT RINI_1, SPECIALRUN
EDIT PARAMS RINI_1
REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1
SETENV:语言变量,同捕获进程EINI_1
ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,详见OGG官方文档。
USERID、PASSWORD:同捕获进程EINI_1参数介绍
DISCARDFILE:错误信息存放位置及命名规则
MAP:源端捕获的表的名字
TARGET:目标端同步的表的名字,可以不在同一SCHEMA。
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
5.START INIT LOAD IN SOURCE(可选)
start extract eini_1 只用在源端启动,其对应rini_1进程在目标自动启动。
info eini_1
view report eini_1
• 1
• 2
• 3
• 4
初始化进程只运行一次,运行完了,俩端的表被同步,进程组自动停止, 如果在初始化过程中出现进程挂起,abend 情况,可以通过view repot 查看进程信息 ,或者查看$OGG_HOME/ggser.log.
通常情况下,对于初始化装载(步骤3,4,5),我们更多的是使用源端按照SCN导出,然后再导入目标断,最后通过使用
startaftercsn
• 1
来完成数据的快速同步
6.CONFIG EXTRACT PROCESS IN SOURCE SYSTEM
EDIT PARAMS EORA_1
Extract EORA_1
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg@prod,password Ogg
tranlogoptions asmuser sys@ASM1,asmpassword
如果出现忘记ASM密码,可以在Oracle 11G平台上使用 TranlogOptions DBLOGREADER 代替
threadoptions maxcommitpropagationdelay 60000
warnlongtrans 2h,checkinterval 3m
dynamicresolution
gettruncates
reportcount every 1 minutes,rate
discardfile ./dirrpt/extsmz.dsc,append,megabytes 1024
exttrail ./dirdat/sz
ddl include mapped
ddloptions addtrandata, report
table scott.*;
ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
如果是集群模式需要依据节点数添加Thread关键词来指定抽取
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
• 14
• 15
• 16
• 17
• 18
• 19
• 20
• 21
• 22
7.DEFINE GOLDENGATE LOCAL TRAIL
add exttrail ./dirdat/sz, extract EORA_1, megabytes 200
添加本地trail文件配置,添加提取、捕获数据的存放位置及文件 到这个进程单个文件大小200M
• 1
• 2
8 START EXTRACT PROGRESS EORA_1
start eoar_1
info eora_1
$ll $OGG_HOME/dirdat/
查看dirdat目录下已捕获的TRAIL文件是否以sz开头
• 1
• 2
• 3
• 4
• 5
9.CONFIGURE PUMP PROCESS IN SOURCE SYSTEM
add extract Pora_1 ,exttrailsource ./dirdat/sz
添加PUMP进程PORA_1到OGG,并指定本地的TRAIL文件。
edit param Pora_1
extract Pora_1
passthru PASSTHRU是说data pump不对数据进行转换
rmthost 192.167.3.99, mgrport 7809,compress
numfiles 5000
dynamicresolution
rmttrail ./dirdat/sz 复制到目标该地址,以备目标库复制进程应用
table scott.*;
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
10.ADD GOLDENGATE REMOTE TRAIL IN SOURCE SYSTEM
add rmttrail ./dirdat/sz,extract Pora_1
START EXTRACT PORA_1
$ ll dirdat/ 目标端验证ogg安装目录下dirdat是否出现指定的trail文件
• 1
• 2
• 3
• 4
11.CONFIGURE REPLICAT PROCESS IN TARGET SYSTEM
ADD REPLICAT RORA_1, EXTTRAIL ./dirdat/sz
添加复制进程 及文件,文件来源于源端 pump进程
EDIT PARAM RORA_1
REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg, PASSWORD Ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE
MAP scott.emp, TARGET scott.emp;
MAP scott.dept, TARGET scott.dept;
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
12.CREATE GLOBALS PARAMETER IN TARGET SYSTEM
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE ogg.ggschkpt
exit
ll GLOBALS
DBLOGIN USERID ogg, PASSWORD OggADD CHECKPOINTTABLE
添加检查点 为了断点续传,配置成功后,在目标端ogg用户下也有对应检查点表产生
• 1
• 2
• 3
• 4
• 5
• 6
• 7
13.CONFIG A BASE-ON_SCN’S EXPDP IN SOURCE SYSTEM
SQL> col current_scn for 9999999999999999999999999999999999
SQL> select current_scn from v$database;
CURRENT_SCN
41423196
SYS EXP_DIR
/backup/expdp_ogg/
nohup expdp “‘/ as sysdba’” directory=EXP_DIR dumpfile=expdpscott2019101211_%U.dmp logfile=expdpscott2019101211.log schemas=scott content=all flashback_scn=42256141 parallel=2 cluster=N&
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
14.CONFIG A BASE-ON_SCN’S IMPDP IN TARGET SYSTEM
nohup impdp “‘/ as sysdba’” directory=EXP_DIR dumpfile=expdpscott2019101211_%U.dmp logfile=impdpscott2019101211.log parallel=2 cluster=N &
• 1
15.START REPLICATE PROCRESS IN TARGGET SYSTEM
$ cd /ogg
$ ./ggsci
start Rora_1,aftercsn 42256141
• 1
• 2
• 3
• 4
最后,再来个总的配置顺序图