注册
Oracle rac--dm8单向同步
专栏/Database Thinking/ 文章详情 /

Oracle rac--dm8单向同步

胡li 2021/11/10 3118 4 0
摘要 Oracle-rac作为目的端,DM8作为执行端进行同步

1 DMHS环境需求

1.1 搭建环境

1.1.1源端Oracle环境

1 使用到的硬件环境如下:

硬件类别 硬件名称 配置 数量
Oracle服务器 服务器 CPU:intel xeon cpu E7-4809/ 64核,2颗;内存:128GB;硬盘:289G;网卡:1000M 1

2 本次测试使用到的软件环境如下:

软件类别 软件名称 版本
操作系统 linux Redhat 6.8
数据库 Oracle 11.2.0
同步软件 Dmhs dmhs_V4.1.65

1.1.2目的DM8端环境

1 使用到的硬件环境如下:

硬件类别 硬件名称 配置 数量
DM8服务器 服务器 CPU:intel core™ T7700,2颗;内存:32GB;硬盘:1T;网卡:1000M 1

2 本次测试使用到的软件环境如下:

软件类别 软件名称 版本
操作系统 windows Windows server 2012 R2
数据库 DM8 Dm8-1-2-70-21.09.08-147080-10028 ENT
同步软件 Dmhs dmhs_V4.1.48

1.1.3其他说明

  1. 权限
    在 Windows 安装时,安装和执行 DMHS 的用户必须是管理员身份;在 Linux 平台下安装,必须使用root用户安装,安装用户必须有权限读写 DMHS 安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。
  2. TCP/IP
    配置系统支持 TCP/IP 服务(DMHS 安装的所有机器必须配置主机名或者 IP 地址)。DMHS需要使用以下 TCP/IP 端口:管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;用户可以自行定义这些端口。
  3. 支持的数据库
    当源端为ORACLE类型数据库时,目的端支持一下类型数据库:DM6、DM7、DM7 MPP、Oracle9i、Oracle10g、Oracle11g、Oracle RAC、DB2、MySQL、PostgreSQL、SQL SERVER。

表 支持oracle的数据类型

image.png

image.png

消息格式说明:

  • 二进制包:按照DMHS制定的格式,封装的源端数据库数据修改的数据包
  • SQL:源端数据库执行的SQL 语句
  • 限制支持:
  • 不支持lob数据的分片更新。
  • 不支持加密数据的同步。
  • 对主键的更新,不支持类似update t set key=key+n的操作。
  • 对于使用SQL进行同步的对象,不对对象中使用的对象进行映射。
  • 不支持外部表。
  • 不支持 Oracle 预留模式对象的同步。
  • 不支持 Oracle 回收表的同步。

2 DMHS安装

请参照《DMHS安装配置手册》。
UNIX/LINUX平台中,DMHS 源端安装完成之后,可将目录切换到DMHS软件目录,通过命令ldd libcpt_ora.so(RAC可通过命令ldd libcpt_rac.so),查看DMHS日志执行模块链接是否正常。

3 DMHS ORACLE RAC源端配置

3.1 设置ORACLE本地链接库路径

DMHS在运行时,需要加载本地ORACLE 动态库libclntsh.so。在部署DMHS之前,需将libclnsh.so所在目录添加到共享库路径变量中。libclntsh.so通常位于ORACLE_HOME/lib中。在LINUX/UNIX系统中,设置的方法如下:
image.png

注:当在系统中未找到libclntsh.so文件, 但存在libclntsh.so.19这样的文件,可使用命令ln -s libclntsh.so.19 libclntsh.so创建一个软链接。
可使用ldd libclntsh.so查看依赖包是否缺失。

3.2 源端ORACLE RAC 环境准备

DMHS支持源端为ORACLE RAC的数据库,DMHS安装时,只需部署在RAC的某一个节点上。当数据库为RAC 时,需对RAC各个节点配置时间同步。配置时间同步可访问www.ntp.org,或者咨询ORACLE系统管理员。
根据RAC存储使用的不同,需进行其他额外的配置:

  1. ASM存储
    当RAC文件存放在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))
)

