1、环境介绍
2、安装ogg
2.1、创建安装目录
源端
[root@leo ~]# mkdir -p /u01/app/ogg
[root@leo ~]# chown -R oracle:oinstall /u01/app/ogg
目标端
[root@leo-deng ~]# mkdir -p /u01/app/ogg
[root@leo-deng ~]# chown -R oracle:oinstall /u01/app/ogg
2.2、安装介质
源端
sftp> cd /u01/app/ogg
sftp> lcd F:\installmedium\ogg
sftp> put ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
[oracle@leo ogg]$ tar -vxf ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
目标端:
sftp> cd /u01/app/ogg
sftp> lcd F:\installmedium\ogg
sftp> put ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
[oracle@leo-deng ogg]$ tar -vxf ggs_redhatAS40_x86_ora10g_32bit_v10.4.0.19_002.tar
2.3、环境变量
源端与目标端均添加如下参数
[oracle@leo ~]$cat .bash_profile
export GG_HOME=/u01/app/ogg
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$GG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
alias ggsci='cd $GG_HOME;ggsci'
[oracle@leo ~]$source .bash_profile
[oracle@leo-deng ~]$source .bash_profile
2.4、源端数据库配置
2.4.1、强制生成日志
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FOR
---
YES
2.4.2、开启归档
[oracle@leo ~]$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/orclsou/arch';
SQL> alter database open;
2.4.3、开启补充日志
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
SQL> alter database add supplemental log data;
SQL> alter system switch logfile;
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
说明:redo默认情况下只记录数据块改变的信息,其实它还可以记录更详细的信息,这些信息对第三方的容灾软件很重要,所以此处将supplemental log mode模式打开,oracle一般是用rowid来唯一标识一行记录,但goldengate需要主键等其他标识,所以要开附加日志.
2.5、创建用户、表空间及授权
创建goldengate数据库用户以及专属于ogg的表空间
源端:
[oracle@leo ~]$ sqlplus / as sysdba
create tablespace ts_ogg datafile '/u01/app/oracle/oradata/orclsou/ts_ogg.dbf' size 50m autoextend on;
create user ogg identified by oracle default tablespace ts_ogg;
grant resource to ogg;
grant create session, alter session to ogg;
grant select any dictionary to ogg;
grant flashback any table to ogg;
grant alter any table to ogg;
grant select any table to ogg;
grant execute on dbms_flashback to ogg;
目标端:
[oracle@leo-deng ~]$ sqlplus / as sysdba
create tablespace ts_ogg datafile '/u01/app/oracle/oradata/orcldst/ts_ogg.dbf' size 200m autoextend on;
create user ogg identified by oracle default tablespace ts_ogg;
grant resource to ogg;
grant create session, alter session to ogg;
grant select any dictionary to ogg;
grant flashback any table to ogg;
grant alter any table to ogg;
grant select any table to ogg;
grant execute on dbms_flashback to ogg;
grant insert any table to ogg;
grant update any table to ogg;
grant delete any table to ogg;
2.6、准备数据
2.6.1、源端
建立用户并授予基本权限
create user dlj identified by oracle;
grant connect,resource to dlj;
grant select on scott.emp to dlj;
grant select on scott.dept to dlj;
dlj用户创建测试表,并增加主键
SQL> show user
USER is "DLJ"
create table myemp as select * from scott.emp;
create table mydept as select * from scott.dept;
alter table mydept add primary key (deptno);
alter table myemp add primary key (empno);
导出数据,用于目标端
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
exp dlj/oracle@orclsou file=/home/oracle/dlj.dmp tables=mydept,myemp rows=y log=/home/oracle/exp.log
将源端的dmp文件scp到目标端
scp scott.dmp oracle@192.168.133.157:/home/oracle/
2.6.2、目标端
创建用户并授予权限
create user dlj identified by oracle;
grant connect,resource to dlj;
导入测试数据
[oracle@leo-deng ~]$ imp dlj/oracle file=/home/oracle/dlj.dmp full=y
验证测试数据
SQL> conn dlj/oracle
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
MYDEPT TABLE
MYEMP TABLE
SQL> select count(*) from mydept;
COUNT(*)
----------
4
SQL> select count(*) from myemp;
COUNT(*)
----------
14
3、OGG配置
3.1、源端
说明:必须在ogg的home目录下启动ggsci,这样才能把子目录建在ogg的home目录下,如果不在相应位置建立子目录,在后面编辑参数文件时会报错.
[oracle@leo ogg]$ cd $GG_HOME
[oracle@leo ogg]$ ./ggsci
3.1.1、创建目录
GGSCI (leo) 1> create subdirs
Creating subdirectories under current directory /ogg
Parameter files /ogg/dirprm: created
Report files /ogg/dirrpt: created
Checkpoint files /ogg/dirchk: created
Process status files /ogg/dirpcs: created
SQL script files /ogg/dirsql: created
Database definitions files /ogg/dirdef: created
Extract data files /ogg/dirdat: created
Temporary files /ogg/dirtmp: created
Veridata files /ogg/dirver: created
Veridata Lock files /ogg/dirver/lock: created
Veridata Out-Of-Sync files /ogg/dirver/oos: created
Veridata Out-Of-Sync XML files /ogg/dirver/oosxml: created
Veridata Parameter files /ogg/dirver/params: created
Veridata Report files /ogg/dirver/report: created
Veridata Status files /ogg/dirver/status: created
Veridata Trace files /ogg/dirver/trace: created
Stdout files /ogg/dirout: created
3.1.2、添加端口
GGSCI (leo) 2> edit param mgr
添加
port 7809
GGSCI (leo) 3> start mgr
Manager started.
GGSCI (leo) 4> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
GGSCI (leo) 6> dblogin userid ogg,password oracle
Successfully logged into database.
GGSCI (leo) 7> add trandata dlj.*
Logging of supplemental redo data enabled for table DLJ.MYDEPT.
Logging of supplemental redo data enabled for table DLJ.MYEMP.
说明:数据库附加日志打开后还需要对每张表执行add trandata吗?
答案是肯定的,如果不执行add trandata,insert同步没有问题(ORACLE数据库),但在同步update或delete时,就会因为丢失主键报同步错误.
不开启表级的最小附加日志,update的redo信息不记录没有进行更新的字段信息,如主键不更新的话主键不记录在redo中,所以会导致同步失败.
3.1.3、抓取进程
extract进程,负责从源端数据表或者日志中捕获数据
GGSCI (leo) 8> add extract exta,tranlog,begin now
EXTRACT added.
添加本地队列ra,exta进程捕捉到的有效数据将写入本地队列
GGSCI (leo) 9> add exttrail ./dirdat/ra,extract exta
EXTTRAIL added.
为exta进程配置参数
GGSCI (leo) 1> edit param exta
添加如下内容:
extract exta
userid ogg,password oracle
setenv NLS_LANG = (AMERICAN_AMERICA.WE8ISO8859P1)
exttrail ./dirdat/ra
dynamicresolution /* 优化参数,动态分析表结构
gettruncates /*抓取truncate table操作
Table dlj.*;
3.1.4、投递进程
源端数据库配置投递过程
GGSCI (leo) 2> add extract dp1,exttrailsource ./dirdat/ra
EXTRACT added.
GGSCI (leo) 3> edit param dp1
添加如下:
extract dp1
userid ogg,password oracle
setenv (NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P1)
passthru
rmthost 192.168.133.157,mgrport 7809
rmttrail ./dirdat/ra
table dlj.*;
GGSCI (leo) 4> add rmttrail ./dirdat/ra,extract dp1
RMTTRAIL added.
GGSCI (leo) 5> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED DP1 00:00:00 00:03:48
EXTRACT STOPPED EXTA 00:00:00 00:38:22
GGSCI (leo) 6> start dp1
Sending START request to MANAGER ...
EXTRACT DP1 starting
GGSCI (leo) 7> start exta
Sending START request to MANAGER ...
EXTRACT EXTA starting
GGSCI (leo) 8> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DP1 00:00:00 00:04:26
EXTRACT RUNNING EXTA 00:38:56 00:00:04
3.2、目标端
[oracle@leo-deng ~]$ cd $GG_HOME
[oracle@leo-deng ogg]$ ./ggsci
3.2.1、创建目录
GGSCI (leo-deng) 1> create subdirs
GGSCI (leo-deng) 2> edit param mgr
添加如下
port 7809
GGSCI (leo-deng) 3> start mgr
Manager started.
GGSCI (leo-deng) 4> edit params ./globals
添加如下
checkpointtable ogg.checkpoint
GGSCI (leo-deng) 5> dblogin userid ogg,password oracle
Successfully logged into database.
GGSCI (leo-deng) 6> add checkpointtable ogg.checkpoint
Successfully created checkpoint table OGG.CHECKPOINT.
3.2.2、复制进程
GGSCI (leo-deng) 8> add replicat repa,exttrail ./dirdat/ra,checkpointtable ogg.checkpoint
REPLICAT added.
GGSCI (leo-deng) 9> edit param repa
添加如下:
replicat repa
setenv (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)
userid ogg,password oracle
numfiles 500
grouptransops 10000
handlecollisions
assumetargetdefs
allownoopupdates
dynamicresolution
discardfile ./dirrpt/repsa_discard.txt, append, megabytes 10
map dlj.*, target dlj.*;
说明:逗号与target之间需用空格隔开, ogg.checkpoint中的ogg为之前创建的用户.
GGSCI (leo-deng) 10> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT STOPPED REPA 00:00:00 00:03:25
GGSCI (leo-deng) 11> start repa
Sending START request to MANAGER ...
REPLICAT REPA starting
GGSCI (leo-deng) 17> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPA 00:00:00 00:00:02
4、验证数据
源端中向mydept表中插入一条数据
SQL> select * from mydept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> insert into mydept values (50,'IT','ChongQing');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from mydept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 IT ChongQing
SQL> show user
USER is "DLJ"
目标端验证
SQL> select * from mydept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 IT ChongQing
ogg基本配置完成.
总结:配置过程包括操作系统层面前期准备、源端目标端数据库配置、源端中mgr/extract/pump进程配置、目标端中mgr/replicat进程配置.配置过程要保持数据库开启状态,否则ggsci中用户不能登录.
参照网址:http://t.zoukankan.com/NextAction-p-7366666.html