达梦8-达梦数据实时同步软件(DMHS)配置-Oracle-DM8

news2024/12/23 13:52:56

1、安装环境

源端目的端
IP地址192.168.6.111192.168.6.110
系统版本Red Hat 6.4Kylin v10
数据库版本Oracle11g达梦 v8
系统用户Oracledmdba
字符集MERICAN_AMERICA.AL32UTF8UTF-8
端口15215236
实例名PRODDMSERVER
数据库软件目录/u01/app/oracle/opt/dmdbms
DMHS安装目录/u01/dmhs/opt/dmhs
归档开启  开启  

DMHS架构图 

注:当前的测试环境,源端安装了Oracle数据库,并正常启动,监听正常启动;目的端安装了达梦数据库,实例正常启动。

2、软件信息

本次实验是从Oracle数据库同步数据到达梦数据库,Oracle数据库需要安装的是Oracle版本的DMHS,达梦数据库安装的是达梦数据库版本的DMHS。

数据库软件版本
Oracledmhs_V4.3.30_oracle_rev161487_rh6_64_20240611_sp6
达梦dmhs_V4.3.30_dm8_rev161487_rh6_64_20240611_sp6

3、unixODBC 安装与配置

当目的端为oracle时,在系统中需要安装unixodbc,建议是unixodbc 2.3.0及以上的版本。

确保gcc已安装。

3.1、Oracle源端

3.1.1、安装ODBC

root用户

#上传安装包,解压
tar -zxvf unixODBC-2.3.0.tar.gz
#进入目录
cd unixODBC-2.3.0
#配置
./configure 
#编译
make
#编译并安装
make install

3.1.2、配置ODBC

root用户

#编辑odbc.ini
vi /usr/local/etc/odbc.ini

[orcl]
Description=Oracle
Driver=Oracle ODBC Driver
ServerName=PROD
UserID=DMHS
Password=123456

#编辑odbcinst.ini
vi /usr/local/etc/odbcinst.ini

[Oracle ODBC Driver]
Description     = ODBC for Oracle
Driver          = /u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1

3.1.3、测试ODBC连接

Oracle用户

[oracle@XH ~]$ isql -v orcl
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

3.2、DM目的端

3.2.1、安装ODBC

root用户

#上传安装包,解压
tar -zxvf unixODBC-2.3.0.tar.gz
#进入目录
cd unixODBC-2.3.0
#配置
./configure 
#编译
make
#编译并安装
make install

3.2.2、配置ODBC

root用户

#编辑odbc.ini
vi /usr/local/etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

#编辑odbcinst.ini
vi /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /opt/dmdbms/bin/libdodbc.so

3.2.3、测试ODBC连接

dmdba用户

[dmdba@KylinV10 ~]$ isql -v dm8
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

4、Oracle源端库配置

4.1、监听器

#查看监听状态

lsnrctl status

#启动监听

lsnrctl start

#关闭监听

lsnrctl stop 

[oracle@XH ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-NOV-2024 16:48:44

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XH)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                08-NOV-2024 16:48:20
Uptime                    0 days 0 hr. 0 min. 23 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/XH/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XH)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "PROD.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
Service "PRODXDB.enmoedu.com" has 1 instance(s).
  Instance "PROD", status READY, has 1 handler(s) for this service...
The command completed successfully

 

4.2、归档配置

#oracle用户,登录数据库
sqlplus / as sysdba
#查看归档状态
archive log list
----------------------------------------------
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     4
Current log sequence           6
SYS@PROD> 

#关库
shutdown immediate;
#启库到mount状态
startup mount;
#开归档
alter database archivelog;
#设置归档路径,需提前创建目录
alter system set log_archive_dest_1='location=/u01/arch';
#open数据库
alter database open;
#查看归档状态
archive log list
----------------------------------------------
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/arch
Oldest online log sequence     4
Next log sequence to archive   6
Current log sequence           6
SYS@PROD> 

 4.3、关闭回收站

show parameter recycle
alter system set recyclebin=off deferred;

4.4、开启附加日志

