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