第二章:安装ogg&单向复制测试(典型的配置)


 1.安装环境说明
 
 os: redhat linux 5. 5 64bit
 db:Oracle 11. 2. 0. 3 64bit
 采用goldengate典型的配置:
 在 source端,配置一个管理进程,添加一个 Extract进程,添加一个本地队列路径,定义一个远端接受路径.
 在target端,配置一个管理进程和添加一个Replicat进程,指定一个应用队列,即抽取进程定义的远端队列。
 注意:这种配置没有 Data Pump进程,数据直接从源端又Ext进程刷新到target端的trail中,因此存在一定的风险。
(经典的生产一半不能用)进程容易中断
 
2.配置ORACLE_HOME 和 ORACLE_SID

如果系统上只有一个单实例,那么可以在操作系统级别设置ORACLE_HOME和ORACLE_SID变量。
如果有多个instance,那么可以再Extrace和Replicat group 中设置setenv变量,这种session级别的设置会覆盖操作系统的设置。
如果有多个实例,那么可以分别配置同步的Extrace groups,那么参数文件可以按照如下进行配置:

group 1:
extract ora9a
setenv (ORACLE_HOME="/u01/app/product")
setenv("ORACLE_SID="oraa")
useridalias tiger1
rmhost sysb
rmttrail /u01/ggs/dirdat/rt
table hr.emp;
table hr.salary;

group 2:
extract orab
setenv (ORACLE_HOME="/u01/app/product")
setenv("ORACLE_SID="orab") 
useridalias tiger1
rmhost sysb
rmttrail /u01/ggs/dirdat/st
table fin.sales;
table fin.cust;

3.设置library路径
 
ogg使用共享的library.所以在linux上运行ogg之前,必须先配置好library路径。
假设ogg的安装目录是/u01/ggs,那么在/home/oracle/.bash_profile文件里添加如下内容:
export PATH=/u01/ggs:$PATH
export LD_LIBRARY_PATH=/u01/ggs:$LD_LIBRARY_PATH

4.安装ogg
 
 在ogg11中,直接解压缩安装文件就行了,到了ogg12c的版本,ogg使用oui来进行安装。
 
[oracle@ogg2 Disk1]$ pwd
 /u01/software/fbo_ggs_Linux_x64_shiphome/Disk1
[oracle@ogg2 Disk1]$ ls
install  response  runInstaller  stage
[oracle@ogg2 Disk1]$

 运行RunInstaller:
如果数据库版本是12c,就选择12c;如果数据库是11g,就选择11g的。

software location 选择ogg的解压安装目录
进入ogg安装目录,运行如下命令:
ldd ggsci


[oracle@ogg1 ggs]$ ldd -version


[oracle@ogg1 ggs]$ldd ggsci     --查看需要的安装包


     librt.so.1 => /lib64/librt.so.1 (0x0000003dafe00000)
     libdl.so.2 => /lib64/libdl.so.2 (0x0000003daf200000)
     libgglog.so => /u01/zw/libgglog.so (0x00002b9d080f3000)
     libggrepo.so => /u01/zw/libggrepo.so (0x00002b9d0849c000)
     libdb-5.2.so => /u01/zw/libdb-5.2.so (0x00002b9d08707000)
     libggperf.so => /u01/zw/libggperf.so (0x00002b9d089a2000)
     libicui18n.so.48 => /u01/zw/libicui18n.so.48 (0x00002b9d08bd1000)
     libicuuc.so.48 => /u01/zw/libicuuc.so.48 (0x00002b9d08edf000)
     libicudata.so.48 => /u01/zw/libicudata.so.48 (0x00002b9d0915d000)
     libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003daf600000)
     libxerces-c.so.28 => /u01/zw/libxerces-c.so.28 (0x00002b9d0a823000)
     libantlr3c.so => /u01/zw/libantlr3c.so (0x00002b9d0ad3a000)
     libnnz11.so =>       not   found
     libclntsh.so.11.1 =>not   found 
     libggnnzitp.so =>    not   found
     libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003dc1000000)
     libm.so.6 => /lib64/libm.so.6 (0x0000003daee00000)
     libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003dbd400000)
     libc.so.6 => /lib64/libc.so.6 (0x0000003daea00000)
     /lib64/ld-linux-x86-64.so.2 (0x0000003dae600000)
     libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003db2e00000)
     libaio.so.1 => /usr/lib64/libaio.so.1 (0x00002b9d0e305000)


