暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle GoldenGate记录

我的工作 2020-07-22
653

实施环境 RHEL6、Oracle11g、GoldenGate11.2

前提安装好rhel6和数据库oracle 11g,以及goldengate11.2

1.环境变量检查
export LD_LIBRARY_PATH=/home/oracle/ogg/:$ORACLE_HOME/lib:/usr/lib:$LD_LIBRARY_PATH
(hp_linux环境变量
export LIBPATH=/arcbak/goldengate:$ORACLE_HOME/lib:/usr/lib:$LIBPATH
)
2.创建表空间及用户
查询是否存在OGG用户及表空间
select username,default_tablespace from DBA_USERS;
查看表空间安置的目录
select tablespace_name,file_name,bytes,status from dba_data_files order by tablespace_name,file_name
示例
create tablespace goldengate_tbs datafile  '/u01/oracle/oradata/orcl/ogg.dbf'  size 50m;
create tablespace goldengate_tbs datafile  '/u01/oracle/oradata/orcl2/ogg.dbf'  size 50m;
创建用户
CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE goldengate_tbs;
赋予用户权限
GRANT CONNECT TO goldengate;
GRANT ALTER ANY  TABLE TO goldengate;
GRANT ALTER SESSION TO goldengate;
GRANT CREATE SESSION TO goldengate;
GRANT FLASHBACK ANY TABLE TO goldengate;
GRANT SELECT ANY DICTIONARY TO goldengate;
GRANT SELECT ANY TABLE TO goldengate;
GRANT RESOURCE TO goldengate;
GRANT drop ANY TABLE TO goldengate;
GRANT SYSDBA TO goldengate;
GRANT DBA TO goldengate;
3.查询当前字符集参数
SHOW PARAMETER NLS_LANGUAGE
SHOW PARAMETER NLS_TERRITORY
select * from NLS_DATABASE_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
根据查询记录当前参数为
AMERICAN.AMERICAN_ZHS16GBK
4.日志
archive log list;
如果非归档状态则开启
startup mount
alter database archivelog;
alter database open;
开启附加日志
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP
-------- --- ---
NO       NO  NO
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Database altered.
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.
SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
SUPPLEME SUP SUP
-------- --- ---
YES      NO  NO
ALTER DATABASE FORCE LOGGING;
create subdirs
edit param ./GLOBALS
5.指定ogg复制的用户
GGSCHEMA goldengate
CHECKPOINTTABLE goldengate.ggschkpt

dblogin userid goldengate, password goldengate
add checkpointtable goldengate.ggschkpt
6.执行脚本
源端操作
SQL>@marker_setup.sql
            Enter GoldenGate schema name: goldengate
SQL> @ddl_setup.sql
            Enter GoldenGate schema name: goldengate
SQL> @role_setup.sql
            生成用户角色,将该角色授予GoldenGate所有抽取、复制进程中登陆数据库的用户,在这里将该角色授予goldengate数据库用户。
            GRANT GGS_GGSUSER_ROLE TO goldengate;
SQL>@ddl_enable.sql
7.创建测试用户和表
create user ogg_test identified by ogg_test;
grant dba to ogg_test;
创建测试表
create table table_name
(
  column1        NUMBER primary key,
  column2   VARCHAR2(4000),
  column3         VARCHAR2(2) default 0);
create table table_name_2
(
  column1        NUMBER ,
  column2   VARCHAR2(4000),
  column3         VARCHAR2(2) default 0);
8.配置OGG_DDL
源端操作
GGSCI〉dblogin userid goldengate,password goldengate
GGSCI〉add trandata  ogg_test.table_name
add trandata  ogg_test.table_name_2
______________________________________________

