今天刚刚接触了,oracle goldengate (ogg)这个数据同步工具,暂时不知道它到底有多牛逼,只是很稀奇,于是趁热打铁记录下来,下面配置的最简单的一种单项复制模式。至于其他复杂的模式以后慢慢研究。
--数据库准备:
alter database open;
archive log list;
--开启强制日志模式
alter database force logging;--强制日志
alter database add supplemental log data;--追加日志
--建立ogg用户
create user ogg identified by ogg;
grant connect,resource,dba to ogg;
grant create table,create sequence to ogg;(非常重要!)
--进入ogg控制台
-- ./ggsci
--create subdirs ,让ogg创建其需要用到的目录
--手工在ogg目录下创建discard文件夹,mkdir discard
--ogg安装
--为新创建的ogg用户执行配置脚本
在ogg的安装目录下登陆sqlplus,使用sys登陆sqlplus,然后执行如下配置
[oracle@local ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> @marker_setup.sql
SQL> @ddl_setup.sql;
SQL> @role_setup.sql;
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable.sql;
进入ogg控制台,测试用户是否创建成功
GGSCI (local) 1> dblogin userid ogg
Password: ogg
Successfully logged into database.
通过上述步骤,ogg就安装成功了。
--报错:触发器“SYS.GGS_DDL_TRIGGER_BEFORE无效且未通过验证”
--解决方法:
1.ddl_disable.sql,ddl_remove.sql,marker_remove.sql删除ddl配置,
2.GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
3.再 DDL重新配置,
---配置进程文件:
首先在oracle中查询select userenv( 'language') from dual;
--manager 主进程 (mgr.prm)
PORT 7809
DYNAMICPORTLIST 7840-7939
--AUTOSTART ER *
--AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS d:\ogg\dirdat\*, usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
--extract 抽取进程 (ext102.prm):
extract ext102
SETENV(ORACLE_HOME="D:\app\Administrator\product\11.2.0\dbhome_1")
SETENV(ORACLE_SID="tmistest")
SETENV(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" )
userid ogg,password ogg
exttrail D:\ogg\dirdat\e1
tranlogoptions excludeuser ogg
dynamicresolution
gettruncates
TABLE zhujia.test;
--pump 投递进程 p102.prm:
extract p102
SETENV(ORACLE_HOME="D:\app\Administrator\product\11.2.0\dbhome_1")
SETENV(ORACLE_SID="tmistest")
SETENV(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" )
userid ogg , password ogg
rmthost 172.18.17.102 , mgrport 7809
rmttrail D:\ogg\dirdat\eg
PASSTHRU
gettruncates
table zhujia.test;
--replicat 复制进程 rep002.prm
replicat rep002
ASSUMETARGETDEFS
SETENV(ORACLE_HOME="D:\app\Administrator\product\11.2.0\dbhome_1")
SETENV(ORACLE_SID="tmistest")
SETENV(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" )
userid ogg,password ogg
reperror (default,discard,abend)
discardfile d:\ogg\discard\repcz.dsc ,append,megabytes 200
gettruncates
HANDLECOLLISIONS
map zhujia.test, target zhujib.test;
--以上四个进程文件配置好后,放入文件夹 D:\ogg\dirprm
--然后登入ogg控制台
--ogg控制台里添加进程 注意位置和命名不要写错
dblogin userid ogg password ogg
add trandata zhujia.test;
--edit param mgr
info all(查看当前mgr状态)
start manager(启动manager,启动完后可以用info all再次查看状态)
--添加一个ogg extract进程,用于抽取源服务器数据
ADD EXTRACT ext102, TRANLOG , BEGIN now
ADD EXTTRAIL d:\ogg\dirdat\e1, EXTRACT ext102
--edit params ext102 (修改 ext102的配置参数)
--添加投递进程 p102
ADD EXTRACT p102, EXTTRAILSOURCE d:\ogg\dirdat\e1, BEGIN now
ADD RMTTRAIL d:\ogg\dirdat\eg, EXTRACT p102
--添加复制进程rep002:
dblogin userid ogg passsword ogg
edit params ./GLOBAL
add checkpointtable ogg.ckpt_table
ADD replicat rep002 EXTTRAIL d:/ogg/dirdat/eg, checkpointtable ogg.ckpt_table
--edit param rep2
ADD REPLICAT rep002, EXTTRAIL d:\ogg\dirdat\eg, BEGIN now