OGG数据库迁移方案(三)

来源:这里教程网 时间:2026-03-03 18:29:46 作者:

3.       GoldenGate 的安装与配置 3.1         概述 配置GoldenGate 进行数据复制,主要包括如下环节: n   对源端和目标端GoldenGate 工作环境的检查 n   在源和目标环境分别安装GoldenGate 软件 n   配置源端 n   目标库的初始化 n   配置目标端 n   启动GoldenGate ,执行数据复制 下文将对这些部分详细说明。 环境介绍: 源端:AIX 5.3 oracle 10.2.0.4 2 节点RAC 目标端: Linux X86 64bit oracle 11.2.0.4 2 节点RAC

ogg 进程配置:

对于数据变化量不大的系统(每天生成归档量小于500G ),通常源端只配置一个extract 进程即可满足要求。目标端配置replicat 进程的多少依赖于复制效率,可以根据具体情况进行拆分。 3.2         需要通过OGG 复制的表 对于静态表,不建议通过OGG 复制。 无法通过OGG 或者不需要通过OGG 进行复制的表,将在割接期间采用传统的expdp & impdp 的方式实现。 3.3         割接的注意事项 3.3.1        保证同步过程中的数据一致性 需要从以下方面保证OGG 在同步过程中的数据一致性: n   需要逐表检查所复制的表的附加日志已经打开 n   保证初始化数据的完整性。 n   对于目标库:

n   必须避免后台的Job, 包括:Crontab Job ,数据库内部的 job ;华为TaskMon 工具等。

n   避免人为修改目标端表中的数据

n   监视触发器的状态(最好导入时在目标库drop 触发器)、避免有级联触发器等。

n   对于所复制的表,在同步期间(即开始同步到上线割接)避免修改表的主键或者索引字段。

n   可以在执行数据同步期间把数据库中其它数据库用户的账号lock 3.3.2        处理同步期间发生问题的表 如果在OGG 同步期间发现个别表的同步出现问题,可以参照以下的步骤处理:1.        将出现问题的表从复制进程中去掉

stop rep1

edit param rep1

 

删除或者注视出现问题的表的一行配置,比如去除tbcs.ogg_test表的复制,为其增加注释:

-- MAP tbcs.ogg_test, TARGET tbcs.ogg_test;

 

start rep1 2.        重新初始化出现问题的表的数据

在目标端:

truncate table tbcs.ogg_test;

 

使用Data Pump导入问题表的数据:

选择一个系统负载低的时刻,首先从生产库查询出一个当前的SCN,比如:

col current_scn for 99999999999999999999

select current_scn from v$database;

       12872889897855

 

使用这个SCN作为flashback_scn值进行导出&导入:

flashback_scn   = 12872889897855

注意:仅导入数据,不要导入触发器

 

记录该SCN对应的时间点以及在目标端的trail文件的序号:

cd $GG_HOME/dirdat01

ls –ltr

 

数据导入完成后在目标端新建一个复制进程,主要步骤参见“3.8.8 配置OGG的复制进程Replicat”小节。

不同之处如下:

在启动新建的复制进程之前,需要增加一个操作:

alter r_tbcs_01 extseqno xx, extrba 0

 

GSCI (kdyyb1) 2> info r_tbcs

 

REPLICAT   R_TBCS    Last Started 2015-03-04 18:45   Status RUNNING

Checkpoint Lag       00:00:02 (updated 00:00:00 ago)

Log Read Checkpoint  File ./dirdat01/tb000179

                     2015-03-05 14:54:38.002275  RBA 58679836

 

注意新建的复制进程的“Log Read Checkpoint”是刚修改的文件序号,并且RBA为0。

 

在使用前面步骤的SCN启动新建的复制进程。  1.3.3        重新搭建复制环境 如果需要重新对目标库重建,可以参考如下步骤:1.        停止目标端的复制进程(不要停止manager 进程),源端不作处理(即保持数据抽取的状态)

ggsci

 

stop * 2.        删除所有目标端的抽取进程

dblogin userid ggadmin, password AACAAAAAAAAAAAIAKBWGTCOFUEPDSFQH , encryptkey default

 

delete recpliat r_tbcs

…… 3.        truncate 所有OGG 复制的表 剩下的步骤参见本文“3.6 源端配置”小节。 不同之处如下:

在增加了新建的复制进程之前,需要增加一个操作:

alter rep1 extseqno xx, extrba 0 这个trail 文件的序号使用数据初始化时的SCN 对应的时间点,可以再往前一些。 3.3.4        察看OGG 复制的效率 作为一种准实时的数据同步工具,OGG 的同步有三个方面的延迟: n   抽取,即Extract 进程 n   传输或者分发,即Data Pump 进程 n   复制,即Replicat 进程 需要察看这三个环节分别的延迟(即lag ),命令是:

登录的源或者目标端主机:

cd $GG_HOME

./ggsci

info all

 

-- 注意观察每个进程的lag值

更的方式是使用lag命令,即

lag ext1

lag dp1

lag rep1  在配置好OGG 的同步后,需要监视lag ,如果发现lag 逐渐变长则需要处理。 3.3.5        Trail 文件的管理OGG 通过manager 进程实现对trail 文件的自动清除操作。有两种清除策略:时间或者文件的数量。 分别通过如下参数配置: n   MinKeepDays 或者MinKeepHours

MinKeepFiles :通过这种方式可以限制trail文件占用空间的总体大小(在复制正常的时刻)。

现在Oracle工程师将源端配置为

MinKeepHours 12

目标端:

