下面就为大家介绍一下新版的ogg的安装实施过程。我们采用linux+oracle11g和solairs+12c的异构环境搭建,先完成单向复制再扩展为支持DDL操作。
2、源端安装ogg
2.1 ? 编辑oracle用户的.profile?增加环境变量
安装的过程就比较简单,类似我们安装数据库 ,运行runInstaller 命令调用OUI界面。
3、目标端安装ogg
编辑oracle用户的 .profile?增加环境变量
安装过程,如同源端
4、测试ogg
·?源端ogg
?
·?目标端ogg
?
5.1、源端数据库
登陆源端Oracle GoldenGate,测试并确认可以访问数据库
5.2、目标端数据库
登陆Oracle GoldenGate,确认可以访问数据库
?
1)检查源端数据库是否为归档模式,若为非归档模式,将其改为归档模式
SQL> archive log list;
2)检查源端和目标端数据库附加补充日志是否打开
SQL>select supplemental_log_data_min from v$database;
? ? 1.将数据库附加日志打开
? ? SQL>alter database add supplemental log data;
? ? 2.切换日志以使附加日志生效
? ? SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
数据库的附加日志分为3个级别:
? ? ·?数据库级别的附加日志
? ? SQL>alter database add supplemental log data;
? ? ·用户级别附加日志(使用DDL抽取功能时要启用该级别)
? ? GGSCI (node01 as ogg@inds) 20>add schematrandata scott
? ? ·表级别的附加日志
? ? GGSCI (node01 as ogg@inds) 8>add trandata hr.employees
7、配置源端OGG
OGG配置分为源端和目标端配置,在源端配置mgr进程、extract进程、pump进程;在目标端配置mgr进程、replicat进程。
对于各个进程的作用,大家都耳熟能详了,在这里就不一一阐述了。
在以往的版本中需要创建subdirs,但在最新的版本中一下在安装ogg过程中已经创建好了。
如果再执行create命令会提示“已经存在“。这是ogg的目录结构,用于保持运行过程中生成的文件
?
7.1、配置mgr
#添加表级trandata
trandata hr.employees,仅当该表具有主键或是唯一约束时才可以表级别附加日志;如果表中没有主键或唯一索引时则必须指定一个或多个或全部列做主键,目的是避免重复数据
·?具有主键或唯一约束的表
·不具有主键和唯一约束的表
#添加schema级别的trandata
添加schema级别的trandata,命令与添加表级别的相同add schematrandata ?SCHEMA
另外还需要设置参数enable_goldengate_replication为true
如果enable_goldengate_replication为false会提示以下错误
当然也可以通过delete schematrandata SCHEMA取消。
7.2、添加checkpoint表
在目标端配置复制进程replicat之前,需要在目标数据库中创建一个checkpoint表。这个checkpoint表是基于GoldenGate checkpoint文件的,它记录了所有GoldenGate可以恢复的checkpoint以及sequence。
尽管这个操作不是必须的,但是Oracle强烈建议使用它,因为它可以使得checkpoint包含在Replicat的事物中,保证了可以从各类失败场景中恢复。
添加的步骤为在目标机器上编辑GLOBALS文件,添加
checkpointtable ogg.checkpoint
然后在ggsci中登陆ogg,使用add checkpoint添加
阐述一下GLOBALS文件,它是一个全局文件,文件中的参数对全局起作用,其中的参数有mgrservname、checkpointtable、ggschema、ddltable、markertable、outputfiletable。文件名称必须大写。
7.3、配置抽取extract进程
抽取进程在源端运行,负责抓取需要传输的数据。
GGSCI (node01 as ogg@inds) 14>edit params extnd
GGSCI (node01 as ogg@inds) 15>view params extnd
SETENV用于设置操作系统环境变量
GGSCI (node01 as ogg@inds) 16>?add extract extnd,tranlog,begin now
EXTRACT added.
表示创建一个extract进程,名称为extnd。注意:这个名称要与edit params extnd里面的名称一致。
#add extract extnd,tranlog,begin now,threads 2#
GGSCI (node01 as ogg@inds) 17>add exttrail ./dirdat/et,extract extnd
EXTTRAIL added.
命令add exttrail创建本地文件./dirdat/et,进程extract进程抽取的源数据转换为数据写入该文件中,进程pump负责读取该文件。
7.4、数据传输pump进程
Pump进程又称为secondly extract进程。如果没有pump进程,则extract进程负责将把抽取来的数据库传递给目标端,配置pump进程还有个好处就是当网络故障时,可以把数据无差错的传递给目标端。
创建parameter pump_sos文件
?GGSCI (node01 as ogg@inds) 12> edit params pump_sos
添加params pump_sos进程到ggsci队列
8、配置目标端
8.1、配置mgr
依照配置源端的mgr参数,配置目标端的mgr,步骤如下
GGSCI (Idota as ogg@mynewdb) 3> edit params mgr
配置完成后,重启mgr进程
Replicat进程运行在目标端,负责读取源端抽取进程抽取的文件,然后把文件中的变化数据应用目标端,形成数据同步
创建replicat复制进程
在GGSCI中添加replicat进程管理
9、DML测试验证同步
检查源端和目标端的scott.dept数据
·源端
·目标端
·源端做DML操作
·目标端数据检查是否同步
OGG很完美的完成基于DML操作的数据同步,但是无法完成基于DDL的操作。如何完成DDL操作同步呢,在ogg 12版本中还需要我们执行几个脚本:
marker_setup.sql、ddl_setup.sql、role_setup.sql、ddl_enable.sql、以及性能优化工具
@?/rdbms/admin/dbmspool.sql
ddl_pin.sql? ogg
10、配置DDL复制
?我们需要再源端执行ogg提供的支持DDL操作的脚本,就是上面提到的6个sql,分别执行。大家对于执行SQL都是信手拈来,下面只简单的说明下主要事项。
·marker_setup.sql?输入ogg的schema:ogg
·ddl_setup.sql? 检查是否具有default tablespace以及autoextend on。同时