系统检查
尽量保证操作系统至少 1GB 的可用内存(RAM)。如果可用内存过少,可能导致 DMHS 安装或启动失败
Free -h
或者
grep MemTotal /proc/meminfo
#获取交换分区大小
grep SwapTotal /proc/meminfo
源端库前置工作
检查源端数据库管理系统所在机器,是否开启数据库管理系统的归档日志、附加日志;
如果需要 DDL 同步,还需要检查是否关闭数据库管理系统的回收站。
1) 检查归档日志
执行以下 SQL:
archive log list;
2) 检查附加日志
执行以下 SQL:
select supplemental_log_data_min, supplemental_log_data_all from v$database;
3) 检查回收站
执行以下 SQL:
show parameter recycle;
4) 检查同步用户权限
在 DMHS 捕获器中用于连接源端数据库管理系统的数据库用户,若没有 DBA 权限,则
至少应被赋予以下权限(SQL 执行):
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;
如果是 oracle12c 的用户, 默认登陆到 CDB 数据库容器下,创建用户和之前的版本略有
不同,所有用户前需要加上 C##,如之前的版本用户名为 dmhs, 12c 中创建用户名必须为C##dmhs。连接的用户不能仅授予 dba 的权限,必须要将 sys 下用到的所有表的权限一一授予连接用户(SQL 执行):
create user c##dmhs identified by dmhs;
grant connect to c##dmhs;
grant select any table to c##dmhs;
grant select any dictionary to c##dmhs;
grant create session to c##dmhs;
grant lock any table to c##dmhs;
grant execute on dbms_flashback to c##dmhs;
下载安装odbc
参考博文
查看并配置odbc
Odbcinst -j
vi /etc/odbc.ini
[ORACLE]
Driver = Oracle in OraDb11g_home1
SERVER = 127.0.0.1
UID = DMHS
PWD = dmhs
Servername = ORCL
PORT = 1521
vi /etc/odbcinst.ini
[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /data/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Threading = 0
验证odbc
安装11g的dmhs
[oracle@ORACLE11 ~]$ ./dmhs_V3.1.3_oracle_rev99507_rh6_64_veri_20210511.bin -i
Extract install files..........
过程略
其中有需要配置oracle字符集,选择oracle中查出的字符集进行配置:
--查询oracle字符集sql如下:
select userenv('language') from dual;
dmhs安装目录选择:/home/oracle/dmhs
源端11g配置
进入dmhs安装目录/home/oracle/dmhs的bin文件夹编辑配置文件
vi /home/oracle/dmhs/bin/dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base><!-- 管理模块的基本配置 -->
<lang>en</lang><!-- 语言选项,ch为中文,en为英文 -->
<mgr_port>5345</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->
<chk_interval>3</chk_interval><!-- 状态轮询间隔,默认为3s,最小值1s,最大值60s -->
<ckpt_interval>60</ckpt_interval><!--执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
<siteid>1</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
</base>
<cpt><!-- 这项配置可以配置多个,也就是可以配置多个捕获模块,如果该节点只作为执行端,该节点需要删除 -->
<db_type>Oracle11g</db_type><!-- 数据库类型,默认为dm7,限定值Oracle10g,Oracle11g,dm6,dm7 -->
<db_server>orcl</db_server><!-- 数据库实例名-->
<db_user>DMHS</db_user><!-- 数据库用户名,默认为SYSDBA -->
<db_pwd>dmhs</db_pwd><!-- 数据库口令,默认为SYSDBA -->
<db_port>1521</db_port><!-- 数据库端口号,默认为5236 -->
<idle_time>300</idle_time><!-- 分析线程空闲睡眠时间,默认值为300ms,最小值0ms,最大值65536ms -->
<ddl_mask>op:obj</ddl_mask><!-- 分析端是否支持DDL同步,可选项0(不支持DDL), 1(支持DDL),需要将安装脚本中对应的DDL脚本在源端执行-->
<parse_thr>1</parse_thr><!-- 分析线程个数,默认为1,最小值1,最大值32,多线程分析时,不支持ALTER TABLE操作同步 -->
<arch>
<clear_interval>600</clear_interval><!-- 归档文件清理间隔,默认为600s,最小值60s,最大值2000000000s -->
<clear_flag>1</clear_flag><!-- 清除归档日志的方式,可选项0(无动作), 1(删除归档文件), 2(表示移走归档文件)-->
<bak_dir></bak_dir><!-- clear_flag项配置成2时,该配置项可以用来指定归档文件转移的目录,如果未配置这项,则转移到归档路径的log_bak目录下 -->
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.80.129</ip><!-- 目的端IP,默认127.0.0.1 -->
<mgr_port>5365</mgr_port><!-- 目的端管理端口,默认为5345,最小值1000,最大值65535 -->
<data_port>5366</data_port><!-- 目的端数据接收端口号,默认为5346,最小值1000,最大值65535 -->
<level>0</level><!-- 复制级别,默认为0,最小值0,最大值65535 -->
<trigger>0</trigger><!-- 是否忽略触发器,默认为0,限定值0,1 -->
<constraint>0</constraint><!-- 是否忽略约束,默认为0,限定值0,1 -->
<identity>0</identity><!-- 是否忽略自增列,默认为0,限定值0(不忽略,插入同步过来的值),1(忽略,插入自增列自身的值) -->
<net_turns>0</net_turns><!-- 是否开启网闸模式,默认为0,限定值0(关闭),1(开启),网匝模式下,主机看不到备机的统计信息 -->
<filter><!-- 过滤,必须指定,一定要注意大小写,要跟源库中的对像名大小写保持一致 -->
<enable>
<item>TEST.*</item>
</enable>
</filter>
<map>
<item>TEST.*==TEST.*</item>
</map>
</send>
</cpt>
</dmhs>
开启dmhs服务
/home/oracle/dmhs/bin/dmhs_server /home/oracle/dmhs/bin/dmhs.hs
进入控制台初始化数据、开启捕获
/home/oracle/dmhs/bin/dmhs_console
--清目的端日志序列号
Clear exec lsn
--初始化数据
Copy 0 “sch.name=’TEST’”DICT|LSN|CREATE|INSERT
--开启捕获
Start cpt
--查看状态
State
更多dmhs参数配置可参考文档(该文档在安装dmhs的安装路径doc文件夹下):
DMHS参考手册.pdf
达梦技术社区:https://eco.dameng.com