MinKeepDays 1 客户可以根据需要进行调整。 3.3.6        割接开始前要注意长交易 在割接当天要特别注意避免长交易,因为如果需要重起抽取进程的话,抽取进程在启动后需要花一些时间才能追上,这样可能会影响割接进度 说明:正常情况下仅需要停止抽取进程而不需要再启动,则这方面没有关系。 1.3.7        对备份策略的调整 在重起抽取进程后OGG 需要从最早事务开始时刻的redo 中读取数据,因此需要访问一定量的归档文件,如果因为备份已经将最近的归档文件成功备份后删除,抽取进程就会出错,为此可以对备份策略进行调整,比如备份8 个小时之前的归档(这样可以保留最近8 个小时的归档文件):

backup

archivelog until time 'sysdate-1/12'   3.3.8        OGG 的监控 OGG 的监控主要包括以下方面: n   对进程的监控,即使用info all 命令查看源端和目标端的相关进程,其状态为“RUNNING n   Trail 文件占用磁盘空间的监控 n   lag 的监控:参见前文。  3.4         GoldenGate 工作环境的检查 3.4.1        GoldenGate xlC libpthreads 版本要求 本节内容适用于源和目标端。 根据MOS 文档“Oracle GoldenGate GGSCI fails with "0509-036 Cannot load program ggsci because of the following errors:" (Doc ID 1108601.1) ”, GoldenGate 从版本V10 开始在AIX 5.3 平台上对xlC 库有如下的最小版本要求:  xlC.aix50.rte             10.1.0.0  COMMITTED  XL C/C++ Runtime for AIX 5.3  xlC.msg.en_US.rte         10.1.0.0  COMMITTED  XL C/C++ Runtime  xlC.rte                   10.1.0.0  COMMITTED  XL C/C++ Runtime 还要求libpthreads 库具有5.3.0.51 或以上版本。 可以通过以下命令查看xlC libpthreads 版本: 查看xlC 版本:

# lslpp -l | grep -i xlc   查看libpthreads 版本:

lslpp -h bos.rte.libpthreads  如果发现当前Aix 平台下的xlC 或者libpthreads 版本低于规定版本则必须首先升级,然后才能安装GoldenGate 软件。 3.4.2        对源数据库的检查 由于受到GoldenGate 工作机制的限制,源库数据库必须满足一定的条件,才能保证GoldenGate 可以工作正常,这些条件包括: n   数据库运行于归档日志模式下。 n   在数据库级别打开了Force Logging n   在数据库级别打开了最小附加日志(supplemental log min )。 检查数据库是否处于归档模式:

select log_mode from v$database;  使用以下SQL 语句检查数据库Force Logging 和附加日志的打开状况:

select supplemental_log_data_min, force_logging

from v$database; 3.4.3        检查需要复制的表 确定需要复制的表。 3.5         主机端口开通 不能配置防火墙来阻止源端主机和目标端主机之间GoldenGate 使用的端口。具体端口是在源端和目标端mgr 进程配置中指定的端口,当前配置环境下使用的端口是: 7809 - 7820 3.6         源端配置 3.6.1        OGG 软件安装 首先要为GoldenGate 软件划分适当的集群文件系统(比如GPFS 等),以/arch 为例。Goldengate 最好安装在共享文件系统上,但不是必须。 登录RAC 的节点1 主机,使用操作系统oracle 用户(即Oracle 数据库软件的安装和运行用户)来安装GoldenGate 。所使用的GoldenGate 软件版本为11.2.1.0.18 GoldenGate for 10g : p18307056_1121018_AIX64-5L.zip 将安装介质p18307056_1121018_AIX64-5L.zip 文件上传到数据库服务器/ogg 目录,使用unzip 命令解压缩,会出现ggs_AIX_ppc_ora10.2_64bit.tar 文件,再使用tar 对该文件解报。解压缩/ 解包的过程就是安装过程。

cd /arch/ogg

unzip p18307056_1121018_AIX64-5L.zip

tar xvf ggs_AIX_ppc_ora10.2_64bit.tar 解压后,创建 GoldenGate 需要的子目录(使用create subdirs 命令):

cd /arch/ogg

./ggsci

 

Oracle GoldenGate Command Interpreter for Oracle

… …

GGSCI (aaopdb2) 1> create subdirs

 

Creating subdirectories under current directory /arch/ogg

 

Parameter files                /arch/ogg/dirprm: already exists

Report files                   /arch/ogg/dirrpt: created

Checkpoint files               /arch/ogg/dirchk: created

Process status files           /arch/ogg/dirpcs: created

SQL script files               /arch/ogg/dirsql: created

Database definitions files     /arch/ogg/dirdef: created

Extract data files             /arch/ogg/dirdat1: created

Temporary files                /arch/ogg/dirtmp: created

Stdout files                   /arch/ogg/dirout: created  编辑oracle 用户主目录下的.profile 文件,在文件末尾追加以下内容:

export GG_HOME=/arch/ogg

export LIBPATH=$LIBPATH:$GG_HOME:$ORACLE_HOME/lib  3.6.2        创建运行OGG 的数据库用户

在旧营业系统库创建GoldenGate 运行所需要的数据库用户。

使用下面的SQL 创建GoldenGate 的数据库用户ggadmin

-- 源端数据库:

 

create tablespace goldengate datafile 'xxx' size 10g autoextend on;

  /* 配置DDL同步,必须为goldengate用户分配单独的表空间,且自动扩展 */

create user ggadmin identified by ggadmin default tablespace ogg temporary tablespace temp;

grant dba to ggadmin;

  3.6.3        源端数据库配置 为满足GoldenGate 的工作条件,必须对源端数据库进行如下的配置: 1.        启用Force Logging 

$ sqlplus / as sysdba

 

-- 检查foce logging当前是否启用:

SQL> set linesize 80

SQL> col name            format a20

