目的:
实现数据从oracle database 10.2.0.1.0到oracle database 10.2.0.1.0的单向复制
环境:
Item |
Source System |
Target System |
Platform |
OEL5.4 |
OEL5.4 |
Hostname |
zhang |
gc1 |
Database |
Oracle 10.2.0.1.0 |
Oracle 10.2.0.1.0 |
Character Set |
Zhs16gbk |
Zhs16gbk |
ORACLE_SID |
PROD |
Rui |
Listener Name/Port |
LISTENER/1521 |
LISTENER/1521 |
Goldengate User |
ogg |
Ogg |
实验步骤:
一、安装前准备
1. 在oracle用户的环境变量中增加以下一行:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib
2. 将OGG的安装包上传到系统中
[oracle@zhang ~]$ rz
rz waiting to receive.
开始 zmodem 传输。 按 Ctrl+C 取消。
100% 49900 KB 1919 KB/s 00:00:26 0 Errors
[oracle@zhang ~]$ ls
10201_database_linux32.zip dept.dmp hotbackup.sql libXp-1.0.0-8.1.el5.i386.rpm V18156-01-linux.zip
database Desktop hot.sql sqlnet.log
二、在linux上开始安装OGG 10g
源库:
[oracle@zhang ~]$ mkdir -p /u01/app/ogg
[oracle@zhang ~]$ cp V18156-01-linux.zip /u01/app/ogg/
[oracle@zhang ~]$ cd /u01/app/ogg/
[oracle@zhang ogg]$ unzip V18156-01-linux.zip
[oracle@zhang ogg]$ ls
ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar V18156-01-linux.zip
[oracle@zhang ogg]$ tar -xvf ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
目标库:
[oracle@gc1 ~]$ mkdir -p /u01/app/ogg
[oracle@gc1 ~]$ cp V18156-01-linux.zip /u01/app/ogg/
[oracle@gc1 ~]$ cd /u01/app/ogg/
[oracle@gc1 ogg]$ unzip V18156-01-linux.zip
[oracle@gc1 ogg]$ tar -xvf ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
三、为Glodengate创建子工作目录
源库:
[oracle@zhang ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 10.4.0.19 Build 002
Linux, x86, 32bit (optimized), Oracle 10 on Sep 17 2009 23:49:42
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
GGSCI (zhang) 1> create subdirs
Creating subdirectories under current directory /u01/app/ogg
Parameter files /u01/app/ogg/dirprm: created
Report files /u01/app/ogg/dirrpt: created
Checkpoint files /u01/app/ogg/dirchk: created
Process status files /u01/app/ogg/dirpcs: created
SQL script files /u01/app/ogg/dirsql: created
Database definitions files /u01/app/ogg/dirdef: created
Extract data files /u01/app/ogg/dirdat: created
Temporary files /u01/app/ogg/dirtmp: created
Veridata files /u01/app/ogg/dirver: created
Veridata Lock files /u01/app/ogg/dirver/lock: created
Veridata Out-Of-Sync files /u01/app/ogg/dirver/oos: created
Veridata Out-Of-Sync XML files /u01/app/ogg/dirver/oosxml: created
Veridata Parameter files /u01/app/ogg/dirver/params: created
Veridata Report files /u01/app/ogg/dirver/report: created
Veridata Status files /u01/app/ogg/dirver/status: created
Veridata Trace files /u01/app/ogg/dirver/trace: created
Stdout files /u01/app/ogg/dirout: created
GGSCI (zhang) 2>
目标库:
[oracle@gc1 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 10.4.0.19 Build 002
Linux, x86, 32bit (optimized), Oracle 10 on Sep 17 2009 23:49:42
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
GGSCI (gc1) 1> create subdirs
Creating subdirectories under current directory /u01/app/ogg
Parameter files /u01/app/ogg/dirprm: created
Report files /u01/app/ogg/dirrpt: created
Checkpoint files /u01/app/ogg/dirchk: created
Process status files /u01/app/ogg/dirpcs: created
SQL script files /u01/app/ogg/dirsql: created
Database definitions files /u01/app/ogg/dirdef: created
Extract data files /u01/app/ogg/dirdat: created
Temporary files /u01/app/ogg/dirtmp: created
Veridata files /u01/app/ogg/dirver: created
Veridata Lock files /u01/app/ogg/dirver/lock: created
Veridata Out-Of-Sync files /u01/app/ogg/dirver/oos: created
Veridata Out-Of-Sync XML files /u01/app/ogg/dirver/oosxml: created
Veridata Parameter files /u01/app/ogg/dirver/params: created
Veridata Report files /u01/app/ogg/dirver/report: created
Veridata Status files /u01/app/ogg/dirver/status: created
Veridata Trace files /u01/app/ogg/dirver/trace: created
Stdout files /u01/app/ogg/dirout: created
四、用Goldengate配置oracle数据库
创建Goldengate用户,并赋予适当权限
源库:
SQL> create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/PROD/ogg01.dbf' size 50m autoextend on ;
Tablespace created.
SQL> create user ogg identified by Ogg default tablespace tbs_ogg temporary tablespace temp quota unlimited on tbs_ogg;
User created.
SQL> grant connect , resource to ogg;
Grant succeeded.
SQL> grant create session ,alter session to ogg;
Grant succeeded.
SQL> grant select any dictionary ,select any table to ogg;
Grant succeeded.
SQL> grant alter any table to ogg;
Grant succeeded.
SQL> grant flashback any table to ogg;
Grant succeeded.
SQL> grant execute on dbms_flashback to ogg;
Grant succeeded.
创建一个测试表,并插入数据
SQL> conn scott/tiger
Connected.
SQL> create table emp_ogg as select * from emp ;
Table created.
SQL> create table dept_ogg as select * from dept;
Table created.
为保证数据的一致性,为两张表添加约束
SQL> alter table emp_ogg add constraint pk_empno primary key(empno);
Table altered.
SQL> alter table dept_ogg add constraint pk_deptno primary key(deptno);
Table altered.
目标库:
SQL> create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/rui/rui/ogg01.dbf' size 50m autoextend on ;
Tablespace created.
SQL> create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace temp quota unlimited on tbs_ogg;
User created.
SQL> grant connect ,resource to ogg;
Grant succeeded.
SQL> grant create session ,alter session to ogg;
Grant succeeded.
SQL> grant select any dictionary ,select any table to ogg;
Grant succeeded.
SQL> grant create table to ogg;
Grant succeeded.
创建一个空表并赋予Goldengate用户DML操作权限
SQL> conn scott/tiger
Connected.
SQL> create table emp_ogg as select * from emp where 1=2;
Table created.
SQL> create table dept_ogg as select * from dept where 1=2;
Table created.
SQL> grant insert ,update,delete on emp_ogg to ogg;
Grant succeeded.
SQL> grant insert , update , delete on dept_ogg to ogg;
Grant succeeded.
五、确保源库处于最小日志开启模式状态
检查源库是否最小日志模式下:
SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEME
--------
NO
打开最小补充日志
SQL> alter database add supplemental log data;
Database altered.
增加完之后,切换一下日志组,以确保处于最小补充日志模式下
SQL> alter system switch logfile;
System altered.
六、确保源数据库处于归档模式下
源库:
SQL> conn / as sysdba
Connected.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 6
Current log sequence 8
设置归档路径并开启归档
SQL> alter system set log_archive_dest_1 ='location=/u02/archivelog/PROD' scope=both;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
开归档
SQL> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 71304784 bytes
Database Buffers 209715200 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open ;
Database altered.
目标库:
SQL> alter system set log_archive_dest_1 ='location=/u02/archivelog/rui' scope = both;
System altered.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u02/archivelog/rui
Oldest online log sequence 1
Current log sequence 2
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
开归档
SQL> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 92276304 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database archivelog ;
Database altered.
归档所有未归档日志
SQL> alter database open;
Database altered.
SQL> alter system archive log current;
System altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u02/archivelog/rui
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
七、检查源库是否处于force logging 模式,并开启force logging 模式
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging ;
Database altered.
确保在源库中的两张测试表的交互数据的改变能够被捕获
[oracle@zhang ogg]$ export ORACLE_SID=PROD
[oracle@zhang ogg]$ echo $ORACLE_SID
PROD
[oracle@zhang ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 10.4.0.19 Build 002
Linux, x86, 32bit (optimized), Oracle 10 on Sep 17 2009 23:49:42
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
GGSCI (zhang) 1> DBLOGIN USERID ogg, PASSWORD ogg
Successfully logged into database.
GGSCI (zhang) 9> add trandata scott.dept_ogg
Logging of supplemental redo data enabled for table SCOTT.DEPT_OGG.
GGSCI (zhang) 10> add trandata scott.emp_ogg
Logging of supplemental redo data enabled for table SCOTT.EMP_OGG.
GGSCI (zhang) 13> info trandata scott.emp_ogg
Logging of supplemental redo log data is enabled for table SCOTT.EMP_OGG
GGSCI (zhang) 14> info trandata scott.dept_ogg
Logging of supplemental redo log data is enabled for table SCOTT.DEPT_OGG
八、配置goldengate manager进程
8.1 在源系统中配置manager
创建一个manager参数文件,分配一个端口号
GGSCI (zhang) 15> edit params mgr
PORT 7809
PURGEOLDEXTRACTS ./dirdat, USECHECKPOINTS
~
"dirprm/mgr.prm" [New] 3L, 53C written
启动manager
GGSCI (zhang) 1> start mgr
Manager started.
查看mgr是否已启动
GGSCI (zhang) 2> info mgr
Manager is running (IP port zhang.7809).
8.2 在目标系统上配置mgr
创建一个manager参数文件,分配一个端口号
GGSCI (gc1) 2> edit params mgr
PORT 7809
PURGEOLDEXTRACTS /u01/app/ogg/dirdat, USECHECKPOINTS
~
"dirprm/mgr.prm" [New] 3L, 64C written
启动manager
GGSCI (gc1) 3> start mgr
Manager started.
查看mgr是否已启动
GGSCI (gc1) 4> info mgr
Manager is running (IP port gc1.7809).
九、通过LOAD方式直接加载初始化数据
1.在源系统中配置提取进程
增加一个名为EINI_1的提取进程
GGSCI (zhang) 3> add extract EINI_1,sourceistable
EXTRACT added.
查看提取进程的info
GGSCI (zhang) 5> INFO EXTRACT *, TASKS
EXTRACT EINI_1 Initialized 2014-04-24 14:29 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Not Available
First Record Record 0
Task SOURCEISTABLE
编辑该提取进程
GGSCI (zhang) 6> edit params EINI_1
-- GoldenGate Initial Data Capture
-- for EMP_OGG and DEPT_OGG
--
EXTRACT EINI_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD Ogg
RMTHOST gc1, MGRPORT 7809
RMTTASK REPLICAT, GROUP RINI_1
TABLE scott.EMP_OGG;
TABLE scott.DEPT_OGG;
~
"dirprm/eini_1.prm" [New] 11L, 251C written
GGSCI (zhang) 7>
为了能够识别中文字符,将在提取进程、数据泵进程和复制进程中的环境变量NLS_LANG设为AMERICAN_AMERICA.ZHS16GBK
2. 在目标系统中配置复制进程
GGSCI (gc1) 1> add replicat RINI_1 ,specialrun
REPLICAT added.
查看RINI_1的INFO
GGSCI (gc1) 6> INFO REPLICAT *, TASKS
REPLICAT RINI_1 Initialized 2014-05-14 01:31 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:01:48 ago)
Log Read Checkpoint Not Available
Task SPECIALRUN
GGSCI (gc1) 7>
编辑初始化目标载入进程RINI_1:
GGSCI (gc1) 7> edit params RINI_1
-- GoldenGate Initial Load Delivery
--
REPLICAT RINI_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ASSUMETARGETDEFS
USERID ogg, PASSWORD Ogg
DISCARDFILE ./dirrpt/RINIaa.dsc, PURGE
MAP scott.*, TARGET scott.*;
~
"dirprm/rini_1.prm" [New] 9L, 210C written
GGSCI (gc1) 8>
注意:在MAP声明那行,第一个是源库要迁移的数据所在的用户模式,第二个时目标库要接收的数据所在的用户模式。
3. 完成初始化加载
在源系统中开启初始化载入进程EINI_1,然后在目标端的RINI_1进程将会自动启动
GGSCI (zhang) 1> start extract EINI_1
Sending START request to MANAGER ...
EXTRACT EINI_1 starting
查看初始化载入结果和进程的状态
GGSCI (zhang) 16> view REPORT EINI_1
2014-04-24 17:30:24 GGS INFO 414 Wildcard resolution set to IMMEDIATE because SOURCEISTABLE is used.
***********************************************************************
Oracle GoldenGate Capture for Oracle
Version 10.4.0.19 Build 002
Linux, x86, 32bit (optimized), Oracle 10 on Sep 18 2009 00:01:59
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
Starting at 2014-04-24 17:30:24
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Tue Aug 18 15:51:54 EDT 2009, Release 2.6.18-164.el5
Node: zhang
Machine: i686
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 3526
Description:
***********************************************************************
** Running with the following parameters **
***********************************************************************
-- GoldenGate Initial Data Capture
-- for EMP_OGG and DEPT_OGG
--
EXTRACT EINI_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
Set environment variable (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ***
RMTHOST gc1, MGRPORT 7809
RMTTASK REPLICAT, GROUP RINI_1
TABLE scott.EMP_OGG;
Using the following key columns for source table SCOTT.EMP_OGG: EMPNO.
TABLE scott.DEPT_OGG;
Using the following key columns for source table SCOTT.DEPT_OGG: DEPTNO.
CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 2G
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 2.90G
CACHESIZEMAX (strict force to disk): 2.66G
Database Version:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
Database Language and Character Set:
NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK"
NLS_LANGUAGE = "AMERICAN"
NLS_TERRITORY = "AMERICA"
NLS_CHARACTERSET = "WE8ISO8859P1"
Warning: your NLS_LANG setting does not match database server language setting.
Please refer to user manual for more information.
GGSCI (zhang) 17>
检查数据是否已进行传输
[oracle@gc1 admin]$ echo $ORACLE_SID
rui
SQL> conn scott/tiger
Connected.
SQL> select * from emp_ogg;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected.
SQL> select * from dept_ogg;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL>
在初始化加载之后,捕获进程EINI_1和复制进程RINI_1会自动停止
源系统:
GGSCI (zhang) 17> INFO EXTRACT EINI_1
EXTRACT EINI_1 Last Started 2014-04-24 17:30 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Table SCOTT.DEPT_OGG
2014-04-24 17:31:02 Record 4
Task SOURCEISTABLE
目标系统:
GGSCI (gc1) 5> INFO REPLICAT RINI_1
REPLICAT RINI_1 Initialized 2014-05-14 01:31 Status STOPPED
Checkpoint Lag 00:00:00 (updated 1525:47:14 ago)
Log Read Checkpoint Not Available
Task SPECIALRUN
4.将主库字符集更改为ZHS16GBK
SQL> shutdown immediate
SQL> startup mount
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use zhs16gbk;
检查是否改变
SQL> shutdown immediate
SQL> startup
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
十、在源系统中配置捕获进程,用于捕获变更的DML操作
1. 设置捕获进程的参数文件
GGSCI (zhang) 18> edit params EORA_1
-- Change Capture parameter file to capture
-- EMP_OGG and DEPT_OGG changes
EXTRACT EORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD Ogg
EXTTRAIL ./dirdat/aa
TABLE scott.EMP_OGG;
TABLE scott.DEPT_OGG;
~
~
"dirprm/eora_1.prm" [New] 9L, 225C written
注意:“aa”是本地跟踪文件的前缀
2.在源系统中执行以下命令以增加主捕获组
GGSCI (zhang) 19> add extract EORA_1,tranlog,begin now
EXTRACT added.
3. 定义goldengate的本地跟踪路径
GGSCI (zhang) 20> add exttrail ./dirdat/aa, extract EORA_1,megabytes 5
EXTTRAIL added.
4.开启主捕获进程
GGSCI (zhang) 21> start extract EORA_1
Sending START request to MANAGER ...
EXTRACT EORA_1 starting
检查进程是否正在运行
GGSCI (zhang) 22> info extract EORA_1
EXTRACT EORA_1 Last Started 2014-04-24 18:31 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:05 ago)
Log Read Checkpoint Oracle Redo Logs
2014-04-24 18:32:30 Seqno 9, RBA 35702272
此时,goldengate会在源系统中指定的本地追踪文件目录下生成一个“aa000000”的追踪文件
[oracle@zhang dirdat]$ ll /u01/app/ogg/dirdat/
total 4
-rw-rw-rw- 1 oracle oinstall 897 Apr 24 18:31 aa000000
十一、在源系统中配置pump进程
1. 设置pump进程的参数文件
GGSCI (zhang) 34> EDIT PARAMS PORA_1
-- Data Pump parameter file to read the local
-- trail of EMP_OGG and DEPT_OGG changes
--
EXTRACT PORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
PASSTHRU
RMTHOST gc1, MGRPORT 7809
RMTTRAIL ./dirdat/pa
TABLE scott.EMP_OGG;
TABLE scott.DEPT_OGG;
~
"dirprm/pora_1.prm" [New] 11L, 249C written
增加数据泵捕获组
GGSCI (zhang) 35> add extract PORA_1,exttrailsource ./dirdat/aa
EXTRACT added.
查看结果
GGSCI (zhang) 36> info extract PORA_1
EXTRACT PORA_1 Initialized 2014-04-24 18:41 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:54 ago)
Log Read Checkpoint File ./dirdat/aa000000
First Record RBA 0
2. 在源系统中增加goldengate的迁移路径
GGSCI (zhang) 37> add rmttrail ./dirdat/pa,extract PORA_1,megabytes 5
RMTTRAIL added.
3. 开启data pump进程
GGSCI (zhang) 38> start extract PORA_1
Sending START request to MANAGER ...
EXTRACT PORA_1 starting
查看结果
GGSCI (zhang) 39> info extract PORA_1
EXTRACT PORA_1 Last Started 2014-04-24 18:45 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:00 ago)
Log Read Checkpoint File ./dirdat/aa000000
First Record RBA 897
此时,会有一个“pa000000”的文件在目标系统的迁移的目录dirdat中生成
[oracle@gc1 ~]$ ll /u01/app/ogg/dirdat/
total 0
-rw-rw-rw- 1 oracle oinstall 0 Jul 16 16:23 pa000000
十二、在目标系统中配置replicat进程,用于断点续传
1.在target system中创建全局参数文件
编辑GLOBALS(upper case)参数文件去指定表的CHECKPOINT
GGSCI (gc1) 6> EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE ogg.ggschkpt
~
"./GLOBALS" [New] 1L, 29C written
查看
[oracle@gc1 ~]$ cd /u01/app/ogg/
[oracle@gc1 ogg]$ ll GLOBALS
-rw-rw-rw- 1 oracle oinstall 29 Jul 16 16:32 GLOBALS
为应对GLOBALS配置产生的影响,必须退出GGSCI会话:
GGSCI (gc1) 7> exit
2.重新登陆ggsci,在目标系统中增加一个复制类型的checkpoint table
[oracle@gc1 ogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 10.4.0.19 Build 002
Linux, x86, 32bit (optimized), Oracle 10 on Sep 17 2009 23:49:42
Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved.
GGSCI (gc1) 1> dblogin userid ogg ,password ogg
Successfully logged into database.
GGSCI (gc1) 2> add checkpointtable
No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...
Successfully created checkpoint table OGG.GGSCHKPT.
3.编辑传输进程参数文件
增加复制进程组
GGSCI (gc1) 3> add replicat RORA_1,exttrail ./dirdat/pa
REPLICAT added.
编辑此参数文件
GGSCI (gc1) 4> EDIT PARAM RORA_1
-- Change Delivery parameter file to apply
-- EMP_OGG and DEPT_OGG Changes
--
REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD Ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE
MAP scott.emp_ogg, TARGET scott.emp_ogg;
MAP scott.dept_ogg, TARGET scott.dept_ogg;
~
"dirprm/rora_1.prm" [New] 12L, 322C written
注意:在MAP声明中,第一个schema是指的源库的,第二个schema指的是目标库的。
4. 开启replicat进程
GGSCI (gc1) 5> START REPLICAT RORA_1
Sending START request to MANAGER ...
REPLICAT RORA_1 starting
验证是否开启
GGSCI (gc1) 6> INFO REPLICAT RORA_1
REPLICAT RORA_1 Last Started 2014-07-16 16:47 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint File ./dirdat/pa000000
First Record RBA 0
5.做一个测试,看是否能够正确的实时传输
5.1 insert operation
在源库中插入数据
SQL> conn scott/tiger
Connected.
SQL> INSERT INTO emp_ogg VALUES(8800,'SMITH','CLERK',7902,'12-DEC-80',800,100,20);
1 row created.
SQL> INSERT INTO emp_ogg VALUES(8877,'ALLEN',' SALESMAN',7698,'20-FEB-81',600,100,30);
1 row created.
SQL> commit;
Commit complete.
在目标库中查看结果:
SQL> set linesize 100
SQL> select * from emp_ogg;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
8800 SMITH CLERK 7902 12-DEC-80 800 100 20
8877 ALLEN SALESMAN 7698 20-FEB-81 600 100 30
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
16 rows selected.
5.2 update operation
在源库中更新数据
SQL> UPDATE emp_ogg SET ENAME='CUUG' WHERE empno=7788;
1 row updated.
SQL> commit;
Commit complete.
在目标库中查看
5.3 delete operation
在源库中删除数据
SQL> delete from emp_ogg where empno=7369;
1 row deleted.
SQL> commit;
Commit complete.
在目标库中查看
十三、Limitation
In zhs16gbk encoding, two bytes represents one chinese character. However, in AL32UTF8 encoding three bytes represents one chinese character. Therefore, if we INSERT 10 chinese characters in source system (zhs16gbk), which actually occupies 20 bytes, it will become 30 bytes in target system (AL32UTF8). If the column maximum width is 20 bytes, The INSERT operation can succeed in source system, but fail in target system.
List details about process : info replicat rora_1,showch --showch show channel
十四、搭建环境中遇到的问题和解决的方法
1.ggs error 182

原因:数据库没有打开
解决方法:开库
2.ggs warning 222、218、162,ggs error 218
原因:出现该问题一般都是由于同步的源和目标表结构不一致,包括表字段和索引。
解决方法:由于源库中要同步的两个表中创建了主键约束而目标库中的同步表中没有,导致同步的源和目标表结构不一致,因此,在目标库中加上相对应的索引即可。