GoldenGate简单复制环境的搭建

今天试了下搭建GoldenGate,搭建的过程也简单总结了一下。
目前源数据库是newtest2  目标数据库是dataguru 都是11.2.0.4.0版本
关于GoldenGate的下载可以到下面的链接下载
http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 在11g中,存在一个和GoldenGate有关的参数,默认是false,我们需要在源库,目标库都开启

 SQL> show parameter golde
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
enable_goldengate_replication        boolean                FALSE

SQL> alter system set enable_goldengate_replication=true;
alter database

然后查看supplemental log的情况,这个也是需要的设置。
SQL> select SUPPLEMENTAL_LOG_DATA_min from v$database;
SUPPLEMENTAL_LOG
----------------
YES

alter database add supplemental log data; 做完之后,切换日志使得附加日志生效。

SQL> alter system archive log current;
System altered.当然我们希望在源端和目标端的数据库都配置一个数据库用户。OGG是宣称不需要触发器,中间表,增量标记和时间戳字段的。

源端的配置数据库用户的脚本如下:

create user ogg_source identified by oracle default tablespace users;
grant alter session to ogg_source;
grant create session to ogg_source;
grant connect to ogg_source;
grant resource to ogg_source;
grant select any dictionary to ogg_source;
grant select any table to ogg_source;
grant flashback any table to ogg_source;
grant alter any table to ogg_source;

目标端配置数据库用户的脚本如下:

 create user ogg_target identified by oracle default tablespace users;
grant alter session to ogg_target;
grant create session to ogg_target;
grant connect to ogg_target;
grant resource to ogg_target;
grant select any dictionary to ogg_target;
grant select any table to ogg_target;
grant flashback any table to ogg_target;
grant alter any table to ogg_target;
grant insert any table to ogg_target;
grant update any table to ogg_target;
grant delete any table to ogg_target;

添加一个表日志:

EDIT PARAMS ./GLOBALS
GGSCHEMA ogg_source
CHECKPOINTTABLE ogg_source.CHKPTAB

在源端使用数据库用户登录

1> dblogin userid ogg_source,password oracle
Successfully logged into database. 为所有要复制的表添加trandata,目前我需要复制的是newtest2这个数据库下的n1用户

2> add trandata n1.*;
ERROR: No viable tables matched specification.

这个时候就会明显感觉到OGG的格式不大喜欢结尾符,得去掉结尾符才可以。

3> add trandata n1.*
2016-11-11 14:13:05  WARNING OGG-06439  No unique key is defined for
table A. All viable columns will be used to represent the key, but may
not guarantee uniqueness. KEYCOLS may be used to define the key.
Logging of supplemental redo data enabled for table N1.A.
TRANDATA for scheduling columns has been added on table 'N1.A'. 不过抛出来下面的错误,是权限不够,还需要附一个权限。

2016-11-11 14:13:05  WARNING OGG-00706  Failed to add supplemental log group on table N1.A due to ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_CAPTURE_ADM' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored SQL BEGIN
DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(table_name =>
'"N1"."A"', supplemental_logging => 'none'); END; 解决方法:

SQL>  grant execute on sys.DBMS_CAPTURE_ADM to ogg_source;
Grant succeeded. 再次运行就没有问题了。
然后连接到数据库,开始配置抽取进程

14>  dblogin userid ogg_source,password oracle
Successfully logged into database.

配置参数,使用本地的方式。

15> edit params ext_1
EXTRACT EXT_1
USERID ogg_source, PASSWORD oracle
EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss
TABLE N1.*;
添加抽取进程,从数据库日志中抓取数据。

>  ADD EXTRACT EXT_1, TRANLOG, BEGIN NOW
EXTRACT added.

配置本地队列,然后启动

> ADD EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss, EXTRACT EXT_1

> start EXT_1
Sending START request to MANAGER ...
EXTRACT EXT_1 starting

配置完成之后,就可以查看是否能够正常抽取了,可以看到是没有正常启动。状态现在还是STOPPED

> info EXT_1
EXTRACT    EXT_1     Initialized   2016-11-11 16:16   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:01:22 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2016-11-11 16:16:04  Seqno 0, RBA 0
                     SCN 0.0 (0)在11g中没有配置和OGG相关的数据库参数,就会抛出如下的问题了.

2016-11-11 16:17:11  ERROR   OGG-02091  Oracle GoldenGate Capture for
Oracle, ext_1.prm:  Operation not supported because
enable_goldengate_replication is not set to true.
2016-11-11 16:17:11  ERROR   OGG-01668  Oracle GoldenGate Capture for Oracle, ext_1.prm:  PROCESS ABENDING.修复之后,重新启动,这个问题就迎刃而解了,查看这个抽取进程的状态,可以看到已经有了状态数据。
> info ext_1
EXTRACT    EXT_1     Last Started 2016-11-11 16:20   Status RUNNING
Checkpoint Lag       00:04:49 (updated 00:00:03 ago)
Process ID           53455
Log Read Checkpoint  Oracle Redo Logs
                     2016-11-11 16:16:04  Seqno 9416, RBA 8206848
                     SCN 0.0 (0)然后开始在源端配置PUMP进程,目标数据库的IP是10.127.2.32,PASSTHRU代表是一个传输进程data pump

>  edit params dpump_1
EXTRACT dpump_1
PASSTHRU
RMTHOST 10.127.2.32, MGRPORT 1530
RMTTRAIL  /home/oracle/ogg/ogg_work/dirdat/ss
TABLE n1.*;

> ADD EXTRACT dpump_1,EXTTRAILSOURCE /home/oracle/ogg/ogg_work/dirdat/ss
EXTRACT added.
> ADD RMTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss, EXTRACT dpump_1
RMTTRAIL added.

配置完成之后,启动PUMP进程。
> start dpump_1
Sending START request to MANAGER ...
EXTRACT DPUMP_1 starting查看DUMP进程的信息如下:

> info dpump_1
EXTRACT    DPUMP_1   Last Started 2016-11-11 16:24   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:04 ago)
Process ID           53479
Log Read Checkpoint  File /home/oracle/ogg/ogg_work/dirdat/ss000000000
                     First Record  RBA 0

对于OGG如果估计最常用的就是info all这个命令了。

> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
EXTRACT     RUNNING     DPUMP_1     00:00:00      00:00:07    
EXTRACT     RUNNING     EXT_1       00:00:00      00:00:00

源端配置完成,我们来配置目标端。  
添加表日志:

> edit param ./GLOBALS
GGSCHEMA ogg_target
CHECKPOINTTABLE ogg_target.CHKPTAB

登录到数据库端:

>  dblogin userid ogg_target,password oracle
Successfully logged into database.

目标端配置检查点:

> add checkpointtable ogg_target.CHKPTAB

Successfully created checkpoint table ogg_target.CHKPTAB

配置投递队列参数,将数据应用到目标库,这里有个映射关系,就是源库的n1.*和目标库的n1.*是对应的。

> edit params rep_1
REPLICAT REP_1
USERID ogg_target, PASSWORD oracle
ASSUMETARGETDEFS
HANDLECOLLISIONS
MAP n1.*,TARGET n1.*; 添加投递队列

> ADD REPLICAT
REP_1, EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss,CHECKPOINTTABLE
ggs_target.CHKPTAB
REPLICAT added.

这里自己给自己埋了一个坑,先不说破了。看看下面的错误。

启动投递应用进程,但是发现却有报错。

> start REP_1
Sending START request to MANAGER ...
REPLICAT REP_1 starting

错误提示是比较奇怪的,怎么用户名密码错误了。

Delivery for Oracle, rep_1.prm:  OCI Error beginning session (status =
1017-ORA-01017: invalid username/password; logon denied),还有SYS.DBMS_STREAMS的访问权限不足

下面这个地方错误花了些时间来分析,最后才发现是自己把用户名写错了。

先删除,再添加

>delete replicat rep_1 添加的语句如下ogg_target.CHKPTAB是主要的地方,自己给写错为ggs_target了。

> ADD REPLICAT
REP_1, EXTTRAIL /home/oracle/ogg/ogg_work/dirdat/ss,CHECKPOINTTABLE ogg_target.CHKPTAB
REPLICAT added.

再次启动就没有问题了。

> start REP_1
Sending START request to MANAGER ...
REPLICAT REP_1 starting

启动成功后的状态是这样的。
> INFO REP_1
REPLICAT   REP_1     Last Started 2016-11-11 17:02   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Process ID           69571
Log Read Checkpoint  File /home/oracle/ogg/ogg_work/dirdat/ss000000000
                     First Record  RBA 0不过这个过程中,目标库还没有初始数据所以还无法同步,我们应该在目标库先初始基础数据,通过exp/imp,expdp/impdp都可以。
同步之后来简单来一个小的测试。

在源端删除表test_lock的数据

SQL> delete from test_lock;
99 rows deleted.
SQL> commit;
Commit complete.

然后在源端查看,可以看到抽取进程的SCN开始变化

2016-11-11 17:15:04  Seqno 9417, RBA 729600
SCN 0.17848618 (17848618)
稍等一会就变为
2016-11-11 17:17:25  Seqno 9417, RBA 841728
SCN 0.17848776 (17848776)                    
然后查看目标端,开始是有数据的

SQL> select count(*)from test_lock;
  COUNT(*)
----------
        99

稍作等待,就可以看到数据被删除了。

 SQL> /
  COUNT(*)
----------
         0  

时间: 2024-08-25 20:47:05

GoldenGate简单复制环境的搭建的相关文章

最简单的创建复制环境中只读实体化视图站点的方法

创建|视图|站点 目的:创建一个实体化视图站点,定时刷新,获取主站点中指定表的变化,这个实体化站点可以作为查询服务器使用 步骤: 1.主站点上创建实体化视图日志表 CREATE MATERIALIZED VIEW LOG ON kamus.account2004; 2.实体化视图站点上创建公用数据库链接 conn system/password CREATE PUBLIC DATABASE LINK orcl using 'ORCL'; 3.实体化视图站点上创建刷新组,本例中3分钟刷新一次 co

如何搭建Oracle 8高级复制环境

Oracle 高级复制,也称为对称复制.和 Oracle 的其他功能不同, Oracle 的高级复制不是即插即用的,用户必须深刻理解它们是如何工作的以及各种复制方案的优缺点.深刻理解复制的基本概念可以帮助你设计一个可靠的复制环境. 本文主要介绍了搭建 Oracle 8 高级复制环境时需要设置的一些系统参数.需要提醒读者注意的是,笔者所给出的这些系统参数的具体配置数值只能保证可以成功的搭建出一个相对较好的高级复制环境,但本文并未对这些参数的优化配置进行进一步的深入探讨. 现在我们正式开始.假设有两

oracle Streams实践:如何移除Streams复制环境

四. 清除Streams复制环境 一方面是为了方便后面的测试环境搭建,一方面也是因为10g中Streams复制环境的移除非常简单,因此将此做为本章最后一小节. 要移除整个复制环境非常简单,只需在源端目标端以STREAMS管理员帐号登陆,并分别执行 dbms_streams_adm.remove_streams_configuration ,如例 : JSSWEB> conn strmadmin/strmadmin Connected. JSSWEB > exec dbms_streams_ad

Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 搭建过程

安装SDK 1.Hi3531 SDK包位置     在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包. 2.解压缩SDK包     在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,可以得到一个Hi3531_SD

Android源码下载及开发环境的搭建

1.前言         前一博文给自己列了一下Android的学习计划,是时候一个个的完成了.如计划列的,我要写的第一篇是<Android源码 的下载及开发环境的搭建>,致于如何去下载源码,其实网上已经一大堆的帖子了,一搜就有.但在这里,我想说,一个源码的下载,不是简单的把源码下载下来之 样就OK了,就可以开始你的源码学习之旅.要想更好的学习源码和进行开发,一个适合自己的开发环境还是必不可少的,这里我会列出来我给自己准备的开发环境 的做法,不能说明是最优的,但至少我感觉对我来说还是挺方便的.

hadoop集群环境的搭建

       今天终于把hadoop集群环境给搭建起来了,能够运行单词统计的示例程序了. 集群信息如下: 主机名 Hadoop角色 Hadoop jps命令结果 Hadoop用户 Hadoop安装目录 master Master slaves NameNode DataNode JobTracker TaskTracker SecondaryNameNode 创建相同的用户的组名:hadoop. 安装hadoop-0.20.2时使用hadoop用户,并且hadoop的文件夹归属也是hadoop:

Python GUI开发环境的搭建

原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方面自带有成熟的类库,还有第三方开发的开源包. 在GUI的开发上,Python自身带有TKinter库,还有第三方的库 (比如wxPython, Qt)   今天就来简单介绍下wxPython开发的环境搭建与示例   开发环境搭建采用wxFormBuilder + uiPad + wxPython,按

oracle Streams如何创建schema级复制环境

Schema 级的复制可以通过DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS创建,经过前面表空间级的试练,接着创建schema级的复制环境还是比较简单的. 本章示例继续沿用前章中的环境(主要是oracle环境,之前的复制环境已被清除),并设定环境如下: 源数据库 sid : jssweb ,目标库 : jssstr : 复制schema:member,同步DML,DDL操作: 本地捕获,双向同步(又变了哟,又改为本地捕获了): DBMS_STREAMS_ADM.MAINTAI

oracle Streams如何创建tables级复制环境

你应该还有印象,我们在第一部分第二节的时候就已经演示了创建表级复制环境,对比全库/表空间级或schema级的复制,现在回过头来看,你可能会觉着怎么表级的复制环境这么复杂呢?其实不是这样,并非表级复制环境复杂,我们在第一部分第二章演示的正是streams实际配置时执行的过程(大部分步骤吧),如果你直接使用DBMS_STREAMS_ADM.MAINTAIN_TABLES过程创建的话,类似于schemas的复制,也就是执行一个过程的事情. 这里一方面为了给大家演示,另外一方面也是加深大家的理解,在本部