SQL> col force_logging   format a20

SQL>

SQL> select d.name, d.force_logging from v$database d;

 

-- 如果“force_logging”字段的返回值为“YES”,则已经启用,不需要执行下面的SQL;否则执行:

SQL> alter database force logging;

 

-- 重新执行上面的检查SQL,确认返回值为“YES”。 

如果需要进行回退,关闭强制日志模式,请使用以下 sql

alter database no force logging;  2.        在数据库级别打开附加日志 根据MOS 文档“How To Turn On Supplemental Logging At The Database Or The Table Level (Oracle Specific) (Doc ID 1059352.1) ”,GoldenGate 必须要求打开附加日志并同时切换日志: 

$ sqlplus / as sysdba

 

-- 检查数据库级别的 Supplemental Logging是否打开:

SQL> set linesize 80

SQL> col supplemental_log_data_min   format a30

SQL> select d.name, d.supplemental_log_data_min from v$database d;

 

-- 如果“supplemental_log_data_min”字段的返回值为“YES”,则已经启用,不需要执行下面的SQL;--- 否则执行:

SQL> alter database add supplemental log data;

 

-- 重新执行上面的检查SQL,确认返回值为“YES”。

-- 执行日志文件的切换(This change to add supplemental logging will not take effect until the -- current redo log -- is switched, so the following command must also be executed):

SQL> alter system switch logfile;  回退操作:如果出现问题,可以通过以下语句进行回退:

SQL> alter database drop supplemental log data ; 1.6.4        创建测试表 选取一个schema 创建一个名为ogg_test 的测试表,创建脚本如下:

create table SCHEMA .ogg_test(id number, in_date date); 3.6.5        对源端数据库复制表进行add trandata 为所有需要进行复制的表生成add trandata 命令: 由于每个schema 包含的表较多,执行该步骤会花费很长时间,可以多开几个窗口并行执行。

GGSCI > dblogin userid ggadmin, password ggadmin

 

add trandata SI_INFORMTN_SCHEMA.*

add trandata ORDPLUGINS.*

add trandata PRDXIVMILC.*

add trandata PRDABPPSZVMIREAD.*

add trandata PRDABPPWHVMIREAD.*

add trandata PRDABPPXMVMIREAD.*

add trandata PRDABPPWHBSVMIREAD.*

add trandata PRDHKFGVMIREAD.*

add trandata PRDXIVMI1.*

add trandata PRDXIVMIBRP.*

add trandata SHARING.*

add trandata PRDSPUSERVMI2READ.*

add trandata PRDVMIBRPREAD.*

add trandata PRDSPUSERVMI1READ.*

add trandata PRDHKFGSPVMI.*

add trandata PRDINFOVMIK2.*

add trandata PRDINFREPVMI.*

add trandata PRDSPUSERVMI3.*

add trandata PRDSPVMIBRP.*

add trandata PRDSPUSERVMI2.*

add trandata CSETRACK.*

add trandata PRDCSE.*

add trandata PRDCSEVMI3.*

add trandata PRDCSEVMI2.*

add trandata PRDCSEVMIBRP.*

add trandata PRDCSEVMI1.*

add trandata PRDABPPCDVMIREAD.*

add trandata PRDABPPSHVMIREAD.*

add trandata PRDABPPBSVMIREAD.*

add trandata PRDSPUSERVMI1.*

add trandata PRDABPPWHBSVMI.*

add trandata PRDABPPSZVMI.*

add trandata PRDABPPWHVMI.*

add trandata PRDABPPXMVMI.*

add trandata PRDABPPSHVMI.*

add trandata PRDABPPCDVMI.*

add trandata PRDHKFGVMI.*

add trandata PRDABPPVMI3.*

add trandata PRDABPPVMIBRP.*

add trandata PRDABPPVMI1.*

add trandata PRDABPPVMI2.*

add trandata PRDABPPBSVMI.*

add trandata PUBLIC.*

 

检查表的SUPPLEMENTAL_LOG是否开启:

/* 出现如下信息说明开启supplemental log,若出现disable 说明未开启

Logging of supplemental redo log data is enabled for table PRDABPPVMI1.AGGLVLCRITERIA_NC.

对未开启supplemental log的表需要单独添加,执行:

add trandata username.TABLE_NAME

 

info trandata SI_INFORMTN_SCHEMA.*

info trandata ORDPLUGINS.*

info trandata PRDXIVMILC.*

info trandata PRDABPPSZVMIREAD.*

info trandata PRDABPPWHVMIREAD.*

info trandata PRDABPPXMVMIREAD.*

info trandata PRDABPPWHBSVMIREAD.*

info trandata PRDHKFGVMIREAD.*

info trandata PRDXIVMI1.*

info trandata PRDXIVMIBRP.*

info trandata SHARING.*

info trandata PRDSPUSERVMI2READ.*

info trandata PRDVMIBRPREAD.*

info trandata PRDSPUSERVMI1READ.*

info trandata PRDHKFGSPVMI.*

info trandata PRDINFOVMIK2.*

info trandata PRDINFREPVMI.*

info trandata PRDSPUSERVMI3.*

info trandata PRDSPVMIBRP.*

info trandata PRDSPUSERVMI2.*

info trandata CSETRACK.*

info trandata PRDCSE.*

info trandata PRDCSEVMI3.*

info trandata PRDCSEVMI2.*

info trandata PRDCSEVMIBRP.*

info trandata PRDCSEVMI1.*

info trandata PRDABPPCDVMIREAD.*

info trandata PRDABPPSHVMIREAD.*

info trandata PRDABPPBSVMIREAD.*

info trandata PRDSPUSERVMI1.*

info trandata PRDABPPWHBSVMI.*

info trandata PRDABPPSZVMI.*

info trandata PRDABPPWHVMI.*

info trandata PRDABPPXMVMI.*

info trandata PRDABPPSHVMI.*

info trandata PRDABPPCDVMI.*

info trandata PRDHKFGVMI.*

info trandata PRDABPPVMI3.*

info trandata PRDABPPVMIBRP.*

info trandata PRDABPPVMI1.*

info trandata PRDABPPVMI2.*

info trandata PRDABPPBSVMI.*

info trandata PUBLIC.*

 

  1.6.6        配置源端OGG 管理进程mgr 在旧营业系统执行该配置任务。

$ cd /arch/ogg

$ ./ggsci

 

编辑mgr 进程配置参数,配置信息将保存于./dirprm/mgr.prm 文件中。

ggsci> edit params mgr 

运行后将进入vi 编辑模式,输入以下内容。

在源端:

Port 7809

DynamicPortList

DynamicPortReassignDelay 5

 

PurgeOldExtracts ./dirdat/lt*, UseCheckpoints, MinKeepDays 1

 

-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60

 

LagReportHours 1

LagInfoMinutes 3

LagCriticalMinutes 5

保存并退出vi 编辑。启动源端的mgr 管理进程:

ggsci> start mgr

  3.6.7        配置GoldenGate DDL 复制 关闭回收站功能( 重启数据库生效)

alter system set recyclebin=off scope=spfile; 

EDIT PARAMS ./GLOBALS 输入以下内容

GGSCHEMA ggadmin 执行一系列同步DLL 语句要用到的GoldenGate 脚本,这些脚本存放在GG 的安装目录下: 停止所有数据库连接( sqlplus goldengate 以及所有应用连接),执行过程中不要有新的连接 SYSDBA 身份登录

sqlplus / as sysdba

SQL> GRANT EXECUTE ON utl_file TO GGADMIN;

SQL> @marker_setup ggadmin

SQL> @ddl_setup

SQL> @role_setup

SQL> grant GGS_GGSUSER_ROLE to GGADMIN;

SQL> @ddl_enable

SQL> @?/rdbms/admin/dbmspool

SQL> @ddl_pin 3.6.8        安装 sequence 复制支持

在主端和备端都执行sequence.sql

SQL> @sequence.sql ggadmin

在主端执行下面的命令

GRANT EXECUTE on ggadmin.updateSequence TO ggadmin;

在目标端端执行

GRANT EXECUTE on ggadmin.replicateSequence TO ggadmin;

在源端执行下面的命令

alter table sys.seq$ add supplemental log data (primary key) columns; 3.6.9        配置OGG 的数据抽取进程Extract 源端创建 Extract 抽取进程 ext1

ADD EXTRACT ext1, TRANLOG, THREADS 2, BEGIN NOW 创建ext1 进程的数据队列文件:

ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1, Megabytes 200  检查配置是否正确:

GGSCI> INFO EXTRACT *  编辑ext1 进程参数设置,配置信息将保存于./dirprm/ext1.prm 文件中。

ggsci> edit params ext1 ext1 抽取进程参数配置如下:(包含所有schema

Extract ext1

SETENV (NLS_LANG=American_America.UTF8)

UserID ggadmin, Password ggadmin

DiscardFile ./dirrpt/ext1.dsc, append, Megabytes 200

 

Extract ext1

SETENV (NLS_LANG=American_America.UTF8)

UserID ggadmin@netdb, Password ggadmin

ExtTrail ./dirdat/lt

--TranlogOptions RawDeviceOffset 0

DynamicResolution

GETTRUNCATES

 

DDL INCLUDE OBJNAME I_INFORMTN_SCHEMA.* &

    INCLUDE OBJNAME ORDPLUGINS.*         &

    INCLUDE OBJNAME PRDXIVMILC.*         &

    INCLUDE OBJNAME PRDABPPSZVMIREAD.*   &

    INCLUDE OBJNAME PRDABPPWHVMIREAD.*   &

    INCLUDE OBJNAME PRDABPPXMVMIREAD.*   &

    INCLUDE OBJNAME PRDABPPWHBSVMIREAD.* &

    INCLUDE OBJNAME PRDHKFGVMIREAD.*     &

    INCLUDE OBJNAME PRDXIVMI1.*          &

    INCLUDE OBJNAME PRDXIVMIBRP.*        &

    INCLUDE OBJNAME SHARING.*            &

    INCLUDE OBJNAME PRDSPUSERVMI2READ.*  &

    INCLUDE OBJNAME PRDVMIBRPREAD.*      &

    INCLUDE OBJNAME PRDSPUSERVMI1READ.*  &

    INCLUDE OBJNAME PRDHKFGSPVMI.*       &

    INCLUDE OBJNAME PRDINFOVMIK2.*       &

    INCLUDE OBJNAME PRDINFREPVMI.*       &

    INCLUDE OBJNAME PRDSPUSERVMI3.*      &

    INCLUDE OBJNAME PRDSPVMIBRP.*        &

    INCLUDE OBJNAME PRDSPUSERVMI2.*      &

    INCLUDE OBJNAME CSETRACK.*           &

    INCLUDE OBJNAME PRDCSE.*             &

    INCLUDE OBJNAME PRDCSEVMI3.*         &

    INCLUDE OBJNAME PRDCSEVMI2.*         &

    INCLUDE OBJNAME PRDCSEVMIBRP.*       &

    INCLUDE OBJNAME PRDCSEVMI1.*         &

    INCLUDE OBJNAME PRDABPPCDVMIREAD.*   &

    INCLUDE OBJNAME PRDABPPSHVMIREAD.*   &

    INCLUDE OBJNAME PRDABPPBSVMIREAD.*   &

    INCLUDE OBJNAME PRDSPUSERVMI1.*      &

    INCLUDE OBJNAME PRDABPPWHBSVMI.*     &

    INCLUDE OBJNAME PRDABPPSZVMI.*       &

    INCLUDE OBJNAME PRDABPPWHVMI.*       &

    INCLUDE OBJNAME PRDABPPXMVMI.*       &

    INCLUDE OBJNAME PRDABPPSHVMI.*       &

    INCLUDE OBJNAME PRDABPPCDVMI.*       &

    INCLUDE OBJNAME PRDHKFGVMI.*         &

    INCLUDE OBJNAME PRDABPPVMI3.*        &

    INCLUDE OBJNAME PRDABPPVMIBRP.*      &

    INCLUDE OBJNAME PRDABPPVMI1.*        &

    INCLUDE OBJNAME PRDABPPVMI2.*        &

    INCLUDE OBJNAME PRDABPPBSVMI.*       &

    INCLUDE OBJNAME PUBLIC'.*           

 

DDLOPTIONS REPORT

--DDLOPTIONS UPDATEMETADATA, REPORT

DDLOPTIONS ADDTRANDATA, REPORT

--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

TRANLOGOPTIONS EXCLUDEUSER ggadmin

 

 

TABLEEXCLUDE PRDABPPVMI2.RUPD$*;

TABLEEXCLUDE PRDABPPVMI3.RUPD$*;

TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;

TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;

TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;

TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;

TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;

TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;

TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;

TABLEEXCLUDE PRDABPPVMI1.RUPD$*;

TABLEEXCLUDE PRDHKFGVMI.RUPD$*;

TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;

 

TABLEEXCLUDE PRDABPPVMI2.MLOG$*;

TABLEEXCLUDE PRDABPPVMI3.MLOG$*;

TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;

TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;

TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;

TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;

TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;

TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;

TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;

TABLEEXCLUDE PRDABPPVMI1.MLOG$*;

TABLEEXCLUDE PRDHKFGVMI.MLOG$*;

TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;

 

 

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;

TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;

TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;

TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;

TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;

 

TABLE SI_INFORMTN_SCHEMA.*;

TABLE ORDPLUGINS.*;

TABLE PRDXIVMILC.*;

TABLE PRDABPPSZVMIREAD.*;

TABLE PRDABPPWHVMIREAD.*;

TABLE PRDABPPXMVMIREAD.*;

TABLE PRDABPPWHBSVMIREAD.*;

TABLE PRDHKFGVMIREAD.*;

TABLE PRDXIVMI1.*;

TABLE PRDXIVMIBRP.*;

TABLE SHARING.*;

TABLE PRDSPUSERVMI2READ.*;

TABLE PRDVMIBRPREAD.*;

TABLE PRDSPUSERVMI1READ.*;

TABLE PRDHKFGSPVMI.*;

TABLE PRDINFOVMIK2.*;

TABLE PRDINFREPVMI.*;

TABLE PRDSPUSERVMI3.*;

TABLE PRDSPVMIBRP.*;

TABLE PRDSPUSERVMI2.*;

TABLE CSETRACK.*;

TABLE PRDCSE.*;

TABLE PRDCSEVMI3.*;

TABLE PRDCSEVMI2.*;

TABLE PRDCSEVMIBRP.*;

TABLE PRDCSEVMI1.*;

TABLE PRDABPPCDVMIREAD.*;

TABLE PRDABPPSHVMIREAD.*;

TABLE PRDABPPBSVMIREAD.*;

TABLE PRDSPUSERVMI1.*;

TABLE PRDABPPWHBSVMI.*;

TABLE PRDABPPSZVMI.*;

TABLE PRDABPPWHVMI.*;

TABLE PRDABPPXMVMI.*;

TABLE PRDABPPSHVMI.*;

TABLE PRDABPPCDVMI.*;

TABLE PRDHKFGVMI.*;

TABLE PRDABPPVMI3.*;

TABLE PRDABPPVMIBRP.*;

TABLE PRDABPPVMI1.*;

TABLE PRDABPPVMI2.*;

TABLE PRDABPPBSVMI.*;

TABLE PUBLIC.*;

 

SEQUENCE PRDABPPVMI2.*;

SEQUENCE PRDABPPVMI3.*;

SEQUENCE PRDABPPWHVMI.*;

SEQUENCE PRDSPUSERVMI1.*;

SEQUENCE PRDSPUSERVMI2.*;

SEQUENCE PRDHKFGSPVMI.*;

SEQUENCE PRDABPPCDVMI.*;

SEQUENCE PRDSPVMIBRP.*;

SEQUENCE PRDABPPBSVMI.*;

SEQUENCE PRDABPPXMVMI.*;

SEQUENCE PRDABPPSZVMI.*;

SEQUENCE PRDABPPWHBSVMI.*;

SEQUENCE PRDABPPVMIBRP.*;

SEQUENCE SHARING.*;

SEQUENCE PRDABPPVMI1.*;

SEQUENCE PRDHKFGVMI.*;

SEQUENCE PRDSPUSERVMI3.*;

SEQUENCE PRDABPPSHVMI.*;   3.6.10     配置OGG 的数据传输进程Datapump 源端创建数据泵进程 dp1

ADD EXTRACT dp1, exttrailsource ./dirdat/lt, begin now  创建远程队列文件:

ADD RMTTRAIL ./dirdat/rt, EXTRACT dp1, Megabytes 200  编辑dp1 进程参数设置,配置信息将保存于./dirprm/dp1.prm 文件中。

ggsci> edit params dp1 dp1 传输进程参数配置如下:

Extract dp1

RmtHost 10.99.205.76, MgrPort 7809, timeout 30, Compress

RmtTrail ./dirdat/rt

Passthru

 

 

TABLEEXCLUDE PRDABPPVMI2.RUPD$*;

TABLEEXCLUDE PRDABPPVMI3.RUPD$*;

TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;

TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;

TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;

TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;

TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;

TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;

TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;

TABLEEXCLUDE PRDABPPVMI1.RUPD$*;

TABLEEXCLUDE PRDHKFGVMI.RUPD$*;

TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;

 

TABLEEXCLUDE PRDABPPVMI2.MLOG$*;

TABLEEXCLUDE PRDABPPVMI3.MLOG$*;

TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;

TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;

TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;

TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;

TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;

TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;

TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;

TABLEEXCLUDE PRDABPPVMI1.MLOG$*;

TABLEEXCLUDE PRDHKFGVMI.MLOG$*;

TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;

 

 

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;

TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;

TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;

TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;

TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;

TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;

TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;

TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;

TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;

 

TABLE SI_INFORMTN_SCHEMA.*;

TABLE ORDPLUGINS.*;

TABLE PRDXIVMILC.*;

TABLE PRDABPPSZVMIREAD.*;

TABLE PRDABPPWHVMIREAD.*;

TABLE PRDABPPXMVMIREAD.*;

TABLE PRDABPPWHBSVMIREAD.*;

TABLE PRDHKFGVMIREAD.*;

TABLE PRDXIVMI1.*;

TABLE PRDXIVMIBRP.*;

TABLE SHARING.*;

TABLE PRDSPUSERVMI2READ.*;

TABLE PRDVMIBRPREAD.*;

TABLE PRDSPUSERVMI1READ.*;

TABLE PRDHKFGSPVMI.*;

TABLE PRDINFOVMIK2.*;

TABLE PRDINFREPVMI.*;

TABLE PRDSPUSERVMI3.*;

TABLE PRDSPVMIBRP.*;

TABLE PRDSPUSERVMI2.*;

TABLE CSETRACK.*;

TABLE PRDCSE.*;

TABLE PRDCSEVMI3.*;

TABLE PRDCSEVMI2.*;

TABLE PRDCSEVMIBRP.*;

TABLE PRDCSEVMI1.*;

TABLE PRDABPPCDVMIREAD.*;

TABLE PRDABPPSHVMIREAD.*;

TABLE PRDABPPBSVMIREAD.*;

TABLE PRDSPUSERVMI1.*;

TABLE PRDABPPWHBSVMI.*;

TABLE PRDABPPSZVMI.*;

TABLE PRDABPPWHVMI.*;

TABLE PRDABPPXMVMI.*;

TABLE PRDABPPSHVMI.*;

TABLE PRDABPPCDVMI.*;

TABLE PRDHKFGVMI.*;

TABLE PRDABPPVMI3.*;

TABLE PRDABPPVMIBRP.*;

TABLE PRDABPPVMI1.*;

TABLE PRDABPPVMI2.*;

TABLE PRDABPPBSVMI.*;

TABLE PUBLIC.*;

 

SEQUENCE PRDABPPVMI2.*;

SEQUENCE PRDABPPVMI3.*;

SEQUENCE PRDABPPWHVMI.*;

SEQUENCE PRDSPUSERVMI1.*;

SEQUENCE PRDSPUSERVMI2.*;

SEQUENCE PRDHKFGSPVMI.*;

SEQUENCE PRDABPPCDVMI.*;   3.6.11     启动抽取进程 源端启动数据抽取进程

ggsci> start ext1 人工记录抽取进程启动的时间点,例如:“ 2015-01-06 11:20:55 ,将此时间点作为在下一步中查找长事务的一个判断条件。 可以使用info all 检查extract 进程状态是否为RUNNING 如果状态不是RUNNING ,则可以使用以下命令查看报错原因,再根据错误原因具体分析和处理:

ggsci> view report ext1

使用stats 命令对抽取和传输进行进行检查:

stats ext1 3.7         数据初始化 通常使用的初始化方法有以下几种:

l   对于数据量不大的数据库可以采用数据泵的方式进行初始化。

l   对于数据量较大的数据库,可以采用RMAN 的方式。

l   对于数据量较大且不能采用RMAN 的数据库,建议找一个中间环境,将数据RMAN 恢复到中间环境,再采用数据泵导数。 3.7.1        确定长事务

长事务处理:在V$TRANSACTION 中查找当前正在运行的事务(RAC 环境下,查看gv$transaction ),并找出相应的长事务。在执行数据同步之前,确保这些长事务已经完成,或者被kill 掉(需要得到dba 或者相关管理人员的确认)。

Select  start_time  from gv$transaction

where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss')<to_date('2015-01-06 11:20:55', 'yyyy-mm-dd hh24:mi:ss'); 注:通过上面的SQL语句查找到比3.6.9歩中记录下的时间点早的事务,需要等到该事务结束,然后执行数据同步; 同步开始时确保数据库中长事务已完成或者被kill 掉。 3.7.2        用数据泵进行初始化 获取并记录源端数据库当前的SCN

SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL; 使用expdp 导出生产库数据,flashback_scn 为上一步骤获取的scn ,并行数可适当调整。( 并行度参数parallel 的值根据数据量大小和系统负载调整 由于指定了flashback_scn ,当数据量较大时可能会出现ORA-01555 报错,建议在数据库空闲时进行。)

expdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=exp_PRDABPPVMI1.log  schemas=PRDABPPVMI1  parallel=4 FLASHBACK_SCN= 359963860636 使用impdp 导入,并行数可适当调整。

impdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=imp_PRDABPPVMI1.log  full=y  parallel=4 cluster=n 查看日志确认数据导入正常。  3.7.3        RMAN 进行初始化 源库做RMAN 备份; 在目标库做restore 在源库获取当前SCN

SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL; 将备份以来的所有归档copy 到目标库,目标库recover 到上一步获取的SCN  注意用来启动OGG 复制进程的SCN 为“从生产获取的SCN - 1 ,因为”recover untial scn” 只恢复到指定SCN 之前的数据,不包括指定SCN 假如从生产获取的 SCN 14245600463106 ,则启动 OGG 复制进程的 SCN:

start_SCN = 14245600463106 - 1 = 14245600463105  3.8         目标端系统配置 3.8.1        OGG 软件安装 首先要为GoldenGate 软件划分适当的共享文件系统,这里假设使用/arch 登录RAC 的节点1 主机,使用操作系统oracle 用户(即Oracle 数据库软件的安装和运行用户)来安装GoldenGate 。所使用的GoldenGate 软件版本为11.2.1.0.25 GoldenGate for 11g : p19269552_1121025_Linux-x86-64.zip 将安装介质p19269552_1121025_Linux-x86-64.zip 文件上传到数据库服务器/arch/ogg 目录,使用unzip 命令解压缩,会出现fbo_ggs_Linux_x64_ora11g_64bit.tar 文件,再使用tar 对该文件解报。解压缩/ 解包的过程就是安装过程。

cd /arch/ogg

unzip p19269552_1121025_Linux-x86-64.zip

tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar 解压后,创建 GoldenGate 需要的子目录(使用create subdirs 命令):

cd /arch/ogg

./ggsci

 

Oracle GoldenGate Command Interpreter for Oracle

… …

GGSCI (aaopdb2) 1> create subdirs

 

Creating subdirectories under current directory /arch/ogg

 

Parameter files                /arch/ogg/dirprm: already exists

Report files                   /arch/ogg/dirrpt: created

Checkpoint files               /arch/ogg/dirchk: created

Process status files           /arch/ogg/dirpcs: created

SQL script files               /arch/ogg/dirsql: created

Database definitions files     /arch/ogg/dirdef: created

Extract data files             /arch/ogg/dirdat1: created

Temporary files                /arch/ogg/dirtmp: created

Stdout files                   /arch/ogg/dirout: created  编辑oracle 用户主目录下的.profile 文件,在文件末尾追加以下内容:

export GG_HOME=/arch/ogg

export SHLIB_PATH =$ SHLIB_PATH:$GG_HOME:$ORACLE_HOME/lib  3.8.2        配置新系统OGG 管理进程mgr 在新系统执行该配置任务。

$ cd /arch/ogg

$ ./ggsci

 

编辑mgr 进程配置参数,配置信息将保存于./dirprm/mgr.prm 文件中。

ggsci> edit params mgr 

运行后将进入vi 编辑模式,输入以下内容。

Port 7809

DynamicPortList 7810-7820

DynamicPortReassignDelay 5

 

PurgeOldExtracts ./dirdat/rt*, UseCheckpoints, MinKeepDays 5

 

-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60

 

LagReportHours 1

LagInfoMinutes 3

LagCriticalMinutes 5

保存并退出vi 编辑。启动源端的mgr 管理进程:

ggsci> start mgr  3.8.3        创建运行OGG 的数据库用户

在目标数据库创建GoldenGate 运行所需要的数据库用户。

使用下面的SQL 创建GoldenGate 的数据库用户ggadmin

目标端数据库:

create tablespace goldengate datafile 'xxx' size 10g autoextend on; /* 创建单独的表空间*/

 

