oracle ogg搭建

--oogg搭建
-----(源,目标)
-----1 创建ogg用户 ,在操作系统中,创建ogg用户。
useradd -g dba -G oinstall -d /home/ogg ogg
-----2 设置环境变量
cp /home/oracle/.bashrc /home/ogg/
chown ogg:dba /home/ogg/.bashrc
vim /home/ogg/.bashrc
--------------------
export PATH=$ORACLE_BASE/ogg:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export OGG_HOME=$ORACLE_BASE/ogg

--------------------
-----3 创建OGG安装目录
---------------------------
mkdir  -p /u01/app/oracle/ogg  
chown -R ogg:oinstall /u01/app/oracle/ogg    --OGG_HOME

---4 安装
mkdir -p /home/ogg/insogg/
unzip /home/oracle/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip -d /home/ogg/insogg/
cd  /home/ogg/insogg/
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/app/oracle/ogg

---5 登录OGG测试(源)
cd /u01/app/oracle/ogg
ggsci

GGSCI (localhost.localdomain) 1> create subdirs

Creating subdirectories under current directory /u01/app/oracle/ogg

Parameter files                /u01/app/oracle/ogg/dirprm: already exists
Report files                   /u01/app/oracle/ogg/dirrpt: created
Checkpoint files               /u01/app/oracle/ogg/dirchk: created
Process status files           /u01/app/oracle/ogg/dirpcs: created
SQL script files               /u01/app/oracle/ogg/dirsql: created
Database definitions files     /u01/app/oracle/ogg/dirdef: created
Extract data files             /u01/app/oracle/ogg/dirdat: created
Temporary files                /u01/app/oracle/ogg/dirtmp: created
Stdout files                   /u01/app/oracle/ogg/dirout: created


文件路径 说明
/u01/app/oracle/ogg/dirprm 存放OGG参数各的配置信息
/u01/app/oracle/ogg/dirrpt 存放进程报告文件
/u01/app/oracle/ogg/dirchk 存放检查点文件
/u01/app/oracle/ogg/dirpcs 存放进程状态文件
/u01/app/oracle/ogg/dirsql 存放SQL脚本文件
/u01/app/oracle/ogg/dirdef 存放DEFGEN工具生成的数据定义
------6 oracle 配置 
-----------创建表空间ogg 
create tablespace ogg datafile '/u01/app/oracle/data/orcl/ogg01.dbf' size 50M autoextend on;
----------创建用户
create user ogg identified by ogg default tablespace ogg;
-----------为OGG用户授权
--OGG用户需要以下权限,也有人为了省事,直接给OGG用户DBA权限。

SQL> grant CONNECT, RESOURCE to ogg;
SQL> grant SELECT ANY DICTIONARY,SELECT ANY TABLE to ogg;
SQL> grant ALTER ANY TABLE to ogg;
SQL> grant FLASHBACK ANY TABLE to ogg;
SQL> grant EXECUTE on DBMS_FLASHBACK to ogg;
SQL> grant insert any table to ogg;
SQL> grant update any table to ogg;
SQL> grant delete any table to ogg; 

----------- 打开源数据库的附加日志和force log
SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SQL> alter database force logging;

SQL> alter database add SUPPLEMENTAL log data;

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

---运行OGG支持DDL脚本
--如果要让OGG支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是ORACLE带的,在OGG的安装目录都可以找到,如果在OGG的安装目录登录数据库,可以直接@加脚本的名字,源端与目标端都需要运行
chown -R ogg:oinstall /u01/app/oracle/ogg
sqlplus / as sysdba
GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
--权限配置以后.要重新执行
SQL>@marker_setup.sql
SQL>@ddl_setup
SQL>@role_setup
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL>@ddl_enable
--OGG原理及数据制造
----创建测试数据
----源数据库(源)
conn scott/tiger
@demo_ora_create.sql
@demo_ora_insert.sql
----目标数据(目标)
@demo_ora_create.sql


