Oracle12C ogg配置
配置 OGG 安装目录的共享:
这里的共享就是把 OGG 安装到一个共享的设备上,把该目录同时挂到不同节点的相同位置上,这样当
一个节点挂了之后,可以在另一个节点启动和维护OGG。
所以我们上面在配置的时候,才会同时在2个节点操作,并且参数名称也一致。 如果不考虑这种冗余
的方案,可以直接在其中一个节点上操作,不用搞的这么麻烦。
我们这里就在一个节点操作,不搞那么复杂了,这里仅说明一下。
上面的配置完成之后,就和我们单实例操作类似了。 不过在参数配置这块会有细微区别。
--此处安装的是Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO 可以去oracle官网下载
--目标和原库都要配置
SQL> alter system set enable_goldengate_replication=true;
Source系统设置
解压缩ogg安装包
# su - oracle
解压缩ogg安装包
unzip fbo_ggs_Linux_x64_shiphome.zip
cd fbo_ggs_Linux_x64_shiphome/Disk1/
./runInstaller
在bash_profile中添加OGG_HOME
export OGG_HOME=$ORACLE_BASE/ogg
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME:/lib:/usr/lib
alias ggsci='rlwrap /u01/app/oracle/ogg/ggsci'
开启数据库级别日志补充
SYS@devdb1 >ALTER DATABASE FORCE LOGGING;
SYS@devdb1 >ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SYS@devdb1 >ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
SYS@devdb1 >col open_mode for a10
SYS@devdb1 >SELECT name,open_mode,force_logging,supplemental_log_data_min FROM v$database;
创建测试用户
SYS@devdb1 >conn new_jk/XH1Q2W3E4R@PDBJK
SNOW@devdb1 >CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR2(10));
12csource库需要在root容器中创建OGG管理用户(12c使用intergated extract 需要在cdb创建管理用户)
conn / as sysdba
SQL> conn / as sysdba
Connected.
SQL> create user C##GGADMIN identified by ggadmin;
User created.
SQL> exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL');
PL/SQL procedure successfully completed.
SQL> grant dba to c##ggadmin container=all;
Grant succeeded.
SQL> connect c##ggadmin/ggadmin
Connected.
设置全局参数
ogg global
GGSCI> EDIT PARAMS ./GLOBALS
GGSCHEMA c##ggadmin
Target系统设置
解压缩ogg安装包
unzip fbo_ggs_Linux_x64_shiphome.zip
cd fbo_ggs_Linux_x64_shiphome/Disk1/
./runInstaller
在bash_profile中添加OGG_HOME
vi /home/oracle/.bash_profile
export OGG_HOME=$ORACLE_BASE/ogg
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME:/lib:/usr/lib
alias ggsci='rlwrap /u01/app/oracle/ogg/ggsci'
创建测试用户
alter session set container=pdb1;
conn jktmp/jktmp1@jktmp
create table t1 (id int primary key, name varchar2(20));
12c target库需要在pdb 中创建OGG管理用户及其表空间
conn / as sysdba
alter session set container=pdb1;
CREATE TABLESPACE goldengate DATAFILE '/data/oradata/jktmp/goldengate01.dbf' SIZE 100m AUTOEXTEND ON;
CREATE USER oggadmin IDENTIFIED BY oggadmin DEFAULT TABLESPACE goldengate;
GRANT dba TO oggadmin;
设置全局参数
GGSCI> EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin
Source系统设置
配置管理进程
GGSCI> EDIT PARAM MGR
PORT 7809
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10
开启表级别日志补充需要加上PDB,追加对象为用户pdbjk.new_jk下所有表
DBLOGIN USERID c##ggadmin,PASSWORD ggadmin
ADD SCHEMATRANDATA pdbjk.new_jk
ADD TRANDATA pdbjk.new_jk.*
创建初级集成提取组ex1,源端是双节点RAC
ADD EXTRACT ex1,integrated TRANLOG,BEGIN NOW
为初级提取组ex1指定本地trail文件(extract文件量比较大的话,需要足够的磁盘)
ADD EXTTRAIL /u01/app/oracle/ogg/dirdat/ex, EXTRACT ex1 MEGABYTES 5
注册extract ex1
REGISTER EXTRACT ex1 DATABASE CONTAINER (pdbjk)
--配置初级提取组参数文件 enable ddl replicate (ddl include all)
GGSCI> EDIT PARAMS ex1
EXTRACT ex1
SETENV(ORACLE_SID='sidjk1')
USERID c##ggadmin,PASSWORD ggadmin
EXTTRAIL /u01/app/oracle/ogg/dirdat/ex
--ddl include all
--ddloptions report
TABLEpdbjk.new_jk.*;
创建投递组dp1,设置本地trail文件
ADD EXTRACT dp1 EXTTRAILSOURCE /u01/app/oracle/ogg/dirdat/ex
为投递进组dp1设置target端trail文件地址
ADD RMTTRAIL /u01/app/oracle/ogg/dirdat/jk/rt, EXTRACT dp1
配置投递组dp1参数文件
GGSCI> EDIT PARAMS dp1
EXTRACT dp1
SETENV(ORACLE_SID='sidjk1')
USERID c##ggadmin,PASSWORD ggadmin
RMTHOST 10.180.100.9, MGRPORT 7809
RMTTRAIL /u01/app/oracle/ogg/dirdat/jk/rt
TABLE pdbjk.new_jk.*;
Target系统
配置管理进程
GGSCI> EDIT PARAM MGR
PORT 7809
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, WAITMINUTES 2, RETRIES 5
创建检查点表
DBLOGIN USERID oggadmin@jktmp,PASSWORD oggadmin
ADD CHECKPOINTTABLE oggadmin.checkpointtable
在全局环境中添加检查点表
EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin
CHECKPOINTTABLE oggadmin.checkpointtable
创建复制组rt1,设置读取trail文件路径以及检查点表加上PDB
ADD REPLICAT rt1, EXTTRAIL /u01/app/oracle/ogg/dirdat/jk/rt, checkpointtable pdb1.oggadmin.checkpointtable
为复制组rt1配置参数文件初始化的时候加上HANDLECOLLISIONS,初始化之后去掉
GGSCL> EDIT PARAM rt1
REPLICAT rt1
SETENV (ORACLE_SID='xhtmp')
USERID oggadmin@jktmp, PASSWORD oggadmin
HANDLECOLLISIONS
ASSUMETARGETDEFS
ddloptions report
DISCARDFILE /u01/app/oracle/ogg/discards.dsc, append, megabytes 1024
TABLEEXCLUDE pdbjk.new_jk.SYS_EXPORT_SCHEMA*
MAP pdbjk.new_jk.*, TARGET jktmp.*;
测试环节
启动source管理进程
GGSCI (node1.localdomain) 1> START MGR
启动target管理进程
GGSCI (oggtarget) 1> START MGR
启动source提取进程
GGSCI (node1.localdomain) 2> START EX1
启动source投递进程
GGSCI (node1.localdomain) 3> START DP1
--初始化数据导出的时候指定flashback_scn
SELECT current_scn FROM v$database
expdp new_jk/XH1Q2W3E4R@pdbjk directory=dump_dir dumpfile=new_jk20160526.dump logfile=new_jk20160526.log encryption_password=12qw3edc flashback_scn=7851588331 compression=all
impdp jktmp/jktmp@jktmp DIRECTORY=dump_dir include=table dumpfile=new_jk20160526.dump logfile=new_jk20160526.log remap_schema=new_jk:jktmp remap_tablespace=new_jk:jktmp,idx_newjk:jktmp,sit_jk:jktmp,JK_MIGR:jktmp encryption_password=12qw3edc TABLE_EXISTS_ACTION=truncate
启动target复制进程
GGSCI (oggtarget) 2> start replicat rt1,aftercsn 7863029544
确认source进程状态
GGSCI (node1.localdomain) 4> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DP1 00:00:00 00:00:08
EXTRACT RUNNING EX1 00:00:00 00:00:03
确认target进程状态
GGSCI (oggtarget) 3> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING RT1 00:00:00 00:00:02
源端节点node1插入数据
SNOW@devdb1 >insert into t1 values(1,'SNOW');
SNOW@devdb1 >commit;
源端节点node2插入数据
SNOW@devdb2 >insert into t1 values(2,'LILY');
SNOW@devdb2 >commit;
复制端验证
SNOW@oggtarget >select * from t1;
ID NAME
---------- ------------------------------
1 SNOW
2 LILY
实验结束。
Oracle GoldenGate是一个轻量级软件,在Oracle数据库上安装配置是一种松耦合的状态,这点非常理想。无论是在单实例环境还是多实例的RAC环境只需要做少量的配置就可以生效,软件的启动和关闭也不需要数据库做任何设置。从安装的角度来说,比DataGuard要轻便的多。DataGuard是一种“侵入式”配置。需要修改Oracle本身的配置文件。
---转载于http://blog.csdn.net/cloudsnowe/article/details/51613364---