测试oracle数据库rac集群中ASM的密码方法:

sqlplus sys/*******@asm as sysdba
  1. 操作系统磁盘存储
    当RAC的归档文件存放在操作系统磁盘时,对未部署DMHS的RAC节点,必须配置归档文件到部署DMHS的文件映射。具体配置,请联系服务器管理员。

    DMHS在运行前,需对数据库参数/状态进行调整。
    本章节操作需在数据库管理员配合下操作,或直接由数据库管理员操作。

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

DMHS通过分析ORACLE 数据库的归档/在线日志来捕获数据库的增量数据,DMHS运行之前,必须将数据库设置为归档模式,同时开启最小附加日志及全列日志。修改数据库为归档模式需重启数据库服务,在操作只需确认工作环境能停机维护。具体操作过程如下:
修改数据库归档模式。
可使用sqlplus执行archive log list查看数据库归档模式.
image.png
如上图中数据库已经为归档模式,则跳过以下步骤开启归档。

  1. sqlplus 登录到源端数据库
  2. 关闭数据库服务
    image.png
  3. 以mount方式启动ORACLE 数据库服务
    image.png
  4. 开启数据库归档,并设置归档文件路径
    image.png
  5. 将数据库切换到正常的工作状态,打开数据库
    image.png
  6. 开启数据库最小附加日志及全列日志。如果日志已开启,则跳过本步骤
    image.png
    开启附加日志不需要重启ORACLE数据库服务,但重启数据库服务可加快附加日志开启速度。

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

当数据库数据包含中文字符时,需将DMHS运作所在窗口的NLS_LANG设置为对应的字符集,建议使用AMERICAN_AMERICA.ZHS16GBK。

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

set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

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

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

3.5 创建DMHS数据库用户

在源端由Oracle数据库管理员,执行以下SQL创建源端读取用户

--创建dmhs用户并授权
create user dmhs identified by dmhs1234;
grant select any table to dmhs;
grant select any dictionary to dmhs;
grant create session to dmhs;
grant lock any table to dmhs;
grant execute on dbms_flashback to dmhs;
grant flashback any table to dmhs;

--ORACLE12C
grant connect to c##dmhs container=all;

3.6 配置源端 DDL 支持

DMHS支持源端DDL的同步。源端DDL同步必须满足一下三个条件:
源端数据库必须允许DDL触发器的触发动作,即数据库参数_system_trig_enabled为TRUE或者未设置。查看该参数的命令如下:
image.png
需要在源端数据库以sys用户,在sys模式下创建DDL触发器及DDL记录表,详细脚本请参照安装目录的dmhs/scripts/ddl_sql_ora.sql.sql脚本。脚本内容如下:

---=======================================================
---version 2.0
---sys用户登录并创建
---=======================================================

create table dmhs_ddl_sql (
    objid          NUMBER,
    dataobj        NUMBER,
    op_type        varchar2(32),
    obj_schname    varchar2(128),
    obj_name       varchar2(128),
    obj_type       varchar2(32),
    op_sql         varchar(4000),
    op_sql2        clob,
    ddl_time       date,
    resvd1         NUMBER, 
    resvd2         NUMBER, 
    resvd3         NUMBER, 
    resvd4         NUMBER, 
    resvd5         varchar2(1000),
    resvd6         varchar2(1000)
);

create or replace trigger dmhs_trigger
before ddl
on database
declare	
	 e1          exception;
   sql_text    ora_name_list_t;
   ddl_sql     clob;
   op_no       number := NULL;
   objid       number := NULL;
   dataobj     number := NULL;
   v_num			 number;
   sql_item		 varchar(8000);
   sql_temp		 varchar(8000);
begin

/*
if ora_login_user = 'DMHS' then
    return;
end if;
*/

