Oracle到DM8的DMHS部署

1 集群规划

服务器IP规划

类别数据库服务器地址
DMHS源端Oracle192.168.50.139
DMHS目的端DM8192.168.50.134

2 集群安装部署

2.1 安装数据库

自行安装Oracle与DM数据库,本文使用的是Oracle 11g与DM8。

2.2 Oracle源端准备

2.1.1 开启归档日志

创建归档目录

mkdir opt/module/oracle/oradata/orcl/archlog

使用以下命令登录到数据库服务:

sqlplus / as sysdba

运行以下指令开启归档日志:

SQL> startup mount	# 以 mount 方式启动 oracle 数据库
SQL> alter database archivelog; # 开启归档
SQL> alter system set db_recovery_file_dest='';
SQL> alter system set log_archive_dest='/opt/oracle/oradata/orcl/archlog'; # 设置归档文件路径(如果使用本地路径存放归档日志,需要将 db_recovery_file_dest 参数置空,然后设置log_archive_dest 参数)
SQL> alter database open; # 恢复为 open 状态
SQL> archive log list; # 再次检查归档

注意:如果安装Oracle后未开启过数据库,需要先正常开启数据库,关闭后再以 mount 方式启动 oracle 数据库。

2.2.2 开启附加日志

附加日志(supplemental log)指数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,进行数据的分析。
检查附加日志:

SQL> select SUPPLEMENTAL_LOG_DATA_MIN min,SUPPLEMENTAL_LOG_DATA_PK pk,SUPPLEMENTAL_LOG_DATA_UI ui,SUPPLEMENTAL_LOG_DATA_FK fk, SUPPLEMENTAL_LOG_DATA_ALL "all" from v$database;

开启数据库最小附加日志级全列日志。

SQL> alter database add supplemental log data;
SQL> alter database add supplemental log data (all) columns;

2.2.3 关闭Oracle回收机制

使用以下命令检查 oracle 回收机制 :

SQL> show parameter recyclebin; #如果为on,需要关闭回收机制
SQL> alter system set recyclebin=off deferred;

需要重启数据库才能查看更新情况。

2.2.4 检查字符集是否一致

查询Oracle数据库字符集

SQL> select userenv('language') from dual;

再查询系统字符集

echo $NLS_LANG

如果该变量值为空或者与查询结果不一致,则将该变量设置为查询结果的值

vi ~/.bash_profile # 增加 export NLS_LANG=”sql查询结果”
source ~/.bash_profile

2.2.5 创建同步用户

SQL> create user DMHS identified by "DMHS" default tablespace USERS temporary tablespace TEMP profile DEFAULT;
SQL> grant connect to DMHS;
SQL> grant create any table to DMHS; SQL> grant select any table to DMHS;
SQL> grant select any dictionary to DMHS; SQL> grant create session to DMHS;
SQL> grant lock any table to DMHS;
SQL> grant execute on dbms_flashback to DMHS; SQL> grant unlimited tablespace to DMHS;

2.2.6 安装ODBC

切换root用户安装ODBC

yum -y install unixODBC

配置unixODBC,新增odbc.ini文件,并添加以下内容:

[ORACLE]
Description = Oracle ODBC driver for Oracle 11g Driver= Oracle in OraDb11g_home1
SERVER = 192.168.61.131 ServerName = orcl
UserID = DMHS Password = DMHS Port = 1521

配置 odbcinst.ini 文件,新增以下内容:

[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /opt/module/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1 Threading = 0

配置完成之后,切换到 oralce 用户测试, 使用isql 命令测试配置是否正确。isql -v ORACLE DMHS DMHS。

2.3 DM8目的端准备

2.2.1 开启归档日志

在bin目录下,使用disql连接到数据库,查询数据库是否开启了归档。

SQL> select arch_mode from v$database;

使用SYSDBA连接登录数据库执行以下语句开启归档日志。其中DEST为归档日志存放目录,需要提前创建好,FILE_SIZE为单个归档文件大小,SPACE_LIMIT为归档目录日志目录大小限制.

SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm/data/dmarch/DMHS,TYPE=LOCAL,SPACE_LIMIT=0';
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

2.2.2 开启逻辑日志

开启逻辑日志后,重启数据库生效。

SQL> SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);

将dm.ini中的参数“FAST_COMMIT”设置为0,防止逻辑日志不全影响同步。

2.2.3 创建同步用户

SQL> create user DMHS identified by "DMHS@1234" default tablespace MAIN temporary tablespace TEMP;
SQL> grant resource to DMHS;
SQL> grant select any table to DMHS; 
SQL> grant dba to DMHS;
SQL> grant unlimited tablespace to DMHS;

2.2.4 安装ODBC

yum -y install unixODBC

对配置进行以下修改:

修改命令如下:

vi /etc/odbcinst.ini