少包了,解决办法。
[oracle@ogg02 ggs]$ find /u01 -name libons.so   或 find / -name libons.so
[oracle@ogg02 ggs]$ ln -s /u01/app/oracle/product/11.2.0.3/db_1/lib/libons.so

假设OGG的安装目录是/u01/ggs,那么在/home/oracle/.bash_profile文件里添加如下内容:
export PATH=/u01/ggs:$PATH
export LD_LIBRARY_PATH=/u01/ggs:$LD_LIBRARY_PATH
--source 使修改生效:
[oracle@ogg1 u01]$ source ~/.bash_profile

[oracle@ogg02 ggs] cd /u01/ggs
[oracle@ogg02 ggs] ggsci
GGSCI (ogg1) 1>info manager

在 Oracle 11g中,安装完后,需要ggsci执行create subdirs创建ogg的目录,到了12c,就不用创建了。

5.开启归档模式、强制日志、附加日志

5.1 开规档

  SQL> alter system set log_archive_dest_1='location=/oradata/arch' scope=both;
    SQL> alter database archivelog;
    SQL> archive log list;


5.2 添加附加日志

    SQL > alter database  add supplemental log data;

5.3 强制日志

    SQL > alter database force logging;

   --确认修改:
   SQL > select LOG_MODE, SUPPLEMENTAL_LOG_DATA_MIN,FORCE_LOGGING from v$database;



6.启用DDL支持

     ogg可以配置支持ddl的同步,对ddl的支持是通过创建一些table来保存这些ddl的信息,并且有一些限制。

      6.1.禁用recycel  bin

     SQL > alter system set recyclebin =off scope =spfile; 

      6.2. 创建存放DDL 信息的user并赋权    


  创建GG的表空间:(source和target端都要创建)
  SQL > create tablespace ggs datafile '/oradata/ggs01.dbf' size 200m autoextend off;
           这里的表空间不能自动扩展。ogg11g可以使用默认的user表空间, 12c需要独立的表空间,否则报错。
  SQL > create user ggs identified by ggs default tablespace ggs temporary tablespace temp;
  SQL > grant connect,resource to ggs;
  SQL > grant execute on utl_file to ggs;

  退出oracle的所有session,然后用sysdba权限执行以下脚本
  注意:要先进入/u01/ggs,再执行脚本

  [oracle@ogg02 ggs] cd /u01 /ggs
  [oracle@ogg02 ggs] sqlplus / as sysdba

     6.3执行脚本

     (1)创建DDL标记表
            SQL > @ /u01 /zt /marker_setup.sql;     (这里会提示要输入ggs用户)   

     (2)将在数据库中创建捕获DDL语句的Trigger等必要组件 (这里会提示要输入ggs用户)
            SQL > @ /u01 /zt /ddl_setup.sql;
            注意:( 1)执行时必须断开GGSCI连接,否则报错
                      ( 2)执行的时候不用选择操作类型了。在 11g中需要选择initialsetup选项。

      (3) 创建GGS_GGSUSER_ROLE角色        ( 这里会提示要输入ggs用户)
            SQL > @ /u01 /zt /role_setup.sql;

      (4) 授予给extract group参数中定义的userid用户
            SQL > grant GGS_GGSUSER_ROLE to ggs;

     (5) 启用ddl捕获触发器:
            SQL > @ /u01 /zt /ddl_enable.sql;

还有两个可选的脚本,用来提高ddl复制性能:
@ ? /rdbms /admin /dbmspool      -- -创建DBMS_SHARED_POOL包
@ /u01 /ggs /ddl_pin.sql
--通过DBMS_SHARED_POOL.keep存储过程将DDLReplication相关对象keep在共享池中,保证这些对象不要reload,提升性能。

注意,在oracle 11. 2. 0. 4 中需要配置;
SQL > alter system set enable_goldengate_replication =true;
System altered.

7.检查点表配置

goldengate 的检查点表示 目标端 的一个可选的配置,默认情况下,goldengate不会设置检查点表机制,而依耐于文件系统的保证,相对于后者,检查点表机制更可靠,且便于日常维护。

建议在首次配置目标库的时候,在全局变量中设置检查点表,并创建,这样做的话,以后所有的replicat进程默认情况下均会使用这个检查点表。
配置检查点表后,goldengate日常维护的操作区别在于,所有replicate进程的添加删除前均需要从ggsci中登录数据。


配置步骤如下:
1. 登录ggsci界面,在./GLOBALS文件里添加checkpoint表名
     checkpointtable owner.table    --指定的检查点记录表