if (SUBSTR(ora_dict_obj_name, 1, 5) = 'DMHS_' and ora_dict_obj_name<>'DMHS_TRXID_TABLE') or (ora_dict_obj_owner = 'SYS' and ora_dict_obj_type != 'TABLESPACE') then
		--下面这个条件是为了捕获dmhs_ddl_sql表的TRUNCATE操作的,这个操作不捕获会导致无法解析到该表的OP_SQL2列
		if ora_dict_obj_name = 'DMHS_DDL_SQL' and ora_dict_obj_type = 'TABLE' and ora_sysevent = 'DROP' then
      raise_application_error(-20002, 'table cannot drop before dmhs_trigger is droped');
    end if;
    
		if ora_sysevent != 'TRUNCATE' or ora_dict_obj_name <> 'DMHS_DDL_SQL' then
       return;
    end if;
end if;
/*
if ora_dict_obj_type <> 'TABLE' and  ora_dict_obj_type <> 'VIEW' and ora_dict_obj_type <> 'SEQUENCE' and ora_dict_obj_type <> 'INDEX' and ora_dict_obj_type <> 'SYNONYM' then
       return;
end if;
*/
sql_temp := '';
dbms_lob.createtemporary(ddl_sql, TRUE);
v_num := ora_sql_txt (sql_text);
for i in 1 .. v_num
loop	
	sql_item := sql_text (i);
	if length(sql_item) + length(sql_temp) > 3000 then
		dbms_lob.append(ddl_sql, sql_temp);
		sql_temp := '';
	end if;
	sql_temp := sql_temp || sql_item;
end loop; 
dbms_lob.append(ddl_sql, sql_temp);
if ora_sysevent != 'CREATE' then
  if ora_dict_obj_type = 'TABLE' or ora_dict_obj_type = 'SEQUENCE' then
    select o.obj#, o.dataobj# into objid, dataobj from sys.obj$ o, sys.user$ u where o.name = ora_dict_obj_name and o.type# in(2, 6) and o.subname is null and u.name = ora_dict_obj_owner and o.owner# = u.user#;
  end if;
 
  insert into dmhs_ddl_sql(objid, dataobj, op_type, obj_schname, obj_name, obj_type, op_sql, ddl_time) values(objid, dataobj, ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), sysdate);
else
  if ora_dict_obj_type = 'TABLE' then
    insert into dmhs_ddl_sql(op_type, obj_schname, obj_name, obj_type, op_sql, op_sql2, ddl_time) values(ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), ddl_sql, sysdate); 
  elsif ora_dict_obj_type in ('VIEW', 'MATERIALIZED VIEW', 'TRIGGER', 'PROCEDURE', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'TYPE', 'TYPE BODY', 'SYNONYM', 'TABLESPACE', 'USER', 'ROLE', 'INDEX', 'SEQUENCE') then
    insert into dmhs_ddl_sql(op_type, obj_schname, obj_name, obj_type, op_sql, op_sql2, ddl_time) values(ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SUBSTR(ddl_sql, 1, 2000), ddl_sql, sysdate); 
	end if;
end if;  
exception
		when e1 then raise e1;
    when no_data_found then
        dbms_output.put_line('object is not exist');
end dmhs_trigger;

--1)关闭数据回收站
show parameter recycle
alter system set recyclebin=off deferred;

需要日志捕获模块对ddl_mask进行设置。例如<ddl_mask>op:obj<ddl_mask>。ddl_mask可对同步对象进行过滤,详细参数请参照ddl_mask参数说明。

4 配置文件说明

4.1 配置ORACLE RAC源端

配置ORACLE RAC源端,可使用DMHS配置助手进行配置,或手动配置DMHS配置文件dmhs.hs。手动配置dmhs.hs时需注意,dmhs.hs文件内容必须严格遵循xml格式规范。以下介绍如何手动配置dmhs.hs。
创建DMHS配置文件dmhs.hs。将文件路径切换到dmhs/bin工作目录下,创建文件dmhs.hs。注意DMHS运行用户必须具有dmhs.hs文件的读取权限。

<?xml version="1.0" encoding="GB2312"?>

