数据实时同步系统搭建手册-ORACLE

1 DMHS 环境需求

管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;
3) 支持的数据库
当源端为 ORACLE 类型数据库时,目的端支持一下类型数据库:DM6、DM7、DM7 MPP、
Oracle9i、Oracle10g、Oracle11g、Oracle RAC、DB2、MySQL、PostgreSQL、SQL SERVER。

1.2ORACLE 数据类型的支持

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
限制支持:

  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/dmhs@ORCL

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 进行数据同步

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值