11g ogg搭建

原理

1.ogg一般来说有4个进程,Manager进程,Extract进程,Pump进程,Replicat进程
2.源库有抽取进程,会把相应表的事务抽取出来,写入本地队列文件
3.dump进程吧队列中的文件发送到目标库的队列文件中,再由目标库的回复进程进行还原

1.公共操作

alter database archivelog;
alter system set enable_goldengate_replication=true;

select supplemental_log_data_min from v$database;
alter database add supplemental log data;
ALTER SYSTEM ARCHIVE LOG CURRENT;

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export GG_HOME=/u01/ogg
export PATH=$PATH:$ORACLE_HOME/bin:$GG_HOME
alias ggsci='cd $GG_HOME;ggsci'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

create subdirs
Parameter files                /u01/ogg/dirprm: already exists    (放置参数文件)
Report files                   /u01/ogg/dirrpt: created           (放置报告文件)
Checkpoint files               /u01/ogg/dirchk: created           (放置ogg的检查点文件,抽取进程检查点的检测)
Process status files           /u01/ogg/dirpcs: created           (进程的状态记录)
SQL script files               /u01/ogg/dirsql: created           (抽取出来的日志还原sql语句)
Database definitions files     /u01/ogg/dirdef: created           (数据库定义文件,数据库是什么样的数据库)
Extract data files             /u01/ogg/dirdat: created            (抽取出来的日志放的文件,只能两位字母,全名八位)
Temporary files                /u01/ogg/dirtmp: created            (抽取和复制要ogg用户干活(影子用户:主备库的影子用户名称可以       相同也可以不同)

2.源库配置

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

2.1 OGG数据库用户权限

create tablespace tbs_gguser datafile '/u01/app/oracle/oradata/gguser.dbf' size 50M autoextend on;
create user ogg identified by ogg default tablespace tbs_gguser temporary tablespace TEMP quota unlimited on tbs_gguser;

grant connect to ogg;
grant create session to ogg;
grant alter session to ogg;
grant resource to ogg;
grant select any dictionary to ogg;
grant select any table to ogg;
grant flashback any table to ogg;
grant alter any table to ogg;

2.2 管理进程

是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。

edit params mgr
port 7809
DYNAMICPORTLIST 7820-7830, 7833, 7835
autostart er *
autorestart er *, retries 5, waitminutes 3
purgeoldextracts /u01/ogg/dirdat/*,usecheckpoints, minkeepdays 7

start mgr
info mgr
view report mgr

2.3 抽取进程

运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查 并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程 后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

1.添加表级附加日志
dblogin userid ogg, password ogg  
add trandata scott.emp
or
addadd trandata scott.*

2.添加抽取进程,从数据库日志中抓取有效数据
add ext extra, tranlog, begin now (抽取的类型,文件名,抽取的日志,立即抽取)
extra为进程名,一般为ext开头表示是extract进程,后面可以加1-2位字符标识;tranlog表示要抽取数据库日志;begin now表示从当前时间点开始抽取

3.为extra进程配置本地队列,本地的trail文件以oa开头
add exttrail /u01/ogg/dirdat/oa, ext extra, MEGABYTES 100 (等价于)add exttrail ./dirdat/oa,extract extra,megabytes 100  
ps 抽取进程队列:注意此时exttrail指定的是本地队列位置,MEGABYTES默认10M

1.配置日志抽取进程
edit params extra
extract extra                                                       如果是使用了data pump,则抽取日志进程extra参数如下
setenv ( nls_lang = american_america.al32utf8 )
setenv (oracle_sid = orcl)
userid ogg, password ogg
exttrail /u01/ogg/dirdat/oa
dynamicresolution
--GETUPDATEBEFORES
--DDL INCLUDE ALL (DDL复制参数)
--DDLOPTIONS ADDTRANDATA NOCROSSRENAME REPORT (ddl复制参数)
--NOCOMPRESSDELETES
table scott.emp;
table scott.dept;
--table scott.*;
--table scott.a, cols (col1, col3); //只复制该表的col1和col3列
--table acott.b, colsexcept (col4); //复制该表除col4外的所有列相比不使用data pump,其区别就是使用exttrail 代替了rmttrail,也无需再配置rmthost。
ps 保存退出。上述命令,配置的抽取进程组名为extra,taril文件的前缀为oa,GG自动加上6位数字,从000000开始,到999999,之后再循环。table参数表示只处理定义的表,具体到本示例,只处理scott.emp1和scott.dept1,注意:分号的使用

4.启动抽取进程
start ext extra
info ext extra
info ext extra detail
日志在dirdat目录下。操作系统下,查看oa000000文件已产生。
使用view report查看产生的报告
view report extra

2.4 pump推送进程

运行在数据库源端,如果源端使用了本地trail文件,那么Pump进程就会把Trail文件以数据块的形式通过 TCP/IP协议发送到目标端,我们配置都是这种方式。Pump进程本质是Extract进程的一种特殊形式,如果不使用Trail文件,那么 Extract进程在抽取完数据后,直接投递到目标端。与Pump进程相对应的叫Server Collector进程,这个进程不需要引起我们关注,因为在实际操作过程中无需对其进行任何配置,它运行在目标端,任务就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。

1.配置pump进程文件
edit params datapush
extract  datapush
setenv ( nls_lang = american_america.al32utf8 )
passthru                            --告诉抽取,推送进程不进行任何更改)
rmthost ogg,mgrport 7809           --远端机器的的机器名以及端口号) 推送没有连接数据库的过程,直接连接计算机系统 
rmttrail  /u01/ogg/dirdat/dp
--dynamicresolution
table scott.*;
table scott.dept;
ps 存盘退出。pump是另一种类的抽取进程,该进程中不能定义SETENV NLS_LANG。passthru表示不在源和目的之间做任何的筛选或字段匹配。源和目的的数据结构完全相同。

2.增加pump进程组:将本地的./dirdat/oa文件传送到目标端
add extract datapush,exttrailsource /u01/ogg/dirdat/oa

3.为pmpa进程配置远程队列,队列的位置是源端的主机目录,传送到目标端后命名以dp开头。
add rmttrail /u01/ogg/dirdat/dp, ext datapush, MEGABYTES 100

4.启动推送进程
start ext datapush

5.使用view report查看产生的报告
view report datapush

3.目标端操作

3.1 创建用户及权限

create tablespace tbs_gguser datafile '/data/app/oracle/oradata/gguser.dbf' size 50M autoextend on;
create user ogg identified by ogg default tablespace tbs_gguser temporary tablespace TEMP quota unlimited on tbs_gguser;

grant alter session to ogg;
grant create session to ogg;
grant connect to ogg;
grant resource to ogg;
grant select any dictionary to ogg;
grant select any table to ogg;
grant flashback any table to ogg;
grant insert any table to ogg;
grant update any table to ogg;
grant delete any table to ogg;

3.2 复制进程

运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。
配置文件,名字必须为GLOBAL,因为复制端只有一个进程,所以是全局的

1.创建全局检查点表
dblogin userid ogg, password ogg 
edit params ./GLOBALS
checkpointtable ogg.ggschkpt
ps 这就在ogg的安装目录下,创建了GLOBALS文件。GLOBALS文件是全局文件,对所有的组都有效

2.连接数据库,建立检查点表
add checkpointtable ggschkpt   

3.配置复制文件
edit params rep_f
replicat  rep_f    
setenv ( nls_lang = american_america.al32utf8 )    
setenv (oracle_sid = orcl)   
userid ogg,password ogg                                         
assumetargetdefs
handlecollisions           表示自动处理冲突的情况(一般情况不要加)                 
reperror default,abend       
dynamicresolution                                            
discardfile ./dirrpt/repa.dsc,append,megabytes 100 --purge         
map scott.dept,target scott.dept1;
map scott.*,target scott.*;

4.增加复制组
add replicat rep_f,exttrail ./dirdat/dp,nodbcheckpoint
--checkpointtable ogg.ggschkpt
--add checkpointtable ogg.ggschkpt

4.初始化数据


源端:
Select current_scn from v$database;
expdp system/123456@orcl1 cluster=no parallel=6 filesize=20G dumpfile=orcl1_db_20190923_%U.dmp logfile=orcl1_db_20190923.log SCHEMAS=scott compression=ALL  flashback_scn=2269219

目标端:
impdp system/oracle directory=DATA_PUMP_DIR cluster=no parallel=6 dumpfile=orcl1_db_20190923_%U.dmp logfile=imp_orcl1_db_20190923.log SCHEMAS=scott DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS
start rep rep_f,aftercsn 2269219

启动目标端
start replicate rep_f, aftercsn 2269219
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶博雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值