<dmhs>
    <base>
        <siteid>1</siteid>
        <mgr_port>5345</mgr_port>
        <chk_interval>3</chk_interval>
        <ckpt_interval>60</ckpt_interval>
        <lang>en</lang>
        <mem_check>1</mem_check>
        <version>2.0</version>
    </base>
<cpt>
        <enable>1</enable>
        <db_type>ORACLE11G</db_type>
        <db_server>HN****</db_server>
        <db_user>dmhs</db_user>
        <db_pwd>**********</db_pwd>
        <db_port>1521</db_port>
        <idle_time>300</idle_time>
        <ddl_mask>OBJ:OP</ddl_mask>
	<rac>
		<rac_type>1</rac_type>
		<db_server>asm</db_server>
		<db_user>sys</db_user>
		<db_pwd>*********</db_pwd>
		<nodes>2</nodes>
	</rac>
        <parse_thr>1</parse_thr>
                <send_lst>2</send_lst>
                <rec_heap_size>16</rec_heap_size>
                <vpool_size>8</vpool_size>
                <supplement_log>1</supplement_log>
                <enable_mview>0</enable_mview>
        <check_date>0</check_date>
        <trx_delay_second>10</trx_delay_second>
        <send_delay_second>20</send_delay_second>
        <arch>
            <clear_flag>0</clear_flag>
            <clear_interval>3600</clear_interval>
            <retain_day>3</retain_day>
        </arch>
                <send>
                        <ip>xxx.xxx.xxx.xxx</ip>
                        <mgr_port>5348</mgr_port>
                        <data_port>5347</data_port>
                        <trigger>0</trigger>
                        <constraint>0</constraint>
                        <identity>0</identity>
                 	<filter>
                    <enable>
					<item>TJRH.*</item>
				 </enable>

                 	</filter>      
                </send>
    </cpt>
</dmhs>

配置文件说明:

<enable>1</enable>
        <db_type>ORACLE11G</db_type>
        <db_server>HNxxxx</db_server> --配置的是数据库的监听名
        <db_user>dmhs</db_user>  --创建的只读权限的用户名,非业务用户,请使用plsql dmhs / **********@asm验证是否能登录
        <db_pwd>**********</db_pwd>
        <db_port>1521</db_port>
        <idle_time>300</idle_time>
        <ddl_mask>OBJ:OP</ddl_mask>

Rac配置块说明