GGSCI>edit param mgr
源端
port 7809
DYNAMICPORTLIST 7810-7839
--autostart er *
autorestart extract *, retries 5, waitminutes 3
purgeoldextracts ./dirdat/* USECHECKPOINTS, MINKEEPDAYS 7
userid goldengate, password goldengate
purgeddlhistory minkeepdays 7, maxkeepdays 7
purgemarkerhistory minkeepdays 7, maxkeepdays 7

目标端
port 7809
DYNAMICPORTLIST 7810-7839
--autostart er *
autorestart extract *, retries 5, waitminutes 3
purgeoldextracts ./dirdat/* USECHECKPOINTS, MINKEEPDAYS 7
--userid goldengate, password goldengate
--purgeddlhistory minkeepdays 7, maxkeepdays 7
--purgemarkerhistory minkeepdays 7, maxkeepdays 7

启动
start mgr
Manager started.
GGSCI (ogg.local) 8> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING     
________________________________________________
源端
添加extfs进程,从数据库日志中抓取有效数据
RAC执行
GGSCI>add ext extfs, tranlog, begin now,threads 2
单机执行
add ext extfs, tranlog, begin now

添加本地队列fs, extfs进程捕捉到的有效数据将写入本地队列
GGSCI>add exttrail ./dirdat/fs, ext extfs, megabytes 500
(500=500M,fs自定义)
为extfs进程配置参数
GGSCI>edit param extfs
extract extfs
setenv (ORACLE_SID="当前环境oracle_sid")
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
userid goldengate, password goldengate
REPORT AT 01:59
reportrollover at 02:00
TRANLOGOPTIONS CONVERTUCS2CLOBS
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY  9000 IOLATENCY 3000
--FETCHOPTIONS NOUSESNAPSHOT
--DBOPTIONS ALLOWUNUSEDCOLUMN
--GETUPDATEBEFORES
FETCHOPTIONS FETCHPKUPDATECOLS
--tranlogoptions altarchivelogdest primary instance ora9i2 /arc2, altarchivelogdest instance ora9i1  /arc1
discardfile  ./dirrpt/extfs.dsc,append,megabytes 10
numfiles 6000
dynamicresolution

DDL INCLUDE mapped
ddloptions nocrossrename,report,addtrandata

warnlongtrans 2h, checkinterval 3m
exttrail ./dirdat/fs
--table list
TABLE ogg_test.*;

(--为RAC系统使用)


配置dpefs进程
添加dpefs进程,将本地队列的数据抽取出来
GGSCI>add ext dpefs, exttrailsource ./dirdat/fs
添加远端队列,将dpe进程捕捉到的数据将写入该队列
GGSCI>add rmttrail  ./dirdat/fs, ext dpefs, megabytes 500
为dpe进程配置参数
(500=500m)
GGSCI>edit param dpefs
extract dpefs
setenv (ORACLE_SID="当前环境oracle_sid")
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
passthru
REPORT AT 01:59
reportrollover at 02:00
RMTHOSTOPTIONS TCPBUFSIZE 100000, TCPFLUSHBYTES 300000
rmthost 192.168.154.132,mgrport 7809     
rmttrail ./dirdat/fs
dynamicresolution
numfiles 3000

--table list
TABLE ogg_test.*;

--ddl table
table GOLDENGATE.GGS_MARKER;

____________________________________________

目标端
为生产中心传递过来的数据添加replicat进程
Add replicat repfs,exttrail ./dirdat/fs
为repfs进程配置参数文件如下
GGSCI>edit param repfs
replicat repfs
setenv (ORACLE_SID="当前环境oracle_sid ")
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
userid goldengate, password goldengate
sqlexec "Alter session set constraints=deferred"
REPORT AT 01:59
reportrollover at 02:00
ALLOWNOOPUPDATES
APPLYNOOPUPDATES
--handlecollisions
reperror default,abend
DDLERROR DEFAULT abend
--DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter
--ddloptions nocrossrename,report
discardfile ./dirrpt/repfs.dsc,append, megabytes 10
assumetargetdefs
--checksequencevalue
allownoopupdates
dynamicresolution
numfiles 6000

map ogg_test.* , target ogg_test.*;

9.源端插入测试数据,目标端查询
insert into table_name values (1,'abc','a');
update table_name set column2='ddd' where column1=1;
delete from table_name where column1=1;


欢迎关注我的公众号    扫描二维码或公众号搜索  “我的工作



文章转载自我的工作,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论