2.连上db,创建checkpoint表
dblogin  sourcedb dbname,userid db_user,password pw
add checkpointtable ggs.checkpoint    --生成一个检查点记录表

这里不做配置,直接在后面测试中配置。

8.OGG单向复制测试

  注意三点: ( 1)目标库的用户名和对象名称可以和源端不同,关键在于配置文件中能够正确匹配。
                     ( 2)配置源端和目标端tnsnames,保持互联互通。
                     ( 3)对于采用oralce asm的实例,还需要配置监听,使得goldengate能够连接到对应的asm实例上,访问redo日志。
   可以通过lsnrctl status 命令查看监听器状态,看看能否找到asm实例的信息,默认情况下asm实例已经注册,信息类似
      service "+ASM" has 1 instance(s)


8.1在source和target database 上创建测试用户

    --source database
    SQL > create user sender identified by oracle default tablespace users temporary tablespace temp;   --创建用户
    User created.
    SQL > grant connect,resource,dba to sender;
    Grant succeeded.

    2. --target database
   SQL > create user receiver identified by oracle default tablespace users temporary tablespace temp;   --创建用户
  User created.
  SQL > grant connect,resource,dba to receiver;
  Grant succeeded.

8.2在source和target上配置manager

   cd /u01 /ogg
   ggsci
   info all
   edit params mgr             --编辑manager参数
    port     7809                   --这里指定了端口,保存退出
   start manager mgr        --启动manager


8.3配置sourcedb的复制队列

        8. 3. 1   连接到数据库,测试连接
         dblogin userid ggs@ogg02,password ggs

        8. 3. 2    增加一个抽取  添加 extract  进程
        GGSCI (ogg1) 10 > add extract ext1, tranlog, begin now

       ext1 :是 extract进程名称
        begin now: 从现在开始捕获事务日志

         GGSCI (ogg1) 11 > add exttrail /u01 /zt /dirdat /lt, extract ext1

         exttrail :trail 文件所在目录,以及命名规则;extract ext1

修改抽取进程ext1参数:
   GGSCI (ogg1) 13 > edit params ext1
   extract ext1
   userid ggs@ogg02, password ggs
   rmthost 192. 168. 56. 23, mgrport 7809
   rmttrail /u01 /zt /dirdat /lt                     本地
   ddl include mapped objname sender. *;   ddl 和 sender用户
   table sender. *;

info all

8.4 配置targetdb 同步队列

     8. 4. 1 1. 在Target 端添加checkpoint表
GGSCI (gg4) 6 > edit params . /GLOBAL           --在. /GLOBAL文件里添加checkpoint表名
GGSCHEMA ggs                                              --DDL同步必须指定,DML同步不需要
CHECKPOINTTABLE ggs.checkpoint                 --指定的检查点记录表

GGSCI (ogg4) 1 > dblogin userid ggs@ogg04,password ggs          --连上db
Successfully logged into database.

GGSCI (ogg4) 2 > add checkpointtable ggs.checkpoint    -- --生成一个检查点记录表checkpoint

    8. 4. 2 创建同步队列 (添加repliact进程)

GGSCI (ogg2) 3 > add replicat rep1,exttrail /u01 /zt /dirdat /lt, checkpointtable ggs.checkpoint
REPLICAT added.

GGSCI (ogg2) 4 > edit params rep1
replicat rep1
ASSUMETARGETDEFS
userid ggs@ogg04,password ggs
discardfile /u01 /zt /dirdat /rep1_discard.txt,append, megabytes 100          --megabytes 100单个trail文件 100M
ddl
map sender. *, target receiver. *;   

sender 用户下的表,映射到target receiver用户下
discardfile : 同步不了的数据,放到 /u01 /ggs /dirdat /rep1_discard.txt

8.5 开启同步

   8. 5. 1 sourcedb :
    info all
      start extract ext1
      into all

 8. 5. 2 targetdb
    info all
    start  replicat rep1
    info all

8.6 测试data复制

我们在sourcedb 上 的sender用户下创建一张表,然后看这张表是否同步到了target db的receiver用户下。

  sourcedb
  conn sender/oracle;
  create table zw  as select * from sys.all_users;

targetdb
conn receiver/oracle;
select count(*) from zw;

数据同步过来了,因为我们启用了ddl的支持。


删除的步骤如下:
1. 登陆GGSCI
2. 用dblogin 登陆数据库。
3. 停止Extract 或者 Replicat 进程
4. 执行删除操作
DELETE EXTRACT group_name
DELETE REPLICAT group_name




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值