alter database add supplemental log data;
alter database add supplemental log data (all) columns;
select supplemental_log_data_min,supplemental_log_data_all from v$database;

4.5、DDL同步设置

编辑开启DDL同步。源端数据库必须允许 DDL 触发器的触发动作,即数据库参数 _system_trig_enabled 为 TRUE 或者未设置
SQL> show parameter "_system_trig_enabled";
SQL> alter system set "_system_trig_enabled"=true;

4.6、创建同步用户

创建用户DMHS,并授权。 

create user DMHS identified by "123456";

grant connect,resource,dba to dmhs;
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 all on sys.dmhs_ddl_sql to dmhs
grant all on sys.col$ to dmhs;
grant all on sys.cdef$ to dmhs;
grant all on sys.lobfrag$ to dmhs;
grant all on sys.obj$ to dmhs;
grant all on sys.user$ to dmhs;
grant all on sys.ntab$ to dmhs;
grant all on sys.external_tab$ to dmhs;
grant all on sys.coltype$ to dmhs;
grant all on sys.tabsubpart$ to dmhs;
grant all on sys.tabcompart$ to dmhs;
grant all on sys.tab$ to dmhs;
grant all on sys.partobj$ to dmhs;
grant all on sys.lob$ to dmhs;
grant all on sys.ccol$ to dmhs;
grant all on sys.con$ to dmhs;
grant all on sys.dba_cons_columns to dmhs;
grant select on sys.V_$instance to dmhs;
grant select on sys.V_$database to dmhs;

执行sql,创建DDL触发器及DDL记录表,使用数据库的system用户。

sqlplus / as sysdba

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(5345);
   sql_temp		 varchar(5345);
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;
/

5、安装DMHS同步软件

5.1、Oracle源端

Oracle用户执行,不是Oracle也可以,但必须保证和Oracle用户在同一个用户组。

./dmhs_V4.3.30_oracle_rev161487_rh6_64_20240611_sp6.bin -i

注意修改软件的安装目录,内置数据库IP需要设置,其他默认直接回车。

Oracle端
./dmhs_V4.3.30_oracle_rev161487_rh6_64_20240611_sp6.bin -i

[oracle@XH opt]$ ./dmhs_V4.3.30_oracle_rev161487_rh6_64_20240611_sp6.bin -i
Extract install files......... 

1.English(English)
2.Simplified Chinese(简体中文)
Select the language to install[2.Simplified Chinese(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:489 MB
安装目录: [/home/oracle/dmhs]/u01/dmhs
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.6.111](192.168.6.111):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.6.111
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:/u01/app/oracle:/u01/dmhs/bin
Oracle字符集
提示:注意此处配置为ORACLE数据库的NLS_LANG,此配置项由源端数据库字符集编码格式决定,需与源端字符集编码适配。
1.SIMPLIFIED CHINESE_CHINA.ZHS32GB18030
2.SIMPLIFIED CHINESE_CHINA.AL32UTF8
3.TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
4.TRADITIONAL CHINESE_TAIWAN.AL32UTF8
5.AMERICAN_AMERICA.AL32UTF8
6.AMERICAN_AMERICA.WE8ISO8859P1
7.AMERICAN_AMERICA.WE8ISO8859P15
8.AMERICAN_AMERICA.ZHS16GBK
9.不设置
请配置Oracle字符集[9.不设置]:5
ORACLE_BASE
请输入:ORACLE_BASE[/u01/app/oracle]:
/u01/app/oracle
ORACLE_HOME
请输入:ORACLE_HOME[/u01/app/oracle/product/11.2.0/dbhome_1]:
/u01/app/oracle/product/11.2.0/dbhome_1
远程控制服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/u01/dmhs/log/install.log

5.2、 DM目的端

dmdba用户执行

./dmhs_V4.3.30_dm8_rev161487_rh6_64_20240611_sp6.bin -i

[dmdba@KylinV10 opt]$ ./dmhs_V4.3.30_dm8_rev161487_rh6_64_20240611_sp6.bin -i
Extract install files......... 

1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:466 MB
安装目录: [/home/dmdba/dmhs]/opt/dmhs
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.6.110](192.168.6.110):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.6.110
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:/opt/dmdbms/bin:/opt/dmhs/bin
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/opt/dmhs/log/install.log