create user ggadmin identified by gadmin

default tablespace users

temporary tablespace temp;

 

grant dba to ggadmin;

  数据初始化完成后,在启动复制进程前,还需要如下的检查与配置工作。 3.8.4        禁用目标库的外键约束以及级联删除 在源端由于主外键约束和级联删除约束所产生的DML 本身已经被GoldenGate 捕获并且投递到目标端,如果在目标端启用了外键约束和级联删除,则可能造成重复记录等数据不一致的问题。为了防止此类问题,需要在目标库上禁用外键约束和级联删除约束。 通过下面的方法禁用这些约束: 在 执行下面的SQL ,生成用于禁用外键约束的脚本文件:

set echo off verify off trim on heading off feedback off

set pagesize 2000 linesize 150

 

spool disable_foreign_constraints.sql

select 'alter table '||owner||'.'||table_name|| ' disable constraint '||constraint_name||';'

from dba_constraints

where constraint_type = 'R'

and owner 'PRDABPPVMI1','PRDSPUSERVMI1' );

spool off  在新系统数据库执行disable_foreign_constraints.sql 脚本禁用外键约束。 然后执行以下语句确认所有的外键约束都已经禁用:

Col owner for a10

Col table_name for a30

Col constraint_name for a30

select owner, table_name, constraint_name, status

