在本次实践中,需要将一套运行在 Oracle 19c 上的测试业务系统,实时同步至达梦 DM8 数据库。采用了达梦数据迁移平台 DMDFM + 数据实时同步服务 DRS的组合方案。该方案基于日志解析技术,能够在不侵入源库业务的前提下,实现 Oracle 到 DM8 的准实时数据同步,并通过 DMDFM 平台提供统一的监控和管理能力,大幅降低了异构数据库同步的运维复杂度。
本文记录了本次从环境准备、Oracle 安装、DMDFM 部署、DRS 配置到数据校验的全流程实践过程,希望能提供一份可参考的操作指南。
机器1:达梦目的库(192.168.244.142)
配置项 值
实例名 DFM01
端口 5237
数据目录 /home/dmdba/dmdbms/data/DFM01
SYSDBA 密码 Dmdba123!
DRS 用户/密码 DRS / Dmdba123!
机器2:DMDFM 管理平台(192.168.244.139)
配置项 值
访问地址 http://192.168.244.139:8080/dfm
默认账号/密码 admin / 123456
机器3:Oracle 源库(192.168.244.146)
配置项 值
实例 ORCLCDB / PDB: ORCLPDB1
端口 1521
SYS 密码 Oracle123!
DRS 用户/密码 DRS / Oracle123!
归档日志 开启,目录 /oradata/arch
DMDFM 代理配置
代理 IP SSH 用户/密码 JDK 路径
达梦代理 192.168.244.142 root / Dmdba123! /usr/lib/jvm/java-11-openjdk
Oracle 代理 192.168.244.146 root / Oracle123! /usr/lib/jvm/java-11-openjdk
DMDFM 数据源配置
数据源 类型 连接地址 用户/密码
Oracle_源库 Oracle 192.168.244.146:1521/ORCLPDB1 DRS / Oracle123!
DM_目的库 DM8 192.168.244.142:5237 DRS / Dmdba123!
在安装之前,查看系统环境配置,确保有4G内存和10G+磁盘,确定操作系统版本
cat /etc/os-release# 查看内存和磁盘(Oracle 需要至少 2G 内存,10G+ 磁盘)
free -h
df -h
查看主机名
hostnamectl
关闭防火墙
Systemctl stop firewalld
Systemctl disable firewaalld
Centos7的yum源已经停止维护,我们将其备份,采用Oracle Linux 7 yum源
cd /etc/yum.repos.d/
mkdir backup ##创建备份目录
mv *.repo backup/ ##备份
##配置新yum源
配置阿里云centos7源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
下载GPG密钥
yum install -y wget
##下载wget
wget --no-check-certificate -P
/etc/pki/rpm-gpg/ https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7
##跳过参数验证,下载GPG密钥
下载预安装包
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm --no-check-certificate
##预安装包下载
yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
##使用yum localinstal安装
oracle19c_免费高速下载|百度网盘-分享无限制
##安装包下载链接下载后上传到虚拟机,使用 yum localinstall 安装主包
yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm
##下载后上传到虚拟机,使用 yum localinstall 安装主包
输出如图,即视为安装成功。
设置环境变量
#查找安装位置
find /opt -name “sqlplus” -type f 2>/dev/null
设置 ORACLE_HOME
echo “export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1” >> ~/.bash_profile
echo “export PATH=$ORACLE_HOME/bin:$PATH” >> ~/.bash_profile
echo “export ORACLE_SID=ORCLCDB” >> ~/.bash_profile
source ~/.bash_profile
输出如图,即视为安装成功。
设置环境变量
查找安装位置
find /opt -name “sqlplus” -type f 2>/dev/null
echo “export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1” >> ~/.bash_profile
设置 PATH
echo “export PATH=$ORACLE_HOME/bin:$PATH” >> ~/.bash_profile
设置 ORACLE_SID(默认实例名)
echo “export ORACLE_SID=ORCLCDB” >> ~/.bash_profile
加载配置文件
source ~/.bash_profile
验证环境变量是否生效
echo $ORACLE_HOME # 应该输出 /opt/oracle/product/19c/dbhome_1
which sqlplus # 应该输出 /opt/oracle/product/19c/dbhome_1/bin/sqlplus
初始化并启动
su - oracle
执行静默建库,时间较长
/opt/oracle/product/19c/dbhome_1/bin/dbca -silent -createDatabase
-templateName General_Purpose.dbc
-gdbname ORCLCDB -sid ORCLCDB
-characterSet AL32UTF8
-sysPassword Oracle123! -systemPassword Oracle123!
-createAsContainerDatabase true
-numberOfPDBs 1 -pdbName ORCLPDB1 -pdbAdminPassword Oracle123!
CDB(容器数据库):实例名 ORCLCDB,管理员用户 SYS/SYSTEM,密码 Oracle123!
PDB(可插拔数据库):实例名 ORCLPDB1,管理员密码 Oracle123!
业务数据建议存放在 PDB 中(ORCLPDB1),而不是 CDB
如图所示,创建完成。
检验是否成功
##启动监听
lsnrctl start
如图,监听已经启动成功
##验证数据库连接
Sqlplus / as sysdba
状态为open,代表数据库正常运行。
至此,Oracle的安装建库流程已经全部完成。
上传dmdfm的安装包,选择静默安装
##给安装包添加执权限
Chmod +x dmdfm_rev223997_x86_rh6_64_20260617.bin
##执行静默安装
./dmdfm_rev223997_x86_rh6_64_20260617.bin -i
填写信息:
安装目录:/home/dmdba/dmdfm5
代理ip:192.168.244.139
管理平台端口:8080
输出如图,即安装完成。
查看dmdfm5文件夹,Db为存放内置库相关的文件,doc存放文档资料,jdk存放内置的java运行环境,scripts存放运维或者功能脚本,tool存放辅助工具,web存放web应用部署目录,log存放运行日志。
启动DMDFM Web服务
cd /home/dmdba/dmdfm5/web
./DfmWebService start ##启动web服务
ss -tlnp |grep 8080 ##查看8080端口是否正在被监听
查看到8080被监听,就可以打开
http://192.168.244.139:8080网站进行登录
进入网站后,选择新建代理,选择远程安装部署,输入源库与目的库的各种信息
点击安装即可。
如下图所示,已经安装成功。
在agent文件夹可以看到建立的相关文件配置
此时,源库与目的库都能看到相关的文件配置,即代理都已经安装完成。
5.添加DRS用户和权限
在安装完DFM服务器和agent代理后,需要创建同步专用数据库账户,遵循最小权限原则,授予数据同步所需的查询、锁表、回退等必要权限,用于DMDRS服务连接数据库进行数据读取和写入
System / as sysdba ##登录
SQL>aechive log list; ##查看归档是否开启
– 1. 开启最小附加日志
alter database add supplemental log data;
– 2. 开启全列附加日志
alter database add supplemental log data (ALL) columns;
– 3. 开启 Xstream 同步
alter system set enable_goldengate_replication = TRUE;
–4。验证附加日志是否开启
select supplemental_log_data_min from vdatabase;selectsupplementallogdataallfromvdatabase;
都返回yes说明附加日志已经成功开启。
– 1. 切换到 PDB
alter session set container=ORCLPDB1;
– 2. 创建 DRS 用户
create user DRS identified by “Oracle123!”;
– 3. 授予基础权限
grant connect, resource to DRS;
开始执行大量GRANT授权,于授予 DRS 用户读取 Oracle 系统表、动态视图、归档日志及执行闪回查询等必要能力,以支持 DMDRS 实时捕获源端数据变更,且严格遵循最小权限原则,仅开放读取权限,不授予任何数据修改权限,确保源库安全性。
GRANT SELECT ON SYS.OBJ$ TO DRS;
GRANT SELECT ON SYS.TAB$ TO DRS;
GRANT SELECT ON SYS.USER$ TO DRS;
GRANT SELECT ON SYS.NTAB$ TO DRS;
GRANT SELECT ON SYS.SEG$ TO DRS;
GRANT SELECT ON SYS.EXTERNAL_TAB$ TO DRS;
GRANT SELECT ON DBA_CONS_COLUMNS TO DRS;
GRANT SELECT ON DBA_CONSTRAINTS TO DRS;
GRANT SELECT ON SYS.COLTYPE$ TO DRS;
GRANT SELECT ON SYS.TYPE$ TO DRS;
GRANT SELECT ON SYS.ATTRIBUTE$ TO DRS;
GRANT SELECT ON SYS.COLLECTION$ TO DRS;
GRANT SELECT ON SYS.PARTOBJ$ TO DRS;
GRANT SELECT ON SYS.COM$ TO DRS;
GRANT SELECT ON V_DATABASETODRS;GRANTSELECTONSYS.CON TO DRS;
GRANT SELECT ON SYS.IND$ TO DRS;
GRANT SELECT ON SYS.COL$ TO DRS;
GRANT SELECT ON SYS.CCOL$ TO DRS;
GRANT SELECT ON SYS.TS$ TO DRS;
GRANT SELECT ON SYS.DEFERRED_STG$ TO DRS;
GRANT SELECT ON SYS.SUBPARTCOL$ TO DRS;
GRANT SELECT ON SYS.SEQ$ TO DRS;
GRANT SELECT ON DBA_INDEXES TO DRS;
GRANT SELECT ON DBA_IND_COLUMNS TO DRS;
GRANT SELECT ON SYS.PARTCOL$ TO DRS;
GRANT SELECT ON SYS.DEFSUBPART$ TO DRS;
GRANT SELECT ON SYS.SOURCE$ TO DRS;
GRANT SELECT ON SYS.TYPED_VIEW$ TO DRS;
GRANT SELECT ON SYS.VIEW$ TO DRS;
GRANT SELECT ON SYS.SYN$ TO DRS;
GRANT SELECT ON SYS."ALL_SYNONYMS_TREE" TO DRS;
GRANT SELECT ON DBA_EXTENTS TO DRS;
GRANT SELECT ON SYS.SNAP$ TO DRS;
GRANT SELECT ON SYS.SUM$ TO DRS;
GRANT SELECT ON VPARAMETERTODRS;GRANTSELECTONSYS.TRIGGER TO DRS;
GRANT SELECT ON SYS.V_THREAD TO DRS;
GRANT SELECT ON V_DATABASE_INCARNATION TO DRS;
GRANT SELECT ON V_TRANSACTION TO DRS;
GRANT SELECT ON V_LOCKED_OBJECT TO DRS;
GRANT SELECT ON GV_TRANSACTION TO DRS;
GRANT SELECT ON GV_LOCKED_OBJECT TO DRS;
GRANT SELECT ON DBA_PART_INDEXES TO DRS;
GRANT SELECT ON SYS.LOBCOMPPART$ TO DRS;
GRANT SELECT ON SYS.PARTLOB$ TO DRS;
GRANT SELECT ON SYS.ECOL$ TO DRS;
GRANT SELECT ON SYS.ATTRCOL$ TO DRS;
GRANT SELECT ON SYS.ICOL$ TO DRS;
GRANT SELECT ON SYS.METHOD$ TO DRS;
GRANT SELECT ON SYS.RESULT$ TO DRS;
GRANT SELECT ON SYS.PARAMETER$ TO DRS;
GRANT SELECT ON V_CONTAINERS TO DRS;
GRANT SELECT ON V_MANAGED_STANDBY TO DRS;
GRANT SELECT ON V_DATAGUARDCONFIGTODRS;GRANTLOCKANYTABLETODRS;GRANTFLASHBACKANYTABLETODRS;GRANTEXECUTEONDBMSFLASHBACKTODRS;GRANTSELECTONSYS.COL TO DRS;
GRANT SELECT ON SYS.LOB$ TO DRS;
GRANT SELECT ON SYS.TABPART$ TO DRS;
GRANT SELECT ON SYS.TABCOMPART$ TO DRS;
GRANT SELECT ON SYS.LOBFRAG$ TO DRS;
GRANT SELECT ON V_LOGFILE TO DRS;
GRANT SELECT ON V_LOG TO DRS;
GRANT SELECT ON V_ARCHIVEDLOGTODRS;GRANTSELECTONSYS.CDEF TO DRS;
GRANT SELECT ON SYS.TABSUBPART$ TO DRS;
GRANT SELECT ON SYS.CCOL$ TO DRS;
GRANT SELECT ON SYS.TS$ TO DRS;
GRANT SELECT ON SYS.TYPE$ TO DRS;
GRANT SELECT ON SYS.ATTRIBUTE$ TO DRS;
GRANT SELECT ON SYS.COLLECTION$ TO DRS;
GRANT SELECT ON V_SESSION TO DRS;
GRANT SELECT ON V_SESSTAT TO DRS;
GRANT SELECT ON V_STATNAME TO DRS;
GRANT SELECT ON V_STANDBY_LOG TO DRS;
GRANT SELECT ON V_INSTANCE TO DRS;
GRANT SELECT ON GV_INSTANCE TO DRS;
GRANT SELECT ON XDB.XDB$TTSET TO DRS;
授权之后,Oracle端的DRS用户创建与授权即视为完成。
– 1. 开启逻辑日志(DMDRS 必需)
SP_SET_PARA_VALUE(1, ‘RLOG_APPEND_LOGIC’, 1);
– 2. 创建 DRS 用户
CREATE USER “DRS” IDENTIFIED BY “Dmdba123!”;
– 3. 授予权限
GRANT PUBLIC, VTI, SOI TO DRS;
GRANT CREATE ANY TABLE TO DRS;
GRANT CREATE ANY PROCEDURE TO DRS;
GRANT SELECT ANY TABLE TO DRS;
GRANT SELECT ANY VIEW TO DRS;
GRANT SELECT ANY DICTIONARY TO DRS;
GRANT ALTER ANY TABLE TO DRS;
GRANT INSERT ANY TABLE TO DRS;
GRANT DELETE ANY TABLE TO DRS;
GRANT UPDATE ANY TABLE TO DRS;
GRANT DROP ANY TABLE TO DRS;
GRANT COMMENT ANY TABLE TO DRS;
验证用户权限
SELECT PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = ‘DRS’;
SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = ‘DRS’;
#6.添加数据源
登录DMDFM,左侧导航栏点击 数据源管理–>关系数据库–>新增数据源
分别填写源Oracle库信息
目的DM库信息
在填写信息之后,点击测试连接,若测试通过,则信息正确
同时预检查,可以察看哪些要求是需要开启的
可根据需要去进行配置和修改
DRS 服务是 DMDFM 平台执行数据同步的核心引擎,需分别在 Oracle 源库主机和 DM 目的库主机上完成安装部署。安装完成后,各节点上的 DRS 服务将协同工作,实现数据的实时同步。
在DMDFM平台,导航栏–运维–服务管理–远程安装DMDRS,上传版本,填写相关信息,即可远程安装
如果无法远程安装,参考以下手动安装
将安装包上传到机器后,此处采用dmdrs_rev218265_x86_rh6_64_20260409.bin文件
cd /home/oracle # Oracle 机器
cd /home/dmdba # DM 机器
chmod +x dmdrs_rev218265_x86_rh6_64_20260409.bin
./dmdrs_rev218265_x86_rh6_64_20260409.bin -i
ls -la /home/oracle/dmdrs5/bin/drsvr # 确认可执行文件存在
配置服务脚本
cd /home/oracle/dmdrs5/bin # 进入 bin 目录
cp service_template/TemplateService DrsService
修改服务脚本参数
vi DrsService
Oracle 源端配置:
INSTALL_HOME=/home/oracle/dmdrs5
PROG_DIR=/home/oracle/dmdrs5/bin
CONF_PATH=/home/oracle/dmdrs5/bin/cpt.xml
NEED_LIB_PATH=/opt/oracle/product/19c/dbhome_1/lib # Oracle 客户端库路径
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME=“drs server”
DM 目的端配置:
INSTALL_HOME=/home/dmdba/dmdrs5
PROG_DIR=/home/dmdba/dmdrs5/bin
CONF_PATH=/home/dmdba/dmdrs5/bin/exec.xml
NEED_LIB_PATH=/home/dmdba/dmdbms/bin # DM 数据库 bin 目录
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME=“drs server”
添加执行权限:
chmod +x DrsService
创建配置文件
Oracle 源端配置文件(cpt.xml)
vi /home/oracle/dmdrs5/bin/cpt.xml
<?xml version=“1.0” encoding=“UTF-8”?>
<drs>
<base>
<mgr_port>5346</mgr_port>
<siteid>2</siteid>
</base>
<cpt>
<name>cpt_oracle</name>
<login>
<dbtype>oracle</dbtype>
<server>192.168.244.146</server>
<user>DRS</user>
<pwd>Oracle123!</pwd>
<port>1521</port>
<service>ORCLPDB1</service>
</login>
</cpt>
</drs>
DM 目的端配置文件(exec.xml)
vi /home/dmdba/dmdrs5/bin/exec.xml
<?xml version=“1.0” encoding=“UTF-8”?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
</base>
<exec>
<name>exec_dm8</name>
<login>
<dbtype>dm8</dbtype>
<server>192.168.244.139</server>
<user>DRS</user>
<pwd>Dmdba123!</pwd>
<port>5237</port>
</login>
</exec>
</drs>
启动 DRS
cd /home/oracle/dmdrs5/bin # 或 /home/dmdba/dmdrs5/bin
./DrsService start
./DrsService status
验证端口监听
ss -tlnp | grep 5346 # 源端
ss -tlnp | grep 5345 # 目的端
纳管已安装的 DRS 到 DMDFM 平台
此时在代理机器上手动安装的DRS,在DFM平台上无法识别,我们需要手动将其纳入DFM平台的管理中。
vi /home/dmdba/dmdfm5/conf/services.xml # 路径可能因版本而异
<service>
<id>1</id>
<ip>192.168.244.146</ip>
<install_path>/home/oracle/dmdrs5</install_path>
<drs_port>5346</drs_port>
<status>1</status>
</service>
重启 Web 服务
cd /home/dmdba/dmdfm5/web
./DfmWebService restart
来到DMDFM平台,检查数据源,测试连接,并启动代理
创建同步工程:左侧导航栏–同步工程概括–新建工程—输入工程名称和描述
点击部署服务
点击启动,启动之后,如果同步处于运行中,即可开始装载数据
选择装载类型和装载的对象
点击立即装载之后,可以见到装载成功。
此时数据已经装载成功。
可以通过查看装载日志,检查是否存在问题
Oracle源库存在两条测试数据
DM目的库现在同样存在了两条测试数据
在Oracle源库插入一条数据
直接去DM目的库查询,同样可以查询到新插入的数据
至此,dmdfm的安装部署,oracle到DM的同步实践已经完成。
文章
阅读量
获赞