6、DMHS参数文件配置

6.1、Oracle源端

在/u01/dmhs/bin目录下创建dmhs.hs。

[oracle@XH bin]$ vi /u01/dmhs/bin/dmhs.hs 
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
        <base><!-- 管理模块的基本配置 -->
                <lang>en</lang>
                <mgr_port>5345</mgr_port>
                <name>DMHS_HA_TEST</name>
                <chk_interval>2</chk_interval>
                <ckpt_interval>45</ckpt_interval>
                <siteid>1</siteid>
                <version>2.0</version>
                <group>1</group>
        </base>
        <cpt><!--捕获模块配置-->
            <db_type>oracle11g</db_type>
            <db_server>192.168.6.111/PROD.enmoedu.com</db_server>
            <db_user>DMHS</db_user>
            <db_pwd>123456</db_pwd>
            <db_port>1521</db_port>
            <idle_time>300</idle_time>
            <ddl_mask>op:obj</ddl_mask>
            <parse_thr>1</parse_thr>
            <arch>
                <clear_interval>600</clear_interval>
                <clear_flag>0</clear_flag>
                <bak_dir></bak_dir>
            </arch>
            <send><!-- 发送模块配置 -->
                <ip>192.168.6.110</ip>
                <mgr_port>5345</mgr_port>
                <data_port>5346</data_port>
                <trigger>1</trigger>
                <constraint>1</constraint>
                <identity>1</identity>
                <net_turns>0</net_turns>
                <filter>
                    <enable>
                        <item>DMHS.*</item>
                    </enable>
                    <disable>
                    </disable>
                </filter>
                <map><!--映射配置项-->
                    <item>DMHS.*==SYSDBA.*</item>
                </map>
           </send>
        </cpt>
</dmhs>

配置说明

MGR配置(<base></base>标签内)

序号配置项默认值配置说明
1siteid-取值范围在 1~ 30000。站点号是同步节点在同步链路中的唯一标识。
2langch语言,会影响到 dmhs_console 客户端的语言输出,ch中文,en英文。
3mgr_port-管理端口,取值范围在 1000~ 65535。
4ckpt_interval60检查点间隔,取值范围在 10~ 65535。单位秒

CPT配置(<cpt></cpt>标签内)

序号配置项默认值配置说明
1db_type-捕获源端的数据库类型。
2db_server-源端数据库的服务名,如果数据库不支持服务名,也可以填写 IP。
3db_user-连接源端数据库的登录名或用户名。
4db_pwd-源端数据库登录口令,明文。
5db_port-源端数据库的监听端口号。
6ddl_maskTABLE:OP

DDL 操作功能掩码。

OBJECT:允许捕获所有数据库对象的 DDL 操作,支持简写 OBJ。

OPERATION:允许捕获对象的所有 DDL 操作, 支持简写 OP,但不包含COMMENT。
 

7parse_thr1日志分析线程数,取值范围在 1-16。
8arch-归档信息配置,该标签是一个功能标签,需要配置它的子项。
9send-CPT 投递信息配置,该标签是一个功能标签,需要配置它的子项。

arch标签的子项

<arch>
    <clear_interval>600</clear_interval><!-- 归档文件清理间隔,默认为600s,最小值60s,最大值2000000000s -->
    <clear_flag>0</clear_flag><!-- 清除归档日志的方式,可选项0(无动作), 1(删除归档文件), 2(表示移走归档文件) -->
    <bak_dir></bak_dir><!-- clear_flag项配置成2时,该配置项可以用来指定归档文件转移的目录,如果未配置这项,则转移到归档路径的log_bak目录下 -->
</arch>

send标签的子项 

