天天看点

数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步

1 DMHS 环境需求

管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;

3) 支持的数据库

当源端为 ORACLE 类型数据库时,目的端支持一下类型数据库:DM6、DM7、DM7 MPP、

Oracle9i、Oracle10g、Oracle11g、Oracle RAC、DB2、MySQL、PostgreSQL、SQL SERVER。

1.2ORACLE 数据类型的支持

数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步

限制支持:

  1. 不支持 lob 数据的分片更新。
  2. 不支持加密数据的同步。
  3. 对主键的更新,不支持类似 update t set key=key+n 的操作。
  4. 对于使用 SQL 进行同步的对象,不对对象中使用的对象进行映射。
  5. 不支持外部表。
  6. 不支持 Oracle 预留模式对象的同步。
  7. 不支持 Oracle 回收表的同步。

2 DMHS 系统搭建

2.1DMHS ORACLE 源端安装

2.1.1 设置 ORACLE 本地链接库路径

DMHS 在运行时,需要加载本地 ORACLE 动态库 libclntsh.so $ORACLE_HOME/lib 中

当在系统中未找到 libclntsh.so 文件, 但存在 libclntsh.so.的文件,可使

用命令 ln -s libclntsh.so. libclntsh.so 创建一个软链接。

2.1.2 源端 ORACLE RAC 环境准备

  1. ASM 存储

    DMHS 的部署节点必须配置 ASM 服务监听,可直接修

    改$ORACLE_HOME\network\admin\tnsname.ora 文件,添加 ASM 监听

    ASM =

    (

    DESCRIPTION =

    (ADDRESS =(PROTOCOL=TCP)(HOST=***.***.***.***)(PORT=1521))

    (CONNECT_DATA =(SERVER =DEDICATED)(SERVICE_NAME=+ASM))

    )

  2. 操作系统磁盘存储

    当 RAC 的归档文件存放在操作系统磁盘时,对未部署 DMHS 的 RAC 节点,必须配置

    归档文件到部署 DMHS 的文件映射。

2.1.3 DMHS 安装

DMHS 源端安装完成之后,可将目录切换到 DMHS

软件目录,通过命令 ldd libcpt_ora.so(RAC 可通过命令 ldd libcpt_rac.so),

查看 DMHS 日志执行模块链接是否正常。

2.2 DMHS ORACLE 目的端安装

所以部署 DMHS ORACLE 目的

端的服务器,需要安装 ODBC 驱动及 ORACLE 动态链接库,

ODBC 驱动在安装完 ORACLE 软件之

后,会默认安装,在 UNIX/LINUX 平台中,需认为安装 UNIXODBC。

2.2.1 UNIXODBC 安装

  1. 下载 unixodbc2.3.2 源码 unixODBC-2.3.2.tar.gz。
  2. 解压 unixodbc 源码

    tar -zxvf unixODBC-2.3.2.tar.gz

  3. 进入 unixodbc 源码目录,编译源码

    cd unixodbc-2.3.2

    export CC=gcc

    ./configure --enable-drivers=no --with-iconv-char-enc=GB18030 --enable-gui=no --enable-iconv=yes

    make

    make install

    当服务器系统为 UNIX/LINUX 64bits 时,在./configure 之前需执行

    export CFLAGS="-maix64 -DBUILD_REAL_64_BIT_MODE"

    export OBJECT_MODE=64

  4. 配置 UNIXODBC

    将操作系统当前目录切换到“/usr/local/etc”目录,修改 odbc.ini 和 odbcinst.ini 参数。

    odbc.ini 参数内容如下所示:

    [ORACLE]

    Description = ORACLE ODBC DSN

    Driver = Oracle in OraDb11g_home1

    SERVER = 127.0.0.1

    UID = DMHS

    PWD = DMHS

    Servername = ORCL

    PORT = 1521

    odbcinst.ini 参数内容如下所示:

    [Oracle in OraDb11g_home1]

    Description = ODBC DRIVER FOR ORACLE

    Driver = /u01/app/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1

    Threading = 0

    例如:isql -v ORACLE DMHS DMHS

2.2.2 DMHS 安装

UNIX/LINUX 平台中,DMHS 目的端安装完成之后,可将目录切换到 DMHS

软件目录,通过命令 ldd libdmhs_exec.so,查看 DMHS 日志执行模块链接是

