dml 配置过程与测试概要
在源端创建专用的表空间、schema、并授权。
create tablespace goldengate datafile 'goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
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 select any transaction to goldengate;
检查源端数据库是否在归档模式,强烈建议在归档模式。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /arch
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
端:
添加附加日志来唯一标识一行记录,要在数据库级别打开最小开关。为了减少整个数据库添加附加日志,以及减少归档量,
goldengate建议复制哪些对象,就添加哪些表的附加日志(我们到时候是拿hr用户下的表来实验)。
检查:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
打开:
SQL> alter database add supplemental log data;
Database altered.
再次查看:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
切换日志组,使附加日志开关生效。
SQL> alter system switch logfile;
System altered.
解释:在正常情况下,oracle是用rowid来唯一标示一行记录的,但goldengate这里不够,需要打开附加日志。
安装与配置
GGSCI (gg2) 2> create subdirs
GGSCI (oratest) 80> view params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
启动配置的管理进程
GGSCI (gg2) 4> start mgr
Manager started.
select owner||'.'||table_name table_name,logging
from dba_tables
where owner='SENDER';
SQL> alter table SENDER.A1 logging;
源端:
配置hr下面表的表级附加日志。配置登陆用户。并检查日志是否添加成功。
以goldengate这个schema登陆数据库。
GGSCI (gg1) 10> dblogin userid goldengate, password goldengate
Successfully logged into database.
查看:
GGSCI (gg1) 11> info trandata hr.*
add extract ext_demo, tranlog, begin now, threads 1
参数分析:
tranlog:表示数据抓取的来源是数据库的redo数据。
begin now:表示我们在启动这个抓取进程的就去抓取数据。
threads 1:表示我们数据库有多少个redo threads,单实例基本上是1或者不设,rac就自己设置了,配置过RAC的基本都了解
添加源端的队列文件。
GGSCI (gg1) 15> add extract ext_demo,tranlog, begin now, threads 1
GGSCI (gg1) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100
EXTTRAIL added
./dirdat:表示trail文件的目录
r1:trail文件的前缀
extract ext_demo:值指定给那个进程用的(ext_demo)。
megabytes 100:文件大小是100m
编辑我们刚刚在源端配置的抓取进程的参数:
GGSCI (gg1) 16> edit param ext_demo
EXTRACT EXT_DEMO
userid goldengate,password goldengate
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 5000
DISCARDFILE ./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 3:00
exttrail ./dirdat/r1,megabytes 100
dynamicresolution
TRANLOGOPTIONS EXCLUDEUSER goldengate
TRANLOGOPTIONS convertucs2clobs
TRANLOGOPTIONS DBLOGREADER
TABLE SENDER.*;
setenv (ORACLE_SID=ogg):指定oracle的sid,单机环境下可以不设或者bashprofile文件中设置了默认的,也可以不设,但是集群环境就要指定了,这里我们强烈建议指定。
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK):源端数据库的字符集,一定要跟数据库中匹配。
userid goldengate,password goldengate:告诉抓取进程是通过这个用户登陆数据库的。
exttrail ./dirdat/r1,megabytes 100:与我们上面配置抓取进程的设置要一致,路径和大小嘛。
TABLE HR.*:最重要的,告诉抓取进程抓取的是哪些用户哪些表的数据
配置datapump进程,将抓取数据传到目标主机。负责TCPIP通讯。
GGSCI (gg1) 31> add extract dpe_demo, exttrailsource ./dirdat/r1
EXTRACT added.
输出:目标主机怎么写,也是定义datap