<send><!--发送模块配置-->
    <ip>192.168.6.110</ip><!--执行端IP-->
    <mgr_port>5345</mgr_port><!--执行端mgr_port-->
    <data_port>5346</data_port><!--执行端data_port-->
    <trigger>1</trigger><!--是否忽略触发器,默认0,0和1-->
    <constraint>1</constraint><!--是否忽略约束,默认0,0和1-->
    <identity>1</identity><!--指示下一级数据入库时,自增列处理方式,0(启用)或 1(忽略),默认值为0。-->
    <net_turns>0</net_turns><!--是否启用网闸模式, 0(禁用)或 1(启用) 。-->
    <filter>
        <enable><!--白名单,所有允许同步的表-->
            <item>DMHS.*</item> <!-- 填上你要迁移的schema -->
        </enable>
        <disable>
        </disable>
    </filter>
    <map><!--映射配置项-->
        <item>DMHS.*==SYSDBA.*</item> <!-- 填上你要迁移的schema,源端的DMHS迁移到目的端的SYSDBA -->
    </map>
</send>

6.2、DM目的端 

 在/opt/dmhs/bin/目录下创建dmhs.hs。

[dmdba@KylinV10 bin]$ vi /opt/dmhs/bin/dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <chk_interval>3</chk_interval>
        <ckpt_interval>60</ckpt_interval>
        <siteid>61</siteid>
        <log_policy>2</log_policy>
        <version>2.0</version>
        <group>1</group>
        <name>HS_DM_DEST</name>
    </base>
    <exec><!-- 执行模块的基本配置 -->
        <recv>
          <data_port>5346</data_port>
        </recv>
        <db_type>dm8</db_type>
        <db_server>192.168.6.110</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</db_pwd>
        <char_code>PG_UTF8</char_code>
        <db_port>5236</db_port>
        <exec_mode>1</exec_mode>
        <exec_thr>128</exec_thr>
        <exec_sql>4096</exec_sql>
        <exec_trx>10000</exec_trx>
        <exec_rows>1000</exec_rows>
        <exec_policy>2</exec_policy>
        <stat_tab>26</stat_tab>
        <level>0</level>
        <enable_merge>0</enable_merge>
        <enable_depended>0</enable_depended>
        <recv_caches>32</recv_caches>
        <trx_max_file>2</trx_max_file>
        <clear_trx_file>1</clear_trx_file>
        <trx_split>1</trx_split>
        <direct_exec>1</direct_exec>
        <commit_wait>0</commit_wait>
        <commit_prepare>1</commit_prepare>
        <commit_compress>1</commit_compress>
        <preload_threads>8</preload_threads>
    </exec>
</dmhs>

 

7、数据同步测试

7.1、启动DMHS

DM目的端--起dmhs server
[dmdba@KylinV10 bin]$ ./dmhs_server dmhs.hs 

DM目的端--起dmhs
[dmdba@KylinV10 bin]$ ./dmhs_server dmhs.hs 
MGR[INFO]: DMHS start up, current version: V4.3.30-Build(2024.06.11-161487trunc)_64_2404_sp6 (The beta)(Enterprise Edition)
MGR[WARN]: License will expire on 2024-09-11
MGR[INFO]: load config file successful,site no:61, manager port :5345, poll interval:3, max mem size:64(GB)
MGR[INFO]: manager listening  port:5345

Oracle源端--起dmhs server

[oracle@XH bin]$ ./dmhs_server dmhs.hs 

Oracle源端--起dmhs

[oracle@XH bin]$ ./dmhs_server dmhs.hs 
MGR[INFO]: DMHS start up, current version: V4.3.30-Build(2024.06.11-161487trunc)_D64_2404_sp6 (The beta)(Enterprise Edition)
MGR[WARN]: License will expire on 2024-09-11
MGR[INFO]: load config file successful,site no:1, manager port :5345, poll interval:3, max mem size:64(GB)
MGR[INFO]: manager listening  port:5345

7.2、启动DMHS控制台

这里需要打开另一个会话进行操作。

DM目的端--开启执行器-start exec
[dmdba@KylinV10 bin]$ ./dmhs_console 

DM目的端--开启执行器-start exec
[dmdba@KylinV10 bin]$ ./dmhs_console 
DMHS console tool: V4.3.30-Build(2024.06.11-161487trunc)_64_2404_sp6
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.