否正常。

3 ORACLE/RAC 数据库环境设置

3.1源端/目的端数据库配置数据库服务网络服务名

/RAC 数据库的网络服务名可通过 ORACLE NCA 工具进行配置,也可直接修改

$ORACLE_HOME\network\admin\tnsname.ora 文件

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

sqlplus dmhs/[email protected]

3.2开启源端数据库的归档及附加日志

开启归档

shutdown immediate

startup mount

alter database archivelog

alter system set db_recovery_file_dest=’’;

alter system set log_archive_dest=‘xxxxx’;

alter database open;

archive log list;

开启最小补充日志

alter database add supplemental log data;

alter database add supplemental log data (all) columns;

select uupplemental_log_data_min,supplemental_log_data_all from v$database;

开启附加日志不需要重启 ORACLE 数据库服务

3.3设置源端/执行端 ORACLE 客户端字符集

当数据库数据包含中文字符时,需将 DMHS 运作所在窗口的 NLS_LANG 设置为对应

的字符集,建议使用 AMERICAN_AMERICA.ZHS16GBK

windows 平台设置客户端字符集:

set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

UNIX/LINUX 平台设置客户端字符集:

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

3.4源端 DDL 支持

DMHS 支持源端 DDL 的同步。源端 DDL 同步必须满足一下三个条件:

  1. 源端数据库必须允许 DDL 触发器的触发动作,即数据库参数_system_trig_enabled

    为 TRUE 或者未设置

    show parameter “_system_trig_enabled”

  2. 需要在源端数据库以 sys 用户,在 sys 模式下创建 DDL 触发器及 DDL 记录表,详

    细参照 dmhs_ddl.sql 脚本

  3. 需要日志捕获模块对 ddl_mask 进行设置。例如<ddl_mask>op:obj<ddl_mask>。

    ddl_mask 可对同步对象进行过滤

3.5DMHS 数据库用户

DMHS 源端数据库用户,必须具有以下数据库操作权限:

SELECT ON SYS.V_KaTeX parse error: Expected group after '_' at position 26: …SELECT ON SYS.V_̲SESSION

SELECT ON SYS.GV_KaTeX parse error: Expected group after '_' at position 28: …ELECT ON SYS.GV_̲INSTANCE

SELECT ON SYS.GV_KaTeX parse error: Expected group after '_' at position 31: …ELECT ON SYS.GV_̲ARCHIVE

SELECT ON SYS.GV_KaTeX parse error: Expected group after '_' at position 22: …ELECT ON SYS.GV_̲LOGFILE

SELECT ON SYS.DBA_TABLES

SELECT ON SYS.V_ I N S T A N C E S E L E C T O N S Y S . O B J INSTANCE SELECT ON SYS.OBJ INSTANCESELECTONSYS.OBJ

SELECT ON SYS.USER$

SELECT ON SYS.COL$

SELECT ON SYS.DBA_CONS_COLUMNS

SELECT ON SYS.DBA_CONSTRAINTS

SELECT ON SYS.LOB$

SELECT ON SYS.TABPART$

SELECT ON SYS.TAB$

SELECT ON SYS.TABSUBPART$

SELECT ON SYS.TABCOMPART$

EXECUTE ON DBMS_FLASHBACK

LOCK ANY TABLE

SELECT ANY TABLE

DMHS 执行端数据库用户必须具有同步对象的操作权限及操作用户下建表的权限

3.6DMHS 目标库约束/触发器限制

  1. 约束

    DMHS 同步过程中,需将将执行端 ORACLE 表中的外键禁用,否则,在对外键引用表

    进行更新时,可能会引起执行端 ORACLE 数据库操作错误。当目的 ORACLE10g 版本高于

    10.2.0.5 或者 ORACLE11G 版本高于 11.2.0.4 时,可将源端 DMHS 配置参数 constraint 设置

    为 1,来避免外键引起的同步错误。

  2. 触发器

    DMHS 同步过程中,需将将执行端 ORACLE 中的存在 DML 操作的触发器禁用,负责,

    在通过过程中,会对触发器操作的表进行二次操作,导致同步结果错误。当目的 ORACLE10g

    版本高于 10.2.0.5 或者 ORACLE11G 版本高于 11.2.0.4 时,可将源端 DMHS 配置参数 trigger

    设置为 1,来避免外键引起的同步错误。