from dba_constraints

where constraint_type='R' and owner in('PRDABPPVMI1','PRDSPUSERVMI1'); 在新系统执行下面的SQL ,生成用于禁用级联删除的脚本文件:

set echo off verify off trim on heading off feedback off

set pagesize 2000 linesize 150

 

spool disable_cascade_delete_constraints.sql

 

select 'alter table '||owner||'.'||table_name||'  disable constraint '||constraint_name||';'

from dba_constraints

where owner in('PRDABPPVMI1','PRDSPUSERVMI1')  and constraint_type = 'R' and delete_rule = 'CASCADE';

 

spool off  在新系统数据库执行disable_cascade_delete_constraints.sql 脚本禁用级联删除。 然后执行以下语句确认所有的级联删除都已经禁用:

select owner, table_name, constraint_name, status

from dba_constraints

where delete_rule = 'CASCADE'and owner in('PRDABPPVMI1','PRDSPUSERVMI1');  3.8.5        禁用新系统的job 在源端执行的job 会生成对应的DML GoldenGate extract 进程捕获并且投递到目标端,如果目标端同时也开启了job 则有可能造成数据的不一致,例如重复记录等。为了防止目标端数据库系统的job 对复制产生干扰,在启动目标端的GoldenGate 进程之前,需要禁用目标端数据库的job 使用以下命令将新系统数据库的job 队列修改为0 ,从而达到禁用目标库job 的目的:

alter system set job_queue_processes = 0 scope = both sid = '*';  修改为以后使用以下命令确认当前的修改已经生效,job 队列为0

show parameter job; 3.8.6        禁用新系统所有的触发器 在数据库源端触发器产生的DML 已经被GoldenGate extract 进程捕获,并且通过pump 投递到目标端。如果目标端的触发器启用,则可能造成目标端数据的不一致,最典型的一种场景是在目标端没有主键索引的表上产生重复数据。为了防止上述情况的出现,需要在目标端数据库禁用触发器。 在新系统执行下面的语句,生成禁用触发器的脚本文件disable_triggers.sql

set echo off verify off trim on heading off feedback off

set pagesize 2000 linesize 150

 

spool  disable_triggers.sql

select 'alter trigger '||owner||'.'||trigger_name|| ' disable;'

from dba_triggers

where owner in('PRDABPPVMI1','PRDSPUSERVMI1') and status = 'ENABLED';

 

spool off  在新系统执行脚本disable_triggers.sql 禁用触发器。然后执行以下语句确认所有的触发器都已经被禁用:

sqlplus / as sysdba

@ disable_triggers.sql

 

select owner, status, count(*)

from dba_triggers

where owner in('PRDABPPVMI1','PRDSPUSERVMI1')

group by owner, status; 3.8.7        配置Checkpoint 在目标端创建Checkpoint 表,表名为ggadmin.ggchkpt