Connected to DMHS: 127.0.0.1:5345
execute success
Dameng HS Server V4.3.30-Build(2024.06.11-161487trunc)_64_2404_sp6

DMHS> start exec
execute success

DMHS> 

Oracle源端--开启捕获器-start cpt 

[oracle@XH bin]$ ./dmhs_console 

Oracle源端--开启捕获器-start cpt
[oracle@XH bin]$ ./dmhs_console 
DMHS console tool: V4.3.30-Build(2024.06.11-161487trunc)_D64_2404_sp6
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.

Connected to DMHS: 127.0.0.1:5345
execute success
Dameng HS Server V4.3.30-Build(2024.06.11-161487trunc)_D64_2404_sp6

DMHS> clear exec lsn
execute success

DMHS> connect 127.0.0.1:5345
execute success

DMHS> copy 0 "sch.name='DMHS'" CREATE|INSERT|DICT
copy mask is : |CREATE|INSERT|TABLE|DICT|PARTITION|OBJID|REP
execute finish, please look up log file of exec module to check data load result

DMHS> start cpt
execute success

7.3、数据同步测试

 Oracle源端,创建表T5,插入数据,并提交数据
create table t5 (ID INT,TXT varchar(20));

insert into t5 (ID,TXT) values (1,'数据库');
insert into t5 (ID,TXT) values (2,'数据库');
commit;

7.3.1、数据查询

Oracle源端-使用dmhs用户 

Oracle源端
查询
DMHS@PROD> select * from t5;
select * from t5
              *
ERROR at line 1:
ORA-00942: table or view does not exist


DMHS@PROD> 

DM目的端-使用sysdba用户

DM目的端
查询
SQL> select * from t5;
select * from t5;
第1 行附近出现错误[-2106]:无效的表或视图名[T5].
已用时间: 1.221(毫秒). 执行号:0.
SQL> 

可以看到源端和目的端都不存在T5表 。

7.3.2、创建测试数据

Oracle源端
创建表,并插入数据,提交 

Oracle源端
创建表,并插入数据

DMHS@PROD> create table t5 (ID INT,TXT varchar(20));

Table created.

DMHS@PROD> 
DMHS@PROD> insert into t5 (ID,TXT) values (1,'数据库');

1 row created.

DMHS@PROD> insert into t5 (ID,TXT) values (2,'数据库');

1 row created.

DMHS@PROD> commit;

Commit complete.

DMHS@PROD> 
DMHS@PROD>  select * from t5;

        ID TXT
---------- --------------------
         1 数据库
         2 数据库

DMHS@PROD> 

7.3.3 目的端数据查看

DMHS日志:

日志:
EXE[INFO]: DDL:SITEID:1 SEQID:1141710 TRXID:400024664016125 SYSDBA.T5 CREATE
EXE[INFO]: siteid: 1, table (SYSDBA.T5) start SEQID:0
EXE[INFO]: DDL: SITEID:1 SEQID:1141702 TRXID:400024664016125 SQL:--dmhs ddl, siteid:1, level:2, mask:1
CREATE TABLE "SYSDBA"."T5"("ID" NUMBER NULL,"TXT" VARCHAR2(20) NULL)
EXE[INFO]: CHECKPOINT SITEID:1 SEQID: 1141702, LFS : 0 EPOCH: 1173684170(2024-07-07 07:22:50)
EXE[INFO]: siteid: 1, table (SYSDBA.T5) start SEQID:0

T5表的数据已同步完成

DM目的端查询

DM目的端


SQL> select * from t5;

行号     ID TXT      
---------- -- ---------
1          1  数据库
2          2  数据库

已用时间: 0.828(毫秒). 执行号:17002.
SQL> 

8、报错处理 

问题1
 

MGR[ERROR]: lib libdmhs_exec.so can not found,error code 0, libdmoci.so: cannot open shared object file: No such file or directory
MGR[ERROR]: log exec start fail

解决

通过报错提示 libdmoci.so 找不到

#使用root查找该文件
find / -name libdmoci.so