---------------OGG配置
/*
MGR管理进程(源,目标)
检查点 (源,目标)
捕获进程(源)
投递进程(源)
REPLICAT进程(目标)
*/

----源端添加表级TRANDATA(源)
--添加表级的trandata可以理解为需要将哪些用户的哪些表和目标库同步,其实也是添加表级的supplemental log,但是只有上文打开的minimal supplemental log后,这个才生效。
GGSCI (oggsource) 2>  dblogin userid  ogg,password ogg
---增加检查点
GGSCI (oggsource) 2> add checkpointtable ogg.checkpoint
GGSCI (dbdream) 3> add  trandata   scott.tcustmer  (---goldengate对符号比较敏感,在add trandata时不要用分号),成功添加表级TRANDATA后,可以通过INFO命令查看哪些表被添加了TRANDATA.
GGSCI (dbdream) 3>INFO TRANDATA scott.*  

---目标和源端配置MGR管理进程 (源,目标)
GGSCI (stream) 2> EDIT PARAMS MGR 加入以下两行内容
PORT 7809
PURGEOLDEXTRACTS /ogg/dirdat,USECHECKPOINTS
参数说明:
PORT 7809:OGG管理进程监控端口。
PURGEOLDEXTRACTS:清除不需要的trail文件。
/ogg/dirdat:trail文件存放位置。
USECHECKPOINTS:使用检查点队列。
GGSCI (localhost.localdomain) 11> start mgr
GGSCI (oggtarget) 4> info  mgr
文件存放路径$OGG_HOME/dirprm
---配置初始化数据进程(此步骤非必须,可以由其他方式完成)
-------下面在源端配置捕获进程EINI_1。(源)  
GGSCI (orcl) 11> ADD EXTRACT EINI_1, SOURCEISTABLE--------------源端加同步进程  删除进程 delete EXTRACT EIXI_1--对应的进程名称
GGSCI (orcl) 12> INFO EXTRACT *, TASKS     
GGSCI (orcl) 13> EDIT PARAMS EINI_1  
----------------------------
EXTRACT EINI_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
setenv (ORACLE_SID=orcl)
userid  ogg, password ogg
RMTHOST 192.168.137.131, MGRPORT 7809
exttrail /u01/app/oracle/ogg/dirdat/ea
--RMTTASK REPLICAT, GROUP RINI_1
TABLE SCOTT.TCUSTMER;
------------------
--源端配置捕获进程
GGSCI (orcl) 13> EDIT PARAMS EINI_1  
----------------------------
EXTRACT EINI_1
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
setenv (ORACLE_SID=orcl)
userid  ogg, password ogg
RMTHOST 192.168.137.131, MGRPORT 7809  --端口号要和mgr一致
--RMTTASK REPLICAT, GROUP RINI_1-----目标端名字一定要对应
TABLE SCOTT.TCUSTMER;
--TABLE SCOTT.DEPT_OGG;

/*
EXTRACT EINI_1:说明这是EXTRACT进程,名字是EINI_1 SETENV:
环境变量,一定要设置和数据库字符集一样,否则可能会乱码
USERID:数据库OGG用户 PASSWORD:数据库用户OGG的密码
RMTHOST:目标端地址,如果在/etc/hosts文件里已经设置解析,可以写主机名 MGRPORT:
目标端MGR管理进程监听的端口RMTTASK REPLICAT:
目标端REPLICAT应用进程的组和名字
TABLE:源端要初始化数据的表的名字
*/

add extract EINI_1,tranlog,begin now   --添加抽取进程
add exttrail /u01/app/oracle/ogg/dirdat/ea,extract EINI_1,megabytes 5   --意思是将EINI_1捕获的extract跟踪文件添加到./dirdat 目录,文件最大5M。
start extract EINI_1
--配置投递(传输跟踪文件)的pump进程(源)
edit params pump1
---
EXTRACT pump1
RMTHOST 192.168.137.131, MGRPORT 7809
RMTTRAIL ./dirdat/et
PASSTHRU
DYNAMICRESOLUTION
TABLE scott.TCUSTMER;
-----
--如果添加错,下面命令删除
--GGSCI (oracle1) 5> DELETE extract pump1、