<rac>
		<rac_type>1</rac_type>
		<db_server>asm</db_server> --监听文件里ASM的监听名
		<db_user>sys</db_user> --必须是sys用户,请使用plsql SYS/****@asm验证是否能登录
		<db_pwd>******</db_pwd>
		<nodes>2</nodes>
	</rac>

发送模块说明

<send>
      <ip>xxx.xxx.xxx.xxx</ip> --目地端的ip地址

4.2 配置DM8目的端

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
        <siteid>17</siteid>
        <mgr_port>5348</mgr_port>
        <ckpt_interval>60</ckpt_interval>
        <lang>en</lang>
        <version>2.0</version>
    </base>
    <exec>
	<recv>
	    <mgr_port>5348</mgr_port>	
	    <data_port>5347</data_port>
	</recv>
	<db_type>dm8</db_type>
	<db_server>xxx.xxx.xxx.xxx</db_server>
	<db_user>tjrh</db_user>
	<db_pwd>********</db_pwd>
	<db_port>5237</db_port>
	<db_name></db_name>
	<exec_thr>4</exec_thr>
	<exec_sql>1024</exec_sql>
	<exec_trx>5000</exec_trx>
	<exec_rows>1000</exec_rows>
	<affect_row>0</affect_row>
        <check_index>0</check_index>
        <exec_policy>0</exec_policy>
    </exec>
</dmhs>

配置说明:

<db_type>dm8</db_type> --目的端数据库版本
	<db_server>xxx.xxx.xxx.xxx</db_server> --目的端ip地址
	<db_user>tjrh</db_user> --目的端用户名
	<db_pwd>**********</db_pwd>
	<db_port>5237</db_port> --目的端端口

5 启动DMHS进行数据同步

后台启动与前台启动选择一项完成同步工作。前台启动完成配置与同步后,请将前台启动窗口关闭,使用后台脚本启动dmhs,不需要做同步操作,只启动服务即可。

5.1 前台启动dmhs
目的端运行dmhs_server,并执行Start exec
dmhs_server dmhs.hs
start exec

源端运行dmhs_server,执行clear exec lsn。
./dmhs_server dmhs.hs
clear exec lsn
注意:源端请使用oracle用户运行dmhs
源端装载字典信息及历史数据。数据装载掩码具体请看用户手册。
copy 0 “sch.name=’TJRH’” CREATE|INSERT|DICT
等待执行完成
源端DMHS,执行start。
start

5.2 后台启动dmhs服务

如果5.1的步骤已经执行,只需要启动后台服务即可,不需要执行在5.2.3的同步操作。

5.2.1 Linux平台启动

将bin目录下的service_template/DmhsService拷贝到bin目录
cp /dmhs/bin/service_template/DmhsService /dmhs/bin

修改DmhsService的脚本,如下
vim DmhsService

DMHS_HOME=/dmhs
PROG_DIR=/dmhs/bin
CONF_PATH=/dmhs/bin/dmhs.hs
NEED_LIB_PATH=/dmhs/bin:/u01/app/oracle/product/11.2.0/db_1/bin

启动dmhs服务
cd /dmhs/bin
./DmhsService start

5.2.2 Windows启动

首先,将bin目录下的service_template/DmhsServiceInstall.bat拷贝到bin目录。
其次,在dmhs\bin目录下双击运行DmhsServiceInstall.bat,注册服务。
然后,去服务里启动dmhs服务。

5.2.3 dmhs_console连接dmhs,实现同步

  1. 执行端运行DMHS软件工具dmhs_console,连接执行端DMHS服务,控制台管理工具中执行如下DMHS命令:
    connect ip:mgr_port
    启动日志执行模块,控制台管理工具中执行如下DMHS命令:
    start exec

  2. 源端运行DMHS软件工具dmhs_console,连接源端DMHS服务,设置日志捕获模块起始LSN。

  3. 源端运行DMHS软件工具dmhs_console,连接源端DMHS服务,装载源端字典信息及历史数据。数据装载掩码具体请看用户手册。

  4. 启动日志捕获模块。源端运行DMHS软件工具dmhs_console,连接源端DMHS服务,执行start cpt。

附录

附录1 Oracle做为目的端配置

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

  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,来避免外键引起的同步错误。

配置ODBC
(1)安装odbc
推荐安装 unixodbc2.3.2 版本的 odbc,下面介绍如何使用源码安装 unixidbc。拷贝unixODBC-2.3.0.tar.gz至/dmdata目录下,并进行解压:
gunzip unixODBC-2.3.0.tar.gz //会在/dmdata目录下生成一个unixODBC-2.3.0.tar文件
tar –xvf unixODBC-2.3.0.tar //会在/dmdata目录下生成一个unixODBC-2.3.0文件夹
cd unixodbc-2.3.0
export CC=gcc
./configure --enable-drivers=no --with-iconv-char-enc=GB18030 --enable-gui=no --enable-iconv=yes
make
make install
(2) 配置odbc.ini和odbcinst.ini
cd /usr/local/etc
vi odbc.ini
在其中写入:

[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDb11g_home1
SERVER = *.*.*.*
UID = dmhs
PWD = dmhs1234
Servername = ORCL
PORT = 1521

vi odbcinit.ini
在其中写入:

[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver =/dmdata/dmhs/bin1/libsqora.so.11.1
Threading = 0

(3) 测试使用odbc连接oracle数据库(使用oracle用户连接测试),下图修改为dmhs/dmhs1234进行连接测试

如果报驱动问题,可以ldd /dmdata/dmhs/bin1/libsqora.so.11.1验证是否缺失依赖包;配置bin和LD_LIBRARY_PATH的环境变量;
 Dmhs.hs配置
以下是Oracle单机做为目的端双向同步的配置,如果仅做为目的端可以将cpt模块删除,正式配置时请将注释删除。

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>ch</lang>
        <mgr_port>5345</mgr_port>
        <ckpt_interval>60</ckpt_interval>
        <siteid>1</siteid>
        <version>2.0</version>
    </base>
    <cpt>
        <enable>1</enable>
        <name>cpt</name>
        <db_type>ORACLE11G</db_type>
        <db_server>ORCL</db_server>     <!—ODBC 名称-->
        <db_user>GXXX</db_user>   <!—oracle数据库登录用户名-->
        <db_pwd>dmxxxx</db_pwd>   <!—oracle数据库登录密码-->
        <db_port>1521</db_port>
        <idle_time>300</idle_time>
        <ddl_mask>OP:OBJ:REC</ddl_mask>
        <check_date>0</check_date>
        <arch>
            <clear_flag>0</clear_flag>
            <clear_interval>600</clear_interval>
        </arch>
       	<send>
			<ip>*.*.*.18</ip><!---目的端ip->
			<mgr_port>5345</mgr_port>				
			<data_port>5346</data_port>
			<level>0</level>
			<trigger>1</trigger>
			<constraint>1</constraint>
			<case_sensitive>0</case_sensitive>
			<filter>
				<enable>
					<item>BDCHS.*</item><!—源端表-->
				</enable>
			</filter>
<!—表映射,如果目的端和源端模式名一致可以不配置-->
<map>
		         <item> BDCHS.*==DMHS.*</item>
</map>
		</send>
    </cpt>
    <exec>
        <recv>
	    <mgr_port>5345</mgr_port>
         <data_port>5346</data_port>
        </recv>
	<enable>1</enable>
	<name>exec</name>
        <db_type>oracle11g</db_type>
        <db_server>ORCL</db_server>
        <db_user>bdcxxx</db_user>
        <db_pwd>TY_xxx</db_pwd>
        <db_port>1521</db_port>
        <toggle_case>0</toggle_case>
	<exec_thr>1</exec_thr>
	<level>0</level>
        <exec_thr>1</exec_thr>
        <exec_sql>2048</exec_sql>
        <exec_trx>5000</exec_trx>
        <exec_rows>250</exec_rows>
	<vpool>7</vpool>
        <trxid_tables>1</trxid_tables>
        <recv_caches>8</recv_caches>
	<exec_policy>2</exec_policy>
	<commit_policy>1</commit_policy>
	<enable_merge>1</enable_merge>
	<affect_row>1</affect_row>
    </exec>
</dmhs>

附录二 dmhs启动乱码

dmhs启动乱码如下图所示:

修改dmhs.hs的配置文件,将<bash>的<lang>配置ch修改为en

<base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <ckpt_interval>60</ckpt_interval>
        <siteid>1</siteid>
        <version>2.0</version>
</base>

附录三 dmhs_exec.dll can’t not found

Linux环境变量配置:

添加环境变量LD_LIBRARY_PATH和PATH目录,执行以下命令临时生效:

export LD_LIBRARY_PATH= /dmhs/bin;
export PATH=$PATH:/dmhs/bin;/dmdbms/bin;

重启dmhs,如果无报错可将以上环境变量添加到/etc/profile配置文件中,执行source /etc/profile生效。

windows环境变量配置:

右击‘我在电脑’ – ‘属性’ – ‘高级系统设置’ – ‘环境变量’
在【系统变量模块】配置path路径添加达梦数据库bin所在路径和dmdbms/bin目录

附录四 Create index报锁超时

在<exec>模块配置<check_index>0</check_index>

附录五 Oracle端启动dmhs报用户名与密码错误

报错如下图:

请先确认登录Oracle的用户名与密码是否正确,如果配置正确,请使用oracle用户运行dmhs。

附录六 目的端报无效的日期字符串

使用print 1 seqid trxid “err.sql”,获取到报错sql,报错语句全是如下格式:Insert into test(send_date) values(‘2015-11-23 10:28:42’)。达梦是支持这种形式的时间类型插入的。解决办法如下:
将dm.ini的DATETIME_FMT_MODE设置为0

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服