实验环境为两台OracleLinux5.7操作系统,分别DBCA安装好了oracle11g 11.2.0.3数据库,两边的安装路径完全相同。ogg的版本为112101 linux86位。
主机 IP oracle_sid
oggsource 192.168.1.20 oggsource
oggtarget 192.168.1.21 oggtarget
很多操作都需要在两台主机分别执行,以示区别,我用蓝色的字体标示target主机。
下面开始OGG初体验之旅
OGG安装目录为$ORACLE_BASE/gg
SourceDB
[oracle@oggsource ~]$ cd /u01/app/oracle
[oracle@oggsource oracle]$ ll
total 32
drwxr-x--- 3 oracle oinstall 4096 Aug 5 08:46 admin
drwxr-x--- 5 oracle oinstall 4096 Aug 5 08:47 cfgtoollogs
drwxr-xr-x 2 oracle oinstall 4096 Jul 30 13:19 checkpoints
drwxr-xr-x 8 oracle oinstall 4096 Sep 22 2011 database
drwxrwxr-x 11 oracle oinstall 4096 Jul 30 13:18 diag
drwxr-x--- 4 oracle oinstall 4096 Aug 5 08:47 fast_recovery_area
drwxr-x--- 3 oracle oinstall 4096 Aug 5 08:46 oradata
drwxr-xr-x 3 oracle oinstall 4096 Jul 30 13:16 product
[oracle@oggsource oracle]$ mkdir gg
[oracle@oggsource oracle]$ cd gg
[oracle@oggsource gg]$ unzip /tmp/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[[oracle@oggsource gg]$ tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
OGG安装目录为$ORACLE_BASE/gg
TargetDB
[oracle@oggtarget ~]$ cd /u01/app/oracle
[oracle@oggtarget oracle]$ mkdir gg
[oracle@oggtarget oracle]$ cd gg
[oracle@oggtarget gg]$ unzip /tmp/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[oracle@oggtarget gg]$ tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
Oracle用户下的bash_profile文件中配置关于OGG的信息
SourceDB
vi /home/oracle/.bash_profile
export ORACLE_SID=oggsource
export ORACLE_BASE=/u01/app/oracle
export OGG_HOME=$ORACLE_BASE/gg <==增加一个OGG_HOME
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME <==增加OGG_HOME到PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
alias s="sqlplus / as sysdba"
stty erase ^h
[oracle@oggsource ~]$ . .bash_profile
Oracle用户下的bash_profile文件中配置关于OGG的信息
TargetDB
vi /home/oracle/.bash_profile
export ORACLE_SID=oggtarget
export ORACLE_BASE=/u01/app/oracle
export OGG_HOME=$ORACLE_BASE/gg
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
alias s="sqlplus / as sysdba"
stty erase ^h
[oracle@oggtarget ~]$ . .bash_profile
安装OGG,操作很简单
SourceDB
[oracle@oggsource ~]$ cd $OGG_HOME
[oracle@oggsource gg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (oggsource) 1> create subdirs
Creating subdirectories under current directory /u01/app/oracle/gg
Parameter files /u01/app/oracle/gg/dirprm: already exists
Report files /u01/app/oracle/gg/dirrpt: created
Checkpoint files /u01/app/oracle/gg/dirchk: created
Process status files /u01/app/oracle/gg/dirpcs: created
SQL script files /u01/app/oracle/gg/dirsql: created
Database definitions files /u01/app/oracle/gg/dirdef: created
Extract data files /u01/app/oracle/gg/dirdat: created
Temporary files /u01/app/oracle/gg/dirtmp: created
Stdout files /u01/app/oracle/gg/dirout: created
安装OGG,操作很简单
TargetDB
[oracle@oggtarget gg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (oggtarget) 1> create subdirs
Creating subdirectories under current directory /u01/app/oracle/gg
Parameter files /u01/app/oracle/gg/dirprm: already exists
Report files /u01/app/oracle/gg/dirrpt: created
Checkpoint files /u01/app/oracle/gg/dirchk: created
Process status files /u01/app/oracle/gg/dirpcs: created
SQL script files /u01/app/oracle/gg/dirsql: created
Database definitions files /u01/app/oracle/gg/dirdef: created
Extract data files /u01/app/oracle/gg/dirdat: created
Temporary files /u01/app/oracle/gg/dirtmp: created
Stdout files /u01/app/oracle/gg/dirout: created
到此OGG的安装结束。除了加压tar包,创建一些目录就没什么操作了。
在配置OGG前,先要确保数据库处与归档模式下
SourceDB
SYS@oggsource >archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
将数据库force logging和supplemental_log_data全部开启,确保DML操作产生日志,并且在传输日志变化的时候有足够的信息来标示当前数据,不仅仅依靠rowid。
SYS@oggsource >alter database force logging;
SYS@oggsource >alter database add supplemental log data;
SYS@oggsource >col open_mode for a10
SYS@oggsource >select name,open_mode,force_logging,supplemental_log_data_min from v$database;
NAME OPEN_MODE FORCE_LOG SUPPLEMENTAL_LOG_DATA_MI
--------------------------- ---------- --------- ------------------------
OGGSOURC READ WRITE YES YES
SYS@oggsource >alter system switch logfile;
创建一个测试用户snow,用来产生数据库动作
SYS@oggsource >create user snow identified by snow default tablespace users;
为了操作不受到权限限制,此处给予DBA权限。生产环境中不建议这样做。
SYS@oggsource >grant dba to snow;
用测试用户snow创建测试表T1
SYS@oggsource >conn snow/snow
SNOW@oggsource >create table t1 (id int primary key, name varchar2(20));
SNOW@oggsource >conn / as sysdba
创建一个表空间oggts
SYS@oggsource >create tablespace oggts datafile '/u01/app/oracle/oradata/oggsource/oggts01.dbf' size 100m autoextend on;
SYS@oggsource >select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oggsource/system01.dbf
/u01/app/oracle/oradata/oggsource/sysaux01.dbf
/u01/app/oracle/oradata/oggsource/undotbs01.dbf
/u01/app/oracle/oradata/oggsource/users01.dbf
/u01/app/oracle/oradata/oggsource/oggts01.dbf
创建用户oggadmin用来管理ogg相关的工作,默认表空间为刚刚创建的oggts,避免占用system表空间。
SYS@oggsource >create user oggadmin identified by oggadmin default tablespace oggts;
SYS@oggsource >grant dba to oggadmin;
执行OGG安装包中的sql语句,来产生角色。该sql文件在$OGG_HOME下
SYS@oggsource >@role_setup
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:oggadmin <==输入刚刚创建的用户oggadmin
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
where is the user assigned to the GoldenGate processes.
SYS@oggsource >GRANT GGS_GGSUSER_ROLE TO oggadmin; <==按照提示授权给oggadmin用户GGS_GGSUSER_ROLE权限
Grant succeeded.
在Target端执行同样的操作
TargetDB
SYS@oggtarget >archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
SYS@oggtarget >create user snow identified by snow default tablespace users;
SYS@oggtarget >grant dba to snow;
SYS@oggtarget >conn snow/snow
SNOW@oggtarget >create table t1 (id int primary key, name varchar2(20));
SNOW@oggtarget >conn / as sysdba
SYS@oggtarget >alter database force logging;
SYS@oggtarget >alter database add supplemental log data;
SYS@oggtarget >col open_mode for a10
SYS@oggtarget >select name,open_mode,force_logging,supplemental_log_data_min from v$database;
NAME OPEN_MODE FORCE_LOG SUPPLEMENTAL_LOG_DATA_MI
--------------------------- ---------- --------- ------------------------
OGGTARGE READ WRITE YES YES
SYS@oggtarget >alter system switch logfile;
SYS@oggtarget >create tablespace oggts datafile '/u01/app/oracle/oradata/oggtarget/oggts01.dbf' size 100m autoextend on;
SYS@oggtarget >create user oggadmin identified by oggadmin default tablespace oggts;
SYS@oggtarget >grant dba to oggadmin;
SYS@oggtarget >@role_setup
Enter GoldenGate schema name:oggadmin <==输入oggadmin
SYS@oggtarget >GRANT GGS_GGSUSER_ROLE TO oggadmin;
配置OGG各项参数
SourceDB
[oracle@oggsource ~]$ cd $OGG_HOME
[oracle@oggsource gg]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (oggsource) 1> edit params ./GLOBALS
GGSCHEMA oggadmin
GGSCI (oggsource) 2> edit params mgr
PORT 7809 <==OGG管理进程的通信端口,注意source与target要保持一致
GGSCI (oggsource) 3> edit params ex1
EXTRACT ex1
USERID oggadmin, PASSWORD oggadmin <==抽取进程通过用户oggadmin访问数据库
EXTTRAIL /u01/app/oracle/gg/dirdat/ex <==产生trail文件后保存的路径
TABLE snow.*; <==抽取对象为用户snow下所有表
GGSCI (oggsource) 4> edit params dp1
EXTRACT dp1
USERID oggadmin, PASSWORD oggadmin
RMTHOST 192.168.1.21, MGRPORT 7809 <==推送目的地为target数据库。ip地址为192.168.1.21,端口7809
RMTTRAIL /u01/app/oracle/gg/dirdat/rt <==接收端trail文件目录
TABLE snow.*;
TargetDB
[oracle@oggtarget gg]$ ggsci
GGSCI (oggtarget) 1> edit params ./GLOBALS
GGSCHEMA oggadmin
GGSCI (oggtarget) 2> edit params mgr
PORT 7809
GGSCI (oggtarget) 3> edit params rt1 <==target端独有的配置
REPLICAT rt1
USERID oggadmin, PASSWORD oggadmin
ASSUMETARGETDEFS
DISCARDFILE /u01/app/oracle/discards.dsc, PURGE
MAP snow.*, TARGET snow.*; <==匹配source端与target端的名称
GGSCI (oggtarget) 5> dblogin userid oggadmin,password oggadmin
Successfully logged into database.
GGSCI (oggtarget) 6> ADD CHECKPOINTTABLE oggadmin.checkpointtable <==target端独有的配置,记录着已经提交的事务
Successfully created checkpoint table oggadmin.checkpointtable.
SYS@oggtarget >conn oggadmin/oggadmin
OGGADMIN@oggtarget >col object_name for a20
OGGADMIN@oggtarget >col object_type for a20
OGGADMIN@oggtarget >select object_name,object_type from user_objects;
OBJECT_NAME OBJECT_TYPE
-------------------- --------------------
SYS_C0011004 INDEX
CHECKPOINTTABLE_LOX TABLE
SYS_C0010998 INDEX
CHECKPOINTTABLE TABLE
在全局变量中加入检查点信息
GGSCI (oggtarget) 8> edit params ./GLOBALS
GGSCHEMA oggadmin
CHECKPOINTTABLE oggadmin.checkpointtable
将用户snow下的表T1加入到队列中
SourceDB
GGSCI (oggsource) 6> dblogin userid oggadmin,password oggadmin
Successfully logged into database.
GGSCI (oggsource) 7> ADD TRANDATA snow.t1
Logging of supplemental redo data enabled for table SNOW.T1.
设置抽取进程
GGSCI (oggsource) 9> ADD EXTRACT ex1,TRANLOG,BEGIN NOW
EXTRACT added.
GGSCI (oggsource) 10> ADD EXTTRAIL /u01/app/oracle/gg/dirdat/ex, EXTRACT ex1
EXTTRAIL added.
设置推送进程
GGSCI (oggsource) 11> ADD EXTRACT dp1 EXTTRAILSOURCE /u01/app/oracle/gg/dirdat/ex
EXTRACT added.
GGSCI (oggsource) 12> ADD RMTTRAIL /u01/app/oracle/gg/dirdat/rt, EXTRACT dp1
RMTTRAIL added.
启动管理进程
GGSCI (oggsource) 15> start mgr
启动抽取进程和推送进程
GGSCI (oggsource) 18> start *
GGSCI (oggsource) 19> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DP1 00:00:00 00:05:06
EXTRACT RUNNING EX1 00:08:11 00:00:02
trail文件已经产生
GGSCI (oggsource) 21> sh ls -ltr /u01/app/oracle/gg/dirdat
-rw-rw-rw- 1 oracle oinstall 1048 Aug 5 11:02 ex000000
TargetDB
GGSCI (oggtarget) 9> ADD REPLICAT rt1, EXTTRAIL /u01/app/oracle/gg/dirdat/rt, checkpointtable oggadmin.checkpointtable
GGSCI (oggtarget) 11> start mgr
GGSCI (oggtarget) 12> start *
GGSCI (oggtarget) 13> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING RT1 00:00:00 00:00:03
target端的管理进程、抽取集成、推送进程已经全部启动。
source端的管理集成、复制进程全部启动。
现在开始进行测试,在source端插入数据,查看target端是否可以同步。
SYS@oggsource >conn snow/snow
SNOW@oggsource >insert into t1 values(0,'snow');
SNOW@oggsource >commit;
SNOW@oggsource >insert into t1 values(1,'snow');
SNOW@oggsource >commit;
SNOW@oggsource >insert into t1 values(3,'snow');
SNOW@oggsource >commit;
SYS@oggtarget >conn snow/snow
Connected.
SNOW@oggtarget >select * from t1;
ID NAME
---------- ------------------------------------------------------------
0 snow
1 snow
3 snow
本次初体验顺利结束
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29047826/viewspace-1245563/
,如需转载,请注明出处,否则将追究法律责任。