OS配置
内存
每个进程需要25-55M内存,最大支持5000默认300并发;
SWAP
默认OGG将数据swap到dirtmp子目录,大事务很容易将整个磁盘填满,可为其单独分配一个磁盘,由cachemgr的cachedirectory选项指定,见注1
磁盘
安装路径需要40M
权限
Extract/replicat/manager进程必须对OGG目录有读写权限
安装
解压安装包,运行shell命令调用GGSCI,执行create subdirs
GGSCI (raclinux1.gj.com) 1> create subdirs
Creating subdirectories under current directory /u02/stage_ogg112_ora11
Parameter files /u02/stage_ogg112_ora11/dirprm: already exists
Report files /u02/stage_ogg112_ora11/dirrpt: created
Checkpoint files /u02/stage_ogg112_ora11/dirchk: created
Process status files /u02/stage_ogg112_ora11/dirpcs: created
SQL script. files /u02/stage_ogg112_ora11/dirsql: created
Database definitions files /u02/stage_ogg112_ora11/dirdef: created
Extract data files /u02/stage_ogg112_ora11/dirdat: created
Temporary files /u02/stage_ogg112_ora11/dirtmp: created
Stdout files /u02/stage_ogg112_ora11/dirout: created
创建数据库用户并赋权限,mgr和extract/replicat可共享同一用户
如果要复制DDL还需单独创建一个用户http://space.itpub.net/?uid-15480802-action-viewspace-itemid-762694
编辑参数文件
编辑manager参数文件 edit params MGR
--唯一不可或缺的只有PORT,但强烈推荐dynamicportlist
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART ER t*
AUTORESTART ER t*, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS /ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2
默认端口号7809,由manager参数文件的PORT决定;
如果OGG target端安装了防火墙,需要额外的端口接受远端OGG的动态TCP/IP连接,其中每个collector/replicat进程各占一个端口,使用参数dynamicportlist为其分配端口,
由collector进程负责查找绑定,如果没有指定dynamicportlist或端口数不足,collector尝试使用7840端口,不可用则递增继续尝试,此行为会延阻远端请求的接受;
编辑extract/replicat参数文件
如果有多个instance,可在参数文件中设置
Setenv(ORACLE_HOME = “”)
Setenv(ORACLE_SID = “”)
Replicat需创建检查点表
1
DBLOGIN, USERID db_user [, PASSWORD pw [encryption options]]
ADD CHECKPOINTTABLE owner.table
2
Edit params ./GLOBALS
Checkpointtable owner.table
检查点表默认使用异步commit nowait机制,即replicat不必等待操作完毕便可返回;可编辑DBOPTIONS参数使用disablecommitnowait;
如果使用checkpoint文件替代检查点表,replicat使用commit wait避免数据库失败导致事务不一致;
Extract进程有2种模式:
Classic:OGG从redo/archive log捕获信息
Integrated:extract进程直接与db logmining server交互以接受LCR,相比classic支持更多数据类型
优点:
1 由于使用logmining server访问redo stream,可自动在不同copy间切换
2 faster filtering of tables
3 handle point-in-time recovery and RAC integration more efficiently
4 RMAN自动保留待extract处理的archive log
有两种配置方式--Local:source db 和mining db为同一个;Downstream:mining db和source db分开存放
配置数据库
完整性约束
禁用target表的trigger和级联约束
Dboptions suppresstriggers:支持10205和11R2,会话期间replicat不禁用trigger,但会阻止trigger执行;其他版本则须禁用完整性和触发器约束;
延迟约束检查
如果source table的约束为deferrable则target table必须为deferrable:
1 replicat参数文件使用SQLEXEC (“alter session set constraint deferred”)
2 replicat参数文件配置dboptions deferrefconst
配置replicat克服由transient 主键duplicate导致的完整性错误:
Update item set code = 2 where code =1 ;
Update item set code = 3 where code =2 ;
Update item set code = 4 where code =3 ;
--code为主键列,replicat执行第一条语句会遭遇ORA-00001,默认不处理即replicat abend
Pre11202:replicat配置handletpkuupdate,同时将target table的约束改为deferrable initially immediate,否则依照handcollisions/reperror定义的规则处理出现的错误
11202:replicat默认使用oracle workspace manager自动处理此问题,有2点要求:1 为replicat数据库用户赋予dbms_xstream_gg.enable_tdup_workspace();2 target表不能有deferrable约束
如果使用workspace,会忽略handlecollisions/reperror,如果使用batchsql,遭遇错误时会退出grouped transaction改为正常模式执行,如果继续发生ora-00001则回滚此事务;
Workspace不支持一条sql同时包含transient PK duplicate和out-of-line column update,例如LOB/XMLType
确保行唯一性
除非使用了keycols,否则按如下顺序定位行
主键;第一个unique key(所含列不能为invisible index);将所有列组建为pseudo key;
配置logging properties
开启DB supplemental log
开启schema supplemental log:用于DDL replication,执行add schematrandata schema
开启table supplemental log:add trandata table [, COLS columns] [, NOKEY]
如果target 表没有pk/uk则可能存在重复行,为限制更新行数可使用dboptions limitrows
字符集转换
使用setenv设置NLS_LANG参数:SETENV (NLS_LANG = NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET)
查看global设置:
Sqlplus执行如下命令
SHOW PARAMETER NLS_LANGUAGE
SHOW PARAMETER NLS_TERRITORY
SELECT name, value$ from SYS.PROPS$ WHERE name = 'NLS_CHARACTERSET';
SHOW PARAMETER NLS_LENGTH_SEMANTICS
GGSCI查看view report查看NLS_LANG相应设置
设置fetch选项
部分update操作需要extract从source db获取额外行数据
默认OGG使用闪回查询获取一致性读,也可强制其从表直接读取最新数据fetchoptions nousesnapshot
Stats extract , reportfetch—显示extract fetch信息,可配置statoptions reportfetch将其作为默认选项
特殊数据类型
TIMESTAMP
Oracle会将TIMESTAMP WITH LOCAL TIME ZONE转换为数据库的本地时区,如果source/target db时区不同则会出现数据不一致;
为此可设置repicat参数文件,在USERID后添加:SQLEXEC "ALTER SESSION SET TIME_ZONE = ‘value of source_timezone’"
LOB
Repliat将LOB写入target db时会导致碎片,为减少IO可使用LOB缓存机制,即先将数据缓存到buffer,等后者写满一次性刷入磁盘;
可通过dboptions的lobwritesize/disablelobcaching设置;
如果clob存储了binary数据,将NLS_LANGUAGE/NLS_LANG设置为相同值;
Integrated capture从redo log读取lobs,而update只记录改动部分的数据,为强制记录整个lob数据,配置extract参数tranlogoptions的fetchpartiallob选项;
Unused列:默认不支持,可配置extract的dboptions选项allowunusedcolumn将其捕获
Redo/archive log位于不同路径:配置extract的tranlogoptions选项
Truncate操作:单一的truncate table可通过gettruncats参数;其他诸如alter table truncate partition则须配置DDL
Sequence:使用OGG DDL
注1:
CACHEMGR {
[, CACHESIZE ]
[, CACHEDIRECTORY [] [, ...]]
[, CACHEPAGEOUTSIZE ]
}
实际耗用的cachesize可通过report报告中的process vm avail from OS查看
cachedirectory默认为安装目录的dirtmp
…
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 1G
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1.79G
CACHESIZEMAX (strict force to disk): 1.58G
…
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-762721/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15480802/viewspace-762721/