#将该文件拷贝到dmhs软件安装位置的bin目录下
cp /opt/dmhs/bin/stat/libdmoci.so /opt/dmhs/bin
cd /opt/dmhs/bin
ls -lrt
#授权
chown dmdba:dinstall libdmoci.so 

问题2

2024-07-07 01:30:41 CPT[ERROR]: OCI login database failed,server=192.168.6.111/PROD; user=DMHS; password=******

解决

server=192.168.6.111/PROD ---->需要配置Oracle监听器服务名

#修改Oracle源端的dmhs.hs文件

<db_server>192.168.6.111/PROD.enmoedu.com</db_server>

#使用Oracle的监听器查看服务名
lsnrctl status

问题3 

在启动cpt的时候提示找不到“db_type”的设置。

原因:

在dmhs.hs中设置了2组<cpt></cpt>

第二组内没有任何信息,所以就会报错,导致cpt不能启动。

如下图:第一组信息已收起。

删除多出来的 <cpt></cpt>即可。

-END-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2238549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI基础知识

目录 1.激活函数:one: 激活函数的作用:two: sigmoid函数:three: tanh函数:four: ReLu:five: Leaky ReLU 2.Softmax函数3.优化器:one: 优化器的作用:two: BGD&#xff08;批梯度下降&#xff09;:three: SGD&#xff08;随机梯度下降&#xff09;:four: MBGD&#xff08;Mini Ba…

【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning

通过元滤波器学习动态对齐以实现小样本学习 引用&#xff1a;Xu C, Fu Y, Liu C, et al. Learning dynamic alignment via meta-filter for few-shot learning[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 5182-5191. 论文…

ArcGIS Pro SDK Addin-DAML

ArcGIS Pro SDK Addin-DAML 文章目录 ArcGIS Pro SDK Addin-DAML1 Panes: 重置窗格2 Button: 从功能区中移除核心按钮3 Button: 将新按钮插入功能区上的现有组4 Menu: 在图层上下文菜单中插入一个新按钮5 Menu: 在 Map Container 上下文菜单中插入新菜单6 Menu: 在2D Map上下文…

FPGA学习笔记#7 Vitis HLS 数组优化和函数优化

本笔记使用的Vitis HLS版本为2022.2&#xff0c;在windows11下运行&#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e&#xff0c;主要根据教程&#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记&#xff1a;《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…

熊猫追剧 1.0.2 | 免费影视播放,独家蓝光线路

熊猫追剧是一款免费的视频播放软件&#xff0c;集合了网络上的电影、电视剧、综艺、动漫以及短剧等多种类型的视频资源。经过测试&#xff0c;该软件内没有广告干扰&#xff0c;采用独家蓝光线路&#xff0c;提供高清流畅的观影体验。用户还可以享受视频投屏、下载和倍速播放等…

[CKS] K8S AppArmor Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …

Tomcat漏洞利用工具-TomcatScanPro(二)

项目地址 https://github.com/lizhianyuguangming/TomcatScanPro 简介 本项目是一个针对 Tomcat 服务的弱口令检测、漏洞检测以及本地文件包含&#xff08;LFI&#xff09;攻击工具。除了支持 CVE-2017-12615 漏洞的多种利用方式外&#xff0c;新版本还集成了 CNVD-2020-104…

【XML协议】轻松掌握使用C++ XML解析库——pugixml

文章介绍了xml协议的组成以及C xml解析库pugixml的常用操作。源于开发中每次遇到xml操作时&#xff0c;都要回过头查看pugixml库常用操作时什么样的&#xff0c;能不能有个更深刻和清晰的认识呢&#xff1f;其实搞清楚xml结构和pugixml组织结构的对照关系&#xff0c;以及pugix…

《无线重构世界》射频模组演进

射频前端四大金刚 射频前端由PA、LNA、滤波器、开关“四大金刚” 不同的模块有自己的工艺和性能特点 分层设计 射频前端虽然只由PA、LNA、开关、混频器4个模块构成&#xff0c;但不同模块之间相互连接且相互影响。如果将射频系统当成一个整体来理解&#xff0c;其中的细节和…