$ cd /arch/ogg

$./ggsci

ggsci> DBLOGIN USERID ggadmin, PASSWORD ggadmin

Successfully logged into database.

 

ggsci> add checkpointtable ggadmin.ggchkpt

Successfully created checkpoint table GGADMIN.GGCHKPT.  编辑GLOBALS 参数配置文件:

ggsci> EDIT PARAMS ./GLOBALS

CheckpointTable ggadmin.ggchkpt

GGSCHEMA ggadmin  3.8.8        配置OGG 的复制进程Replicat 目标端配置 分别为两个schema 创建一个复制进程。 创建复制进程 rep1

ADD REPLICAT rep1, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt

  编辑Rep1 的参数,自动保存于./dirprm/repl.prm 文件中: edit params rep1

Replicat rep1

SETENV (NLS_LANG=American_America.AL32UTF8)

USERID ggadmin, PASSWORD ggadmin

DiscardFile ./dirrpt/rep1.dsc, Purge, Megabytes 200

 

MaxDiscardRecs 10

REPERROR DEFAULT ABEND

DBOPTIONS DEFERREFCONST

DBOPTIONS SUPPRESSTRIGGERS

GetUpdateBefores

--AllowNoopUpdates

ASSUMETARGETDEFS

CHECKSEQUENCEVALUE

-- HandleCollisions

GETTRUNCATES

 

DDL

--DDL INCLUDE OBJNAME bocnet.*

DDLOPTIONS REPORT

DDLOPTIONS UPDATEMETADATA, REPORT

DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter

DDLERROR DEFAULT ABEND

--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

-- To increase replicat speed

BatchSQL

 

 

MAP PRDABPPVMI1.*, TARGET PRDABPPVMI1.*; 创建复制进程 rep2

ADD REPLICAT rep2, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt 编辑Rep2 的参数,自动保存于./dirprm/rep2.prm 文件中: edit params rep2

Replicat rep2

SETENV (NLS_LANG=American_America.AL32UTF8)

USERID ggadmin, PASSWORD ggadmin

DiscardFile ./dirrpt/rep2.dsc, Purge, Megabytes 200

 

MaxDiscardRecs 10

REPERROR DEFAULT ABEND

DBOPTIONS DEFERREFCONST

DBOPTIONS SUPPRESSTRIGGERS

GetUpdateBefores

--AllowNoopUpdates

ASSUMETARGETDEFS

CHECKSEQUENCEVALUE

-- HandleCollisions

GETTRUNCATES

 

DDL

--DDL INCLUDE OBJNAME bocnet.*

DDLOPTIONS REPORT

DDLOPTIONS UPDATEMETADATA, REPORT

DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter

DDLERROR DEFAULT ABEND

--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

-- To increase replicat speed

BatchSQL

 

--MAPEXCLUDE bocnet.mlog$_bocorg_admin;

 

MAP PRDSPUSERVMI1.*, TARGET PRDSPUSERVMI1.*;     3.8.9        启动复制进程 !!!注意: 启动复制进程前需要登录源端启动 dp1 进程

登录源端系统

GGSCI> start dp1 务必确认新生产库中需要同步表上的外键约束、级联删除、 job 、触发器已经禁用 在检查确认没有问题后,使用下面的命令启动复制进程:

start rep1 aftercsn SCN

start rep2 aftercsn SCN

 

若采用数据泵初始化,SCN为“3.7.2”小节中获取的SCN。

若采用RMAN初始化,SCN为“3.7.3”小节中获取的SCN-1。 可以使用info all 检查replicat 进程状态是否为RUNNING ;如果状态不是RUNNING ,则可以使用以下命令查看报错原因:

ggsci>view report rep1 然后再根据错误原因具体分析和处理。

相关推荐