add extract pump1,exttrailsource /u01/app/oracle/ogg/dirdat/ea , begin now
add rmttrail ./dirdat/et ,extract pump1
info extract  pump1
start extract pump1

--datapump 进程参数
/*
EXTRACT <进程名>
RMTHOST IP地址, MGRPORT 7809, COMPRESS  
—目标端的ip地址,7809为目标端的管理端口,要求配置compress压缩参数,节省网络带宽,但会增加CPU开销
PASSTHRU  
—传输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用
NUMFILES 5000  —最多处理多少个表
RMTTRAIL ./dirdata/ya   —投递哪个队列,必须和抽取保持一致
DYNAMICRESOLUTION     —动态解析表名
TABLE schema.;    —需要投递的对象列表
Sequence schema.;    —需要投递的sequence对象
*/


---源端和目标端配置OGG的检查点(源,目标)
EDIT PARAMS   GLOBALS
-----
CHECKPOINTTABLE ogg.checkpoint
--------------
--这就告诉OGG检查点存放到OGG用户下的GGSCHKPT表中,但是还需要使用OGG用户登录数据库,创建检查点表,此时需要退出OGG,重新登录,否则可能会遇到下面的错误
GGSCI (oggsource) 1> dblogin userid ogg,password ogg
GGSCI (oggsource as ogg@dbdream) 2> ADD CHECKPOINTTABLE

----配置目标端REPLICAT进程 (特别留意名字为源端配置的名) (目标端)
add replicat RINI_1,specialrun------目标端添加同步进程
GGSCI (oracle2) 5> EDIT PARAMS RINI_1
-----------
REPLICAT RINI_1
SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
ASSUMETARGETDEFS
USERID ogg, PASSWORD ogg
DISCARDFILE  /u01/app/oracle/ogg/dirrpt/RINI_1.dsc, PURGE
MAP scott.*, TARGET scott.*;
---------------------
add replicat RINI_1,exttrail ./dirdat/et 
 info replicat RINI_1
 start replicat RINI_1
/*
REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1
SETENV:语言变量,同捕获进程EINI_1
ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,
USERID、PASSWORD:同捕获进程EINI_1参数介绍
DISCARDFILE:错误信息存放位置及命名规则
MAP:源端捕获的表的名字
TARGET:目标端同步的表的名字,可以不在同一SCHEMA
*/
--如果错误需要删除 可以命令 delete replicat RINI_1

--------启动
--配置好目标端的应用进程RINI_1后,就可以启动源端的捕获进程进行捕获数据了,而目标端的应用进程RINI_1不需要手动去启动,也就是说目标端RINI_1进程不需要管。
--ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;(没找到对应得参数先略过,以后要改再说)

--1.启动源端的管理进程(源,目标)
start mgr
--2.启动目标端的复制进程(目标)
 start replicat RINI_1
    --查看源端捕获进程状态:
     VIEW replicat RINI_1
--3.启动源端的捕获进程:(源) 
START EXTRACT EINI_1
    --查看源端捕获进程状态:
     VIEW REPORT EINI_1
--4.启动源端的投递进程(源)
start extract pump1
    --查看源端投递进程状态
     info extract  pump1

info all  --可以查看所有进程
--源端进程
---------------------------
GGSCI (localhost.localdomain) 14> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EINI_1      00:00:00      00:00:08    
EXTRACT     RUNNING     PUMP1       00:00:00      00:00:01    
--目标端进程
GGSCI (oracle2) 27> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     RINI_1      00:00:00      00:00:03    
-------------------------------------------

总结:这个ogg实际难度还好,但是要细致,想一想好几年前我就没有配置正确,缺的课以后都是要补的,接下来先把新版的oracle安装学习一下,后面再学rac


---验证数据
insert into scott.tcustmer select 'Ac','baikaishui','China','cc'  from dual;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值