《Python编程实训快速上手》第五天--模式匹配与正则表达式

一、不用正则表达式查找文本模式 文本模式是一种人为规定的结构&#xff0c;现在有一个模式&#xff1a;3个数字-3个数字-4个数字 使用isPhoneNumber()函数来判断字符串是否匹配该模式 def isPhoneNumber(number):if len(number) ! 12:return Falsefor i in range(0,3):if n…

文件读写函数(1)

大家好&#xff0c;今天我们来介绍一下文件读写函数&#xff0c;昨天我们已经简单提及了一下文件的概念&#xff0c;那么我们今天就不多说&#xff0c;下面我们来看函数。 1.fopen函数 这个函数是用来打开文件的&#xff0c;它的两个参数分别是文件名和文件的打开模式&#x…

华为数通HCIA系列第5次考试-【2024-46周-周一】

文章目录 1、子网掩码有什么作用&#xff0c;和IP地址是什么关系&#xff0c;利用子网掩码可以获取哪些信息&#xff1f;2、已知一个IP地址是192.168.1.1&#xff0c;子网掩码是255.255.255.0&#xff0c;求其网络地址3、已知某主机的IP地址是192.168.100.200&#xff0c;子网掩…

Linux(CentOS)运行 jar 包

1、在本地终端运行&#xff0c;关闭终端&#xff0c;程序就会终止 java -jar tlias-0.0.1-SNAPSHOT.jar 发送请求&#xff0c;成功 关闭终端&#xff08;程序也会终止&#xff09; 发送请求&#xff0c;失败 2、在远程终端运行&#xff0c;关闭终端&#xff0c;程序就会终止 …

GIT:如何查找已删除的文件的历史记录

首先你得知道文件的名称和路径 然后打开 gitlab&#xff0c;到项目中&#xff0c;仓库-> 文件 查找文件 复制文件名到可能存在过这个文件的分支当中&#xff0c;就能看到了

C++builder中的人工智能(21):Barabási–Albert model(BA)模型

在此之前&#xff0c;大多数网络被想当然的认为是随机的&#xff0c;因此连接度分布可以近似用泊松分布来表示&#xff0c;而巴拉巴西与其学生阿尔伯特、郑浩雄通过对万维网度分布测量的结果却显示万维网度分布服从幂律分布&#xff0c;存在枢纽节点&#xff08;拥有大量链接的…

新手 Vue 项目运行

前言&#xff1a;前面讲了我们已经将spingboot项目运行起来了&#xff0c;现在我们只需将后台管理的Vue项目运行起来即可完成整个项目。 在运行vue项目之前&#xff0c;请先运行springboot项目&#xff0c;运行步骤请看&#xff1a;运行Springboot Vue 项目_springbootvue项目…

AUTOSAR_EXP_ARAComAPI的7章笔记(2)

☞返回总目录 相关总结&#xff1a;服务发现实现策略总结 7.2 服务发现的实现策略 如前面章节所述&#xff0c;ara::com 期望产品供应商实现服务发现的功能。服务发现功能基本上是在 API 级别通过 FindService、OfferService 和 StopOfferService 方法定义的&#xff0c;协议…

计算机网络分析题

网络的布置 根据具体需求布置网络 第二小题、网络的划分 根据路由表作出路由器拓扑图 ARP跨网络寻址 TCP报文段格式概念 网桥的转发表与动作 网络嗅探报文 十六进制化作十进制 嗅探以太网帧首部 除MAC帧以外&#xff0c;其他各层协议数据单元都是源地址在前&#xff0c;目…

【初阶数据结构与算法】线性表之链表的分类以及双链表的定义与实现

文章目录 一、链表的分类二、双链表的实现1.双链表结构的定义2.双链表的初始化和销毁初始化函数1初始化函数2销毁函数 3.双链表的打印以及节点的申请打印函数节点的申请 4.双链表的头插和尾插头插函数尾插函数 5.双链表的查找和判空查找函数判空函数 6.双链表的头删和尾删头删函…

【AI写作宝-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…