4 配置 ORACLE/RAC 数据同步

4.1配置 ORACLE/RAC 源端

  1. 创建 DMHS 配置文件 dmhs.hs

    将文件路径切换到 DMHS 工作目录下,创建文件dmhs.hs。

  2. dmhs.hs 文件中添加 xml 文件头及 dmhs 根元素
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
</dmhs>
           
  1. dmhs 根元素添加 base 元素:
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
           
  1. dmhs 根元素添加 cpt 元素及 cpt 元素中添加源端数据库信息:
<cpt>
<db_type>oracle11g</db_type>
<db_server>brcl</db_server>
<db_user>sde</db_user>
<db_pwd>sde</db_pwd>
<ddl_mask>op:obj</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
</cpt>
           
  1. cpt 元素添加数据发送设置:
<cpt>
......
<send>
<ip>127.0.0.1</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
</enable>
</filter>
</send>
</cpt>
           
  1. 当源端数据库使用了 ASM 时,还需要在 cpt 元素中添加 ASM 相关信息:
<cpt>
<db_type>oracle11g</db_type>
<db_server>orcl</db_server>
<db_user>dmhs</db_user>
<db_pwd>dmhs</db_pwd>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<rac>
<rac_type>1</rac_type>
<db_server>orcl</db_server>
<db_user>asm</db_user>
<db_pwd>asm123112</db_pwd>
<nodes>3</nodes>
</rac>
<send>
<ip>127.0.0.1</ip>
<mgr_port>6345</mgr_port>
<data_port>6346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
</enable>
</filter>
</send>
</cpt>
           
  1. 当源端数据库为 RAC,且归档文件存放在操作系统磁盘时,需在 cpt 中添加文件映

    射:

<cpt>
<db_type>oracle11g</db_type>
<db_server>orcl</db_server>
<db_user>dmhs</db_user>
<db_pwd>dmhs</db_pwd>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<rac>
<rac_type>1</rac_type>
<db_server>orcl</db_server>
<db_user>asm</db_user>
<db_pwd>asm123112</db_pwd>
<nodes>2</nodes>
<dir_replace>
<item>2#/home/oracle/arch2</item>
<item>1#/home/oracle/arch1</item>
</dir_replace>
</rac>
<send>
<ip>127.0.0.1</ip>
<mgr_port>6345</mgr_port>
<data_port>6346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
</enable>
</filter>
</send>
</cpt>
           

其中 dir_replace 中设置的是 DMHS 可读取的归档目录,除了 DMHS 所在节点的归档目

录为真实目录外,其他的目录为 RAC 其他节点归档目录映射到 DMHS 机器的目录。

一个完整的 DMHS 源端配置文件(dmhs.hs)

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>oracle11g</db_type>
<db_server>orcl</db_server>
<db_user>dmhs</db_user>
<db_pwd>dmhs</db_pwd>
<ddl_mask>op:obj</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>127.0.0.1</ip>
<mgr_port>6345</mgr_port>
<data_port>6346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
</enable>
</filter>
</send>
</cpt>
</dmhs>
           

4.2配置 ORACLE/RAC 执行端

  1. dmhs.hs 文件中添加 xml 文件头及 dmhs 根元素
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
</dmhs>
           
  1. dmhs 根元素添加 base 元素:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>6345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
</dmhs>
           
  1. dmhs 根元素添加 exec 元素,设置接收及执行端数据库信息:
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>oracle11g</db_type>
<db_server>orcl</db_server>
<db_user>sde</db_user>
<db_pwd>sde</db_pwd>
<db_port></db_port>
<db_name></db_name>
</exec>
           

一个完整的 DMHS 执行端配置文件(dmhs.hs),如下所示:

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>6345</mgr_port>
<ckpt_interval>45</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>oracle11g</db_type>
<db_server>orcl</db_server>
<db_user>sde</db_user>
<db_pwd>sde</db_pwd>
<db_port></db_port>
<db_name></db_name>
</exec>
</dmhs>
           

4.3启动 DMHS 进行数据同步

数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步
数据实时同步系统搭建手册-ORACLE1 DMHS 环境需求2 DMHS 系统搭建3 ORACLE/RAC 数据库环境设置4 配置 ORACLE/RAC 数据同步

继续阅读