[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8 Driver = /dm8/bin/libdodbc.so

vi /etc/odbc.ini,
#添加以下内容:
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

测试连接效果,使用 dmdba 用户执行 isql 测试连接是否正常:

isql dm8 -v

3 安装部署DMHS

两端都需要安装DMHS

3.1 源端配置dmhs.hs

vi /home/oracle/dmhs/bin/dmhs.hs

#添加以下内容:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
 <base>    <!-- 管理模块的基本配置 -->
  <lang>en</lang>
  <mgr_port>5345</mgr_port>
  <ckpt_interval>45</ckpt_interval>
  <siteid>1</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.50.134</ip>    <!-- 目标端dmhs的服务器ip -->
   <mgr_port>5345</mgr_port>    <!-- 目标端dmhs的管理端口号 -->
   <data_port>5346</data_port>    <!-- 目标端dmhs的data_port -->
   <filter>    <!-- 过滤配置项,必须指定 -->
    <enable>    <!-- 白名单,允许同步所有的表 -->
     <item>TEST.*</item>    <!-- 要同步的模式名.表名,*代表所有 -->
    </enable>
   </filter>
   <map>    <!--映射配置项-->
    <item>TEST.*==TEST.*</item>    <!-- 要同步的模式名,左边是源端,右边是目标端 -->
   </map>
  </send>
 </cpt>
</dmhs>

3.2 目的端配置dmhs.hs

vim dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
 <base>    <!-- 管理模块的基本配置 -->
    <lang>en</lang>    <!-- 语言选项,ch 为中文,en 为英文 -->
    <mgr_port>5345</mgr_port>    <!-- 管理端口号,默认为5345-->
    <ckpt_interval>60</ckpt_interval>    <!-- 检查点间隔,默认60 -->
    <siteid>2</siteid>    <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
    <version>2.0</version>
</base>
<exec>    <!-- 执行模块的基本配置 -->
  <recv>
    <data_port>5346</data_port>    <!-- 当数据传递采用网络直连时,需要配置该参数,表明同步数据从该端口号获取。 -->
  </recv>
  <db_type>dm8</db_type>    <!-- 目标端数据库类型 -->
  <db_server>192.168.50.134</db_server>    <!-- 目标端数据库服务名或IP -->
  <db_user>DMHS</db_user>    <!-- 目标端数据库用户 -->
  <db_pwd>DMHS@1234</db_pwd>    <!-- 用户的密码 -->
  <db_port>5236</db_port>    <!-- 目标端数据库端口 -->
  <db_name></db_name>    <!-- 默认数据库名,默认为空串(只针对dm6有用)-->
  <exec_thr>4</exec_thr>    <!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为1 -->
  <exec_sql>1024</exec_sql>    <!-- SQL 缓存大小,默认为 512M -->
  <exec_trx> 5000 </exec_trx>    <!-- 事务缓存个数,默认为 5000 -->
  <exec_rows>1000</exec_rows>    <!-- 批量绑定行数,默认为 250 -->
 </exec>
</dmhs>

3.3 目的端开启,验证dmhs

开启dmhs

./dmhs_server dmhs.hs

验证dmhs,新开一个会话窗口,上面server的会话窗口不要最小化,放到方便查看的地方

./dmhs_console

DMHS> connect 127.0.0.1:5345
execute success


DMHS> start exec
execute success

此时查看server的窗口,没有报错就ok

error in load libodbcinst.so!!: No such file or directory
EXE[INFO]: CONNECT: SERVER=192.168.50.134;DRIVER=DM8 ODBC DRIVER;UID=DMHS;PWD=******;TCP_PORT=5236;
EXE[INFO]: EXEC_V3.1.2_D64
EXE[INFO]: create execute thread 1, enable merge:TRUE
EXE[INFO]: create execute thread 2, enable merge:TRUE
EXE[INFO]: create execute thread 3, enable merge:TRUE
EXE[INFO]: create execute thread 4, enable merge:TRUE
REV[INFO]: exec server data receiving thread created successfully, listening data port : 5346
MGR[INFO]: monitor  127.0.0.1(dmhs_console) 's login
MGR[INFO]: connection from 127.0.0.1(dmhs_console) has broken!
MGR[INFO]: monitor  127.0.0.1(dmhs_console) 's login

3.4 源端开启,验证dmhs

开启dmhs

./dmhs_server dmhs.hs

注意:先开启目的端exec,再开启源端cpt,否则报错连不上目的端

验证dmhs,新开一个会话窗口,上面server的会话窗口不要最小化,放到方便查看的地方

./dmhs_console

DMHS> connect 127.0.0.1:5345
execute success


DMHS> clear exec lsn
execute success


DMHS> LOAD 0 "SCH.NAME='TEST' AND TAB.NAME='T1'" DICT|CREATE|INSERT

此时源端会将模式TEST下的表T1进行装载。(T1表提前建了,若没建的可返回去创建或把TAB.NAME改成别的表,SCH.NAME=是表所在模式,也改下使其对应)

因为dmhs是装载的redo日志,所以如果T1的redo日志没了会装不上,因此可以再建一张表并插入一点数据使其生成redo日志,同时别忘了修改TAB.NAME=‘新表名’,和SCH.NAME=‘新表所在模式’

查看源端server会话窗口,有没有报错,没有报错表示正常。

查看目的端server是否报错,没有报错表示正常。

打开disql或者manager连接达梦数据库DM8,查看刚才那张表T1是否有同步过来。

3.5 启动cpt,开启实时同步

DMHS> start cpt
execute success

此时可连接源端oracle数据库再新建一两张表并插入一些数据,看看目的端是否都同步完成。

执行start cpt后,若没有需要同步的redo日志就会报错,属正常现象。

必须先装载日志,即执行COPY或LOAD语句,才能执行start cpt,否则报错。

至此,DMHS部署完成。

达梦数据库 | 达梦在线服务平台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值