Oracle到DM8的DMHS部署
一. 前期准备
-
准备了两台Linux系统的虚拟机,已分别安装好Oracle 11和DM8数据库。
-
以下是对两台机器所做的部署规划:
服务 | 数据库 | IP地址 | 端口号 |
---|---|---|---|
DMHS源端 | Oracle | 192.168.61.131 | 5236 |
DMHS目的端 | DM8 | 192.168.61.132 | 1521 |
二. 目的端准备
1.开启归档日志
在bin目录下,使用disql连接到数据库,查询数据库是否开启了归档。
2.开启逻辑日
开启逻辑日志后,重启数据库生效。
将dm.ini中的参数“FAST_COMMIT”设置为0,防止逻辑日志不全影响同步。
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;
4.安装ODBC
使用以下命令安装ODBC:
yum -y install unixODBC
使用以下命令查看配置文件路径:
odbcinst -j
对配置进行以下修改:
修改命令如下: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
三. 源端准备
1. 开启归档日志
创建归档目录 mkdir opt/module/oracle/oradata/orcl/archlog
使用以下命令登录到数据库服务:
sqlplus / as sysdba
运行以下指令开启归档日志:
SQL> shutdown immediate # 关闭数据库服务
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; # 再次检查归档
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;
#再次检查附加日志
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;
3.关闭Oracle回收机制
使用以下命令检查 oracle 回收机制 :
SQL> show parameter recyclebin; #如果为on,需要关闭回收机制
SQL> alter system set recyclebin=off deferred;
需要重启数据库才能查看更新情况。
4.检查字符集是否一致
查询Oracle数据库字符集:
SQL> select userenv('language') from dual;
再查询系统字符集:
echo $NLS_LANG
如果该变量值为空或者与查询结果不一致,则将该变量设置为查询结果的值
vi ~/.bash_profile # 增加 export NLS_LANG=”sql查询结果”
source ~/.bash_profile
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;
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。`
四. 安装部署DMHS
1. 目的端(DM8)安装DMHS
创建dmhs文件目录
mkdir /opt/dmhs
将安装文件上传到虚拟机中,修改权限进行运行安装。
chmod +x dmhs_V4.3.06_dm8_rev124224_rh6_64_veri_20230214_sp2.bin
./dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin
进入图形化界面,按照默认推荐进行安装。
最后对安装信息进行校对。
对远程部署工具进行配置。
安装完成。
2.源端(Oracle)安装DMHS
按照同样的步骤运行bin文件并进行安装操作。
五. DMHS服务部署
1.目的端(DM8)部署
修改配置文件dmhs.hs:
vi /opt/dmhs/bin/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.61.132</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>8</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 TemplateDmhsService DmhsService
chmod +x DmhsService
修改DmhsService内容为:
#set execute environment
#REPLACE DMHS_HOME path
DMHS_HOME=/opt/dmhs/bin
#REPLACE program dir
PROG_DIR=/opt/dmhs/bin
#REPLACE program config path
CONF_PATH=/opt/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH NEED_LIB_PATH=
HS_NLS_LANG=“AMERICAN.AMERICA.AL32UTF8”
启动服务,到/opt/dmhs/bin目录下执行以下命令:
./dmhs_server dmhs.hs
start exec
DMHS> exec #启动 exec 模块
2.源端(Oracle)部署
修改配置文件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>
<version>2.0</version>
</base>
<cpt>
<db_type>oracle11g</db_type>
<db_server>192.168.61.131:1521/orcl</db_server>
<db_user>DMHS</db_user>
<db_pwd>DMHS</db_pwd>
<ddl_mask>op:obj</ddl_mask>
<char_code>PG_UTF8</char_code>
<constraint>1</constraint>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>192.168.61.132</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>DMHS.*</item>
</enable>
<disable>
</disable>
</filter>
<map>
<item>DMHS.*==DMHS.*</item>
</map>
</send>
</cpt>
</dmhs>
将模板文件,复制一份为正式服务并授权:
cp TemplateDmhsService DmhsService
chmod +x DmhsService
编辑文件:
vi DmhsService
修改内容如下:
#set execute environment
#REPLACE DMHS_HOME path DMHS_HOME=/home/oracle/dmhs/bin
#REPLACE program dir
PROG_DIR=/home/oracle/dmhs/bin
#REPLACE program config path CONF_PATH=/home/oracle/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH NEED_LIB_PATH=
HS_NLS_LANG=“AMERICAN_AMERICA.AL32UTF8”
启动服务,到/home/oracle/dmhs/bin目录下运行以下命令:
./dmhs_server dmhs.hs
clear exec lsn
COPY 0 "SCH.NAME='ORCL'" CREATE
COPY 0 "SCH.NAME='ORCL'" INSERT|THREAD|2
start cpt
六.验证
1.源端插入
创建表t2,并插入数据,提交数据。
2.目的端查询
查询插入的数据。