1 准备阶段:
准备两台虚拟机:
源端:192.168.237.164
目的端:192.168.237.165
两台虚拟机分别安装好oracle版和dm版dmhs,在源端下载好oracle11g,目的端下载好dm8,下载流程在此不多做赘述
两台虚拟机都关闭防火墙:
systemctl stop firewalld
2 配置归档:
源端:
设置归档文件路径
lsnrctl start
sqlplus / as sysdba
startup mount
alter database archivelog;
alter system set db_recovery_file_dest='';
alter system set log_archive_dest='/opt/oracle/app/oracle/product/11.2.0/dbhome_1/archlog';
alter database open;
archive log list;
开启附加日志
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;
目的端:
开启归档
./disql SYSDBA/SYSDBA@localhost:5236
alter database mount;
alter database archivelog;
alter database open;
select arch_mode from v$database;
开启逻辑日志
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
SP_SET_PARA_VALUE(2, 'RLOG_APPEND_LOGIC',1);
alter system set 'RLOG_APPEND_LOGIC'=1 both;
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
3 创建测试数据
源端:
创建用户
create user DMHS identified by "DMHS" default tablespace USERS temporary tablespace TEMP profile DEFAULT;
grant connect 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 unlimited tablespace to DMHS;
grant create table to DMHS;
创建测试表并插入数据
conn DMHS/DMHS
Create table t1(id number);
Insert into t1 values(1);
4 配置ODBC
检查odbc是否下载:
odbcinst -j
若未安装:
yum -y install unixODBC unixODBC-devel
配置odbc:
vim /etc/odbcinst.ini
[Oracle in OraDb11g_home1]
Description = Oracle ODBC driver for Oracle 11g
Driver = /opt/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Threading = 0
vim /etc/odbc.ini
[ORACLE]
Description = Oracle ODBC driver for Oracle 11g
Driver= Oracle in OraDb11g_home1
SERVER = 192.168.237.164
ServerName = ORCL
UserID = DMHS
Password = DMHS
Port = 1521
检查是否缺依赖:
su - oracle
ldd /ora/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
缺少libodbcinst.so.1
find / -name libodbcinst*
选择一个将其拷贝到数据库的lib目录下
cp /usr/lib64/libodbcinst.so.2 /opt/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libodbcinst.so.1
isql -v ORACLE
若出现下图反馈,则配成完成
5 配置DMHS
目的端:
在dmhs目录下
find / -name libdmoci*
Cp 一份libdmoci.so到**/dmhs/bin目录下
在**/dmhs/bin目录下Vim dmhs.hs:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<chk_interval>2</chk_interval>
<ckpt_interval>45</ckpt_interval>
<siteid>4</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm8</db_type>
<db_server>192.168.237.165</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<char_code>PG_UTF8</char_code>
<db_name></db_name>
<exec_thr>2</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx>2000</exec_trx>
<exec_rows>2000</exec_rows>
<msg_col_size>30000</msg_col_size>
<ddl_continue>1</ddl_continue>
<affect_row>0</affect_row>
<exec_policy>2</exec_policy>
<enable_rowid>0</enable_rowid>
<clear_trx_file>1</clear_trx_file>
<trx_max_file>8</trx_max_file>
</exec>
</dmhs>
源端:
同样cp一份libdmoci.so到**/dmhs/bin目录下,并在**/dmhs/bin目录下Vim dmhs.hs:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base> <!-- 管理模块的基本配置 -->
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>3</siteid> <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<version>2.0</version>
</base>
<cpt> <!-- 捕获器模块,这项配置可以配置多个 -->
<db_type>ORACLE11g</db_type> <!-- 源端数据库类型 -->
<db_server>orcl</db_server> <!-- 源端数据库服务名,DM8和ORACLE为OCI连接的服务名,DM6为连接的服务器IP -->
<db_user>DMHS</db_user> <!-- 源端数据库用户名 -->
<db_pwd>DMHS</db_pwd> <!-- 用户的密码 -->
<db_port>1521</db_port> <!-- 源端数据库端口 -->
<ddl_mask>TABLE:VIEW:INDEX:OP</ddl_mask> <!--DDL配置项,写的是掩码,需同步DDL时使用,详见末尾-->
<arch> <!--归档信息配置,该标签是一个功能标签,需要配置它的子项-->
<clear_interval>600</clear_interval> <!--归档日志清理间隔,取值范围在60-65535,单位秒 -->
<clear_flag>0</clear_flag> <!--归档日志清理选项,选配0(不操作),默认为0 -->
</arch>
<send> <!-- 此处仅以发送到网络为例,其他配置详见本手册 4.2NET 发送子模块 -->
<ip>192.168.237.165</ip> <!-- 目标端dmhs的服务器ip -->
<mgr_port>5345</mgr_port> <!-- 目标端dmhs的管理端口号 -->
<data_port>5346</data_port> <!-- 目标端dmhs的data_port -->
<filter> <!-- 过滤配置项,必须指定 -->
<enable> <!-- 白名单,允许同步所有的表 -->
<item>DMHS.*</item> <!-- 要同步的模式名.表名,*代表所有 -->
</enable>
</filter>
<map> <!--映射配置项-->
<item>DMHS.*==TEST.*</item> <!-- 要同步的模式名,左边是源端,右边是目标端 -->
</map>
</send>
</cpt>
</dmhs>
6 开始同步
目的端:
进入到dmhs/bin目录下:
./dmhs_server dmhs.hs
start exec
源端:
进入到dmhs/bin目录下:
./dmhs_server dmhs.hs
clear exec lsn
COPY 0 "SCH.NAME='DMHS'" DICT|CREATE|INSERT
去目的端检查是否将测试数据同步过去:
开始实时数据抓取:
start cpt
请上达梦社区了解 https://eco.dameng.com