免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2012 | 回复: 0
打印 上一主题 下一主题

[数据库] Linux下Oracle GoldenGate(OGG)的配置 [复制链接]

论坛徽章:
8
数据库技术版块每日发帖之星
日期:2016-04-29 06:20:00数据库技术版块每日发帖之星
日期:2016-04-30 06:20:00数据库技术版块每日发帖之星
日期:2016-05-13 06:20:00数据库技术版块每日发帖之星
日期:2016-05-15 06:20:00数据库技术版块每日发帖之星
日期:2016-05-19 06:20:00数据库技术版块每日发帖之星
日期:2016-05-20 06:20:00数据库技术版块每日发帖之星
日期:2016-06-02 06:20:00数据库技术版块每日发帖之星
日期:2016-06-05 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-16 14:36 |只看该作者 |倒序浏览
本帖最后由 我忒忙 于 2016-05-18 17:13 编辑

首先解压下载的OGG软件,并授权:

图片

图片

之后,设置必要变量
注意修改ORACLE_SID,ORACLE_HOME,LD_LIBRARY_PATH变量值
[oracle@upgg ~]$ cat ~/.bash_profile
# .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi


# User specific environment and startup programs
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/11g
export GG_HOME=/u01/goldengate/112101
PATH=$ORACLE_HOME/binPATHHOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/libGG_HOMELD_LIBRARY_PATH
export ORACLE_SID=updb
export PATH
然后source ~/.bash_profile使之生效


初始化GG

图片



这样就OK了呀,然后就是数据库的一些配置了:
1. 归档
GoldenGate 的原理是基于对日志变化的捕获(CDC )。所以 Oracle 的 redo 对于GoldenGate 至关重要。为了保证 GoldenGate 能读取到完整的事务日志,必须打开归档。
在数据库负载较大的情况下,redo 会频繁切换日志组,我们知道,Redo 日志组在 Oracle 中有限且会被重复利用的。如果打开归档,被切换过的 redo log 就会被归档为 archive log,这样即使一个事务过长,等到提交的时候,部分可能已经归档,这时 GoldenGate 就会到 archive log 中查找对应的记录,从而保证了信息的完整性。

Oracle 10g /11g 版本的 Oracle 打开归档较简单:首先,在使用 sysdba 用户登录在SQLPLUS 下执行以下命令,确认归档是否已经开启:

图片


如上结果表述已经运行在归档模式下,不需要任何处理。

图片

看到如上结果的,表述运行非归档模式下,则执行如下命令:


图片

图片

下面的步骤是可选的,不配置GG在使用中将出现如下警告信息:
WARNING OGG-01423  No valid default archive log destination directory found for thread 1.

我的习惯不想看到这个警告,所以做如下操作:

图片

2. 附加日志
当数据库启用了Supplemental Logging之后,对于修改操作,Oracle就会同时附加一些能够唯一标识修改记录的列到redo log中,如果这个表是有主键或唯一键的表,只需要附加主键或唯一键的信息即可,这样生成的redo日志量是最少的,如果某些表可能无法创建主键或者唯一键,抑或数据表本来不存在主键/唯一键,这种情况下Oracle会将所有列都做为附加信息记录到redo中,那么redo就可能增长很快,同时对性能产生较大的负面影响。所以Oracle 建议所有需要复制的表都存在主键或者唯一键。Supplemental Logging可以在数据库级设置,也可以精确到表级设置,对于数据库级有两种类型:minimal logging和identification key logging,其主要区别就在于写入redolog中的数据详尽程度不同。
从上述分析可以得出:GoldenGate要准确的知道源端的数据修改了哪些列,就需要更为详细的日志信息,所以需要数据库开启supplemental log。可以按照下列方式打开数据库级别的supplemental log。



图片

确认附加日志是否打开



图片

返回YES或IMPLICIT表示附加日志被打开。
3. 回收站
在gg 11之前版本需要关闭回收站才能完成DDL同步
在gg 11 版本开始可以开启回收站也能完成DDL同步


SQL> select value from v$parameter where name='recyclebin';


VALUE
--------------------------------------------------------------------------------
on


on 表示开启回收站
off 表示关闭回收站
关闭回收站
SQL> alter system set recyclebin=off scope=spfile;
System altered.
如果你不配置DDL同步的本步骤可以不做
Recyclebin 在 10.1 中是隐含参数,关掉 recyclebin 的命令为:
SQL>ALTER SYSTEM SET “_ recyclebin” = false;
4. GG软件用户设置
gg用户有2种:


管理用户
管理用户是管理,维护GG软件的用户,此用户必须在后台数据库建立起来,并分配必要的权限。管理用户需要在原数据端建立,也需要在目标数据端建立。而原数据端与目标数据端需要的权限最小化也不相同。为了方便可以授予dba权限,甚至不建立管理用户,直接使用system用户。


数据用户  
数据用户是gg运行中数据加载,数据同步的用户。比如需要将scott用户数据加载与同步到s1用户下。scott为原数据端用户,s1为目标数据端用户。数据用户存在就可以了,但管理用户必须有相应操作数据用户的权限。 比如原数据端管理用户至少有查询,修改,闪回数据用户对象的权限,目标数据端管理用户至少需要dml操作数据用户的权限.
在源端和目标端创建 GoldenGate 管理用户,并授予下列权限。
SQL>create tablespace ggdata datafile '$ORACLE_BASE/oradata/$ORACLE_SID/ggdata01.dbf' size 200m;
SQL>create userggs identified by ggm default tablespace ggdata;
SQL>grant connect,resource,unlimited tablespace to ggm ; SQL>grant execute on utl_file to ggm;
在源端还需要授予 ggm 用户以下权限:
SQL>grant connect,resource to ggm ;
SQL>grant select any dictionary,select any table to ggm;
SQL>grant alter any table to ggm;
SQL>grant flashback any table to ggm;
SQL>grant execute on DBMS_FLAHBACK TO ggm;
在目标端需要授予 ggm 用户以下权限:
grant insert any table to ggm;
grant delete any table to ggm;
grant update any table to ggm;


上面的 insert、delete、update 没有指定模式,表示在所有模式都能进行 insert、 delete、update 操作。


原数据端用户设置   略
目标数据端用户设置 略
5. 添加表级的transdata
这里的表级的 trandata 就是指表级的 supplemental log。
表级supplemental log 需要在数据库级别最小supplemental log 打开的情况下才起作用。如果数据库没有开启 minimal supplemental log,即使指定了表级supplemental log,实际在redo log 输出描述的记录仍只记录rowid和相关列值,所以我们还需要同时开启表级的transadata。添加表级的 transdat 可以理解为你需要将源端的哪些schema下的哪些表传输到目标库中,那么就需要你手动添加这些transdata。按照上一小节的内容创建GoldenGate管理用户并授予必要的权限之后,就可以使用dblogin 登录数据库,然后添加特定表的trandata。


操作步骤如下:


在 scott 用户下创建一张表 demo,用来作为需要同步的表:

图片

对这个表添加 trandata:

图片


提示:在对表添加 trandata 的时候,表名可以使用通配符。例如如果我要添加 scott 用户下所有的表,则语句可以这样写:


GGSCI(source 4) add trandata scott.*;
查看表有没有附加日志:
GGSCI(source 5) info trandata scott.*;
enabled 表示开启附加日志
disabled 表示没开启附加日志
当然也可以在oracle中执行sql命令增加附加日志

SQL> alter table  t1 add supplemental log data(all) columns;



更多精彩Oracle内容 请关注我:


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP