Welcome 微信登录

首页 / 数据库 / MySQL / GoldenGate 实现Oracle for Oracle 单向DDL操作同步

在 http://www.linuxidc.com/Linux/2015-09/123121.htm 文章中我们实现了表的DML操作同步。我们做如下测试在源端执行表的truncateSQL> truncate table tcustmer;
Table truncated.在目的端,查看表数据SQL> select count(*) from tcustmer;
 
  COUNT(*)
----------
   2数据并没有同步我们如何让Goldengate实现DDL操作的同步呢?要想支持DDL同步,需要在源数据库上做些设置,使得可以跟踪DDL操作。包括如下内容Trigger、marker和history table,一个用户角色和其他各式各样的数据库对象。首先要配置GLOBALS参数,告诉gg使用那个schema来存储DDL操作。GGSCI (localhost.localdomain) 19> edit params ./GLOBALS
 
-- GoldenGate GLOBALS parameter file
--
GGSCHEMA GGDDL2. 使用sqlplus 创建ggddl用户,并安装ddl支持SQL> conn / as sysdba
Connected.
SQL> create user ggddl identified by ggddl ;
 
User created.
 
SQL> grant connect,resource to ggddl;
 
Grant succeeded.
 
关闭数据回收站功能SQL> ALTER SYSTEM SET RECYCLEBIN = OFF scope=spfile;
 
System altered.
SQL> startup force
Oracle instance started.
 
Total System Global Area  835104768 bytes
Fixed Size       2217952 bytes
Variable Size        574621728 bytes
Database Buffers   255852544 bytes
Redo Buffers         2412544 bytes
Database mounted.
Database opened.运行marker_setup.sql (ogg的安装目录,进入sqlplus)[oracle@localhost ogg]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 11 19:58:40 2015
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL> @marker_setup.sql
 
Marker setup script
 
You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
 
Enter Oracle GoldenGate schema name:GGDDL
 
 
Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGDDL
 
MARKER TABLE
-------------------------------
OK
 
MARKER SEQUENCE
-------------------------------
OK
 
Script complete.在弹出对话框输入GGSCHEMA的名称运行ddl_setup.sqlSQL> @ddl_setup.sql运行role_setup.sqlSQL> @role_setup.sql
 
GGS Role setup script
 
This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)
 
You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.
 
Enter GoldenGate schema name:ggddl
Wrote file role_setup_set.txt
 
PL/SQL procedure successfully completed.
 
 
Role setup script complete
 
Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:
 
GRANT GGS_GGSUSER_ROLE TO <loggedUser>
 
where <loggedUser> is the user assigned to the GoldenGate processes.创建好角色后,并不是要把这个角色赋予ggddl用户,而是要将该角色赋予Extract,Replicat等使用的schema 。我们之前配置的是system用户SQL> GRANT GGS_GGSUSER_ROLE TO system;
 
Grant succeeded.启用ddl,其实就是使trigger enableSQL> @ddl_enable.sql
 
Trigger altered.关闭Manager,Extract,Replicat源端GGSCI (localhost.localdomain) 1> stop Extract eorakk
GGSCI (localhost.localdomain) 5> stop mgr !目的端GGSCI (localhost.localdomain) 1> stop replicat rorakk
Sending STOP request to REPLICAT RORAKK ...
Request processed.
GGSCI (localhost.localdomain) 2> stop manager编辑Extract参数GGSCI (localhost.localdomain) 5> edit params eorakk
 
--
-- Change Capture parameter file to capture
-- TCUSTMER and TCUSTORD Changes
--
EXTRACT EORAKK
USERID system, PASSWORD oracle
RMTHOST 192.168.199.104, MGRPORT 7809
EXTTRAIL ./dirdat/KK
DDL INCLUDE ALL
TABLE SCOTT.TCUSTMER;
TABLE SCOTT.TCUSTORD;在原有基础上添加一行DDL INCLUDE ALL编辑Replicat参数GGSCI (localhost.localdomain) 4>  edit params rorakk
 
--
-- Change Delivery parameter file to apply
-- TCUSTMER and TCUSTORD Changes
--
REPLICAT RORAKK
USERID system, PASSWORD oracle
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORAKK.DSC, PURGE
DDL INCLUDE MAPPED
MAP scott.tcustmer, TARGET scott.tcustmer;
MAP scott.tcustord, TARGET scott.tcustord;在原有基础上添加一行DDL INCLUDE MAPPED 启动Manager、Extract、Replicat源端GGSCI (localhost.localdomain) 6> start manager
 
Manager started.
 
GGSCI (localhost.localdomain) 7> start extract eorakk
 
Sending START request to MANAGER ...
EXTRACT EORAKK starting 目的端GGSCI (localhost.localdomain) 5> start mgr
 
Manager started.
 
GGSCI (localhost.localdomain) 16> start replicat rorakk
 
Sending START request to MANAGER ...
REPLICAT RORAKK starting验证数据源端SQL> truncate table tcustmer;
 
Table truncated.
SQL> desc tcustmer
 Name                   Null?    Type
 ----------------------------------------- -------- ----------------------------
 CUST_CODE                NOT NULL VARCHAR2(4)
 NAME                          VARCHAR2(30)
 CITY                          VARCHAR2(20)
 STATE                       CHAR(2)
 
SQL> alter table tcustmer add state_desc varchar2(30);
 
Table altered.目的端SQL> select * from tcustmer;
 
no rows selected
 
SQL> desc tcustmer
 Name                   Null?    Type
 ----------------------------------------- -------- ----------------------------
 CUST_CODE                NOT NULL VARCHAR2(4)
 NAME                          VARCHAR2(30)
 CITY                          VARCHAR2(20)
 STATE                       CHAR(2)
 STATE_DESC                        VARCHAR2(30)数据已同步。Oracle GoldenGate 学习教程一:介绍和安装  http://www.linuxidc.com/Linux/2015-08/122146.htmOracle GoldenGate 学习教程二、配置和使用  http://www.linuxidc.com/Linux/2015-08/122325.htmOracle GoldenGate 学习教程三、加密  http://www.linuxidc.com/Linux/2015-09/122567.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址