第一次配goldengate的过程比较艰辛,配了4天才配成。再次得到教训You can't be too careful!!!!!!
下面就简单介绍一下配置direct load的过程和出现的错误。
环境:redhat 5.7 X86, goldengate 11.1.1 for oracle 11g
这里特别提示:source和target的goldengate的版本一定要一致,不然会有意想不到的错误。我就是把source端装成11.2.1,而targer端装的11.1.1,这样折腾了好几天才搞定。
1,配置ogg会用到的环境变量
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=ggsource61
PATH=$ORACLE_BASE/gg11_1_1:$ORACLE_HOME/bin:$PATH
#gg11_1_1存放的是ogg的所有文件
LD_LIBRARY_PATH=$ORACLE_BASE/gg11_1_1:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
#DISPLAY=localhost:1018.0
DISPLAY=localhost:0.0
export DISPLAY LD_LIBRARY_PATH ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
2,安装ogg(source和target都要安装,个人认为切版本最好一致)
ogg的安装相当简单。
a,解压ogg的.zip压缩包。会得到ggs_Linux_x86_ora11g_32bit_v11_1_1_0_0_078.tar。
b,tar -xvf ggs_Linux_x86_ora11g_32bit_v11_1_1_0_0_078.tar
c,最好在gg11_1_1目录下面输入ggsci,进入ogg的控制工具
d,在ggsci下:ggsci> create subdirs。 这样就安装好了ogg
下面的步骤只用在source端执行。
e,sqlplus /nolog
SQL>conn /as sysdba
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SYSTEM SWITCH LOGFILE;
3,配置manager进程
source端:
ggsci> edit params mgr (进入vi编辑器)
port 7809 -- ogg默认的端口,也可配置为其他的端口。保存,退出
ggsci> start mgr
查看mgr的信息:
ggsci> info mgr
在source端创建测试用的表,并插入数据,可在sqlplus中的gguser(测试ogg用的临时用户)用户下执行ogg安装目录下面的脚本,脚本demo_ora_create会创建两个表:TCUSTMER,TCUSTORD。
[oracle@localhost gg11_1_1]$ ll demo*
-r--r--r-- 1 oracle oinstall 883 Mar 13 2010 demo_ora_create.sql
-r--r--r-- 1 oracle oinstall 821 Mar 13 2010 demo_ora_insert.sql
targer端:
target端同样要配置mgr,它的端口可以和source的相同,也可不同。
在targer端,最好在同样的用户下创建这两个表,但不执行demo_ora_insert.sql
4,向ogg注册要实现数据同步的用户及sechema。
GGSCI> DBLOGIN USERID system, PASSWORD oracle
Successfully logged into database.
GGSCI> ADD TRANDATA gguser.*
Logging of supplemental redo log data is already enabled for table GGUSER.TCUSTMER.
Logging of supplemental redo log data is already enabled for table GGUSER.TCUSTORD.
GGSCI> INFO TRANDATA gguser.*
Logging of supplemental redo log data is enabled for table GGUSER.TCUSTMER
Logging of supplemental redo log data is enabled for table GGUSER.TCUSTORD
EXTRACT EINIKK
USERID system, PASSWORD "oracle"
RMTHOST 192.168.44.162, MGRPORT 7809
RMTTASK REPLICAT, GROUP RINIKK
TABLE gguser.TCUSTMER;
TABLE gguser.TCUSTORD;
|
注:RMTHOST是target的IP,GROUP RINIKK中的RINIKK和target端的replicat进程rinikk一致。
b.配置target端的replicat进程
ggsci> add replicat rinikk, specialrun
ggsci> edit params rinikk
REPLICAT RINIKK
ASSUMETARGETDEFS
USERID system, PASSWORD oracle
DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE
MAP gguser.*, TARGET gguser.*;
|
c,在source端,ggsci>start extract einikk 完成source和target的数据同步。
错误总结:
一下错误是在我的source和target的ogg版本不一致的情况下得到的:
1,ERROR OGG-00212 Invalid option for MAP: gguser.*
有人的说法是因为replicat的rinikk参数配置不正确。应该map参数中target和前面的逗号间有个空格。
2,OGG-01389 FILE HEADER FAILED TO PARSE TOKENS。这是这个错误让我发现两个ogg的版本不一致。
这个错误是在target端出现的,view report rinikk。
***********************************************************************
** Running with the following parameters **
***********************************************************************
REPLICAT rora1
ASSUMETARGETDEFS
USERID system, PASSWORD "******"
DISCARDFILE ./dirrpt/rora1.dsc, PURGE
MAP gguser.*, TARGET gguser.*;
CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 512M
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1G
CACHESIZEMAX (strict force to disk): 881M
Database Version:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
Database Language and Character Set:
NLS_LANG = "AMERICAN_AMERICA.AL32UTF8"
NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA"
NLS_CHARACTERSET = "AL32UTF8"
For further information on character set settings, please refer to user manual.
***********************************************************************
** Run Time Messages **
***********************************************************************
Source Context :
SourceModule : [er.idlr]
SourceID : [/home/ecloud/workspace/Build_FBO_OpenSys_r11.1.1.0.0_
078_[34087]/perforce/src/app/er/idlr.c]
SourceFunction : [idlr_command_handler]
SourceLine : [534]
ThreadBacktrace : [10] elements
: [./replicat(CMessageContext::AddThreadContext()+0x26)
[0x81ff1d6]]
: [./replicat(CMessageFactory::CreateMessage(CSourceCont
ext*, unsigned int, ...)+0x817) [0x81f5937]]
: [./replicat(_MSG_ERR_TRAIL_HEADER_CANNOT_PARSE_TOKENS(
CSourceContext*, char const*, unsigned int, char const*, CMessageFactory::MessageD
isposition)+0x8b) [0x81cb7fb]]
: [./replicat(IDLR_input_event_handler(short*, char**, u
nsigned int*, ggs::gglib::ggtrail::TrailHeader**)+0x214) [0x83c05b2]]
: [./replicat(XR_read(char*, __std_rec_hdr*, short, shor
t, char*, short*, char*, short*, char*)+0x7b) [0x8393a33]]
: [./replicat(READ_EXTRACT_RECORD(chkpt_context_t*, shor
t, char*, __std_rec_hdr*, int*, int*, long long*, short, short, char*, short*, cha
r*, short*, long long*, char*)+0x208) [0x849f598]]
: [./replicat [0x84acb64]]
: [./replicat(main+0x6957) [0x812a037]]
: [/lib/libc.so.6(__libc_start_main+0xdc) [0xbece9c]]
: [./replicat(__gxx_personality_v0+0x1b1) [0x8109291]]
2013-02-05 09:04:15 ERROR OGG-01389 File header failed to parse tokens. File I
NITIALDATALOAD, last offset 830, data: 0x 33E: 000000013A00000200003B000004000
000013C000014000000101414141414141414141414141114141433000074300000070005454F52413
131000002000232000002000B330000020002340000020001350000020000360000020001370000410
03F56657273696F6E2031312E322E312E302E31204F4747434F52455F3131.
我是把source端也装成ogg11.1.1后,同步数据成功的。如果想用ogg11.2.1下和ogg11.1.1同步的解决方案在
http://www.dbrabbit.com/archivers/ogg-01389-file-header-failed-to-parse-tokens.html