单实例部署DDS

1.系统环境

操作系统:Centos 7

数据库:oracle11g

2.安装前准备

(1)root用户下创建dds用户

useradd -g oinstall -G oinstall,dba,oper dds
passwd dds

(2)设置dds环境变量

cp /home/oracle/.bash_profile /home/dds/
chown -R dds:oinstall /home/dds/

登录到dds用户,修改和添加.bash_profile文件参数,添加(NLS_LANG若存在就不加第一行

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export SHLIB_PATH=$ORACLE_HOME/lib
export LIBPATH=$ORACLE_HOME/lib:
export DDS_HOME=/data/dds/bin
export DDS_DATA=/data/dds/ds
export PATH=$PATH:$DDS_DATA:$DDS_HOME:.
ulimit -c unlimited


source .bash_profile

(3)创建目录

mkdir -p /data/dds/ds
chown -R dds:oinstall /data/dds
chmod -R 775 /data/dds

上传压缩包至:/data/dds

dds用户解压

tar -xvf dds2.13.9.9690.P18.ora11g.linux64.tar.bz2

源端:在创建的dds用户下执行

sqlplus / as sysdba

若报错:

解决参考:解决ORA-12705无法访问NLS问题_51CTO博客_ora12705 无法访问nls数据文件 

进入数据库:执行

@/data/dds/tools/setup-s.sql;
create or replace view XKCCLE as select * from sys.x$kccle;
create or replace view XKCCCP as select * from sys.x$kcccp;
alter database force logging;
alter database add supplemental log data;
alter database add supplemental log data (primary key, unique
index) columns;
create user dds1 identified by dds1;
create role dds_role identified by dds_role;
grant connect to dds_role;
grant lock any table to dds_role;
grant select any table to dds_role;
grant select any dictionary to dds_role;
grant alter system to dds_role;
grant execute on dbms_flashback to dds_role;
grant execute any type to dds_role;
grant dds_role to dds1;
grant connect to dds_role;
grant connect to dds1;
grant lock any table to dds1;
grant select any table to dds1;
grant select any dictionary to dds1;
grant alter system to dds1;
grant execute on dbms_flashback to dds1;
grant execute any type to dds1;
alter user dds1 quota 2m on users;
create table dds1.ddstemp( f1 int );
--alter system set "_log_parallelism_max"=1 scope = spfile;

重启实例: 

sqlplus / as sysdba
shutdown immediate
startup

3.源端生成配置软件

cd DDS_HOME
./dds_conf

配置启动软件参数的文件

vi $DDS_DATA/config/sys.cfg

LOGIN           dds1/dds1
SOURCE_ID       0
INTERVAL        2
SZSHM           8388608
#check_rac 1 --rac环境必须添加
COMM_PARAM      TCP:192.168.40.11:8203
WEB_PORT        8303
AuthStr         dds1/dds1
REDO_ARCH       50              (MB)
DISK_REMAIN     32              (MB)
WEB_REFRESH     600             (Seconds)
ALARM_COMM_DELAY 60             (Seconds)
ALARM_DIFF_OBJ   10             (Seconds)
LEN_LOG_BUF     5242880
LEN_LOG_ADD     0
Sequence        1
Procedure       1
View            1
MView           1
Privilege       1
Synonym         1
Index           1
Trigger         1
redoINocfs      0
dbfInASM        0
dml_mode        rowid
merge_dtf       0       (First Sync, 1: merge multi-files into 1 file)
max_lob_rows    128
delete_arch     0
#no_tbs tbs1,tbs2
alarm_comm_dtf     1000
alarm_merge_dtf    1000
alarm_track_delay  300  (Seconds)
large_part_num     20
large_part_blk     20000
lob_piece_len      8388608
szLog           104857600
DDS_NAME        source
# no_user               dds/dds2

#LogPath1 /arch1 --非归档模式不用
#LogPath2 /arch2 --非归档模式不用
#select name from v$archived_log;
CONFIG1 665694f4
CONFIG2 4ea7afe5a2fa630ef92d1eda01ec703a883599fc6a64a371796311b71f6926db

 编辑目标端地址参数的文件

 vim $DDS_DATA/config/tgt.cfg

#tgtID NextSendNo NextSaveNo Communication-Param  Web-Comm-Param    TcpFlow(KB/s)
# 1    0          0          TCP 192.168.1.1:8204   192.168.1.1:8304  0
  1    0          0          TCP 192.168.40.111:8204 192.168.40.111:8304

编辑同步对象配置文件

cat $DDS_DATA/config/map.cfg


# define the mapping
# Fields description
#   1. map_id ( must>0, if mapid<=0, means deleted )
#   2. tgt_id
#   3. map_type: [ db | user | table | group ]
#   4. state     [ stop | run | sync ]
#   5. source object
#             If map_type='db', It's user names which not to be exported
#             If map_type='user', It's user name, EX: testuser
#             if map_type='table', It's user and table name, EX: usr1.t1
#             if map_type='group', It's Group-Number
#             if map_type='users', It's users' name
#             if map_type='tables', It's tables' name
#   6. Options, Support options:
#      TNS=tns_val
# EX
#--------------------------------
# 1 1,2 USER   STOP user1
# 2 1,2 USER   STOP user2            tns=@db0a
# 3 1   TABLE  STOP user2.table001
# 4 1   GROUP  STOP 1
# 5 1   USERS  STOP hs_%%
# 6 1,2 TABLES STOP acct.acct_j%%
# 7 1,2 TABLES STOP bank%%.jour_
# 8 1,2 DB     STOP %SYS%,DDS%,XDB,DBSNMP,OUTLN,ANONYMOUS,MDDATA,SCOTT
#--------------------------------
  1 1 USER   STOP dds1
  2 1 USER   STOP HS_HIS

添加 sn.txt license 到$DDS_DATA/config 目录文件

源端配置完成。

4.目标端配置 

(1)root用户下创建dds用户

useradd -g oinstall -G dba,oper -s /bin/bash -d /home/ddszb -m ddszb
passwd ddszb

(2)设置dds环境变量

cp /home/oracle/.bash_profile /home/ddszb/
chown -R ddszb:oinstall /home/ddszb/

登录到dds用户,修改和添加.bash_profile文件参数,添加(NLS_LANG若存在就不加第一行

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export SHLIB_PATH=$ORACLE_HOME/lib
export LIBPATH=$ORACLE_HOME/lib:
export DDS_HOME=/data/ddszb/bin
export DDS_DATA=/data/ddszb/dt
export PATH=$PATH:$DDS_DATA:$DDS_HOME:.
ulimit -c unlimited


source .bash_profile

(3)在ddszb用户下执行创建工作目录

mkdir -p /data/ddszb/dt
chown -R dds:oinstall /data/ddszb
chmod -R 775 /data/ddszb

上传压缩包至:/data/ddszb

 (4)目标端:在新创建的 ddszb 用户下执行

sqlplus / as sysdba
show user ;

create user dds identified by dds default tablespace users;

grant dba to dds;

grant connect,resource to dds;

grant update on sys.seq$ to dds;
create user dds2 identified by dds2 default tablespace users;

Grant dba to dds2;

grant all on sys.seq$ to dds2;

create directory dds_lobdir as '/dds/lobdir';

grant read,write on directory dds_lobdir to dds2;

(5)目标端生成配置软件

cd $DDS_HOME
./dds_conf

 编辑系统配置文件

vim /data/ddszb/dt/config/tgt_sys.cfg

LOGIN           dds2/dds2
MULTI_SOURCE    1               (1 to 32)
DELAY           0
AUDIT           0
#check_rac 1 --不是rac不添加
COMM_PARAM      TCP:192.168.40.111:8204
AuthStr         dds2/dds2
szLog           104857600
RM_BLK_CNT      128
SOURCE          TCP:192.168.40.11:8203
SOURCE_WEB_PORT 8303
WEB_PORT        8304
DDS_NAME        target
PACKBAK         5       (Hours)
ReserveTableCNT 50
dbfInASM        1
dml_mode        rowid
load_user       0
diff_endian     0
#restart_mem    80  (MB)
#restart_dtf    300 (DTFs)
#dds_rb_hours   0   (Hours)
DISK_REMAIN     512             (MB)
SPLIT_TXN       0               (Commit each DTF)
trace_rowid   0

编辑目标系统配置文件

vim /data/ddszb/dt/config/tgt_map.cfg

#MapTYPE SourceOBJ TargetOBJ
#EX:
#USER  user1 user1_tgt
#TABLE usr1."abc"   usr1."xyz"
#
USER dds1 dds2

添加 sn.txt license 到$DDS_DATA/config 目录文件

 

(6)启动软件

源端:

cd $DDS_DATA
ddstart

目标端:

cd $DDS_DATA
ddstart

(7)数据同步

源端:

map_start

(8)常用命令

源端:
ddstart 启动软件
ddstop  关闭软件
vshms -m  查看同步用户列表
vshms -o  查看同步对象
vshms -t  查看同步到目标端的ip和程序端口
vshms -p  查看软件运行状态
vshms -c  查看源端软件配置
vs 查看实时日志
dds_pweb -s  启动源端web监控
dds_pweb -q  关闭源端web监控


目标端
ddstart 启动软件
ddstop  关闭软件
vshms -p  查看软件运行状态
vshms -c  查看源端软件配置
vt  查看实时日志
dds_pweb -t  启动目标端web监控
dds_pweb -q  关闭目标端web监控

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: OpenDDS是一个开源的分布式数据服务(DDS)实现,它作为OMG DDS标准的一个参考实现,具有高可靠性和可扩展性,是一种广泛应用于即时通信、物联网、分布式仿真等领域的通讯协议。下面将举例介绍OpenDDS的开发实例。 例1:即时通信系统开发 在即时通信系统中,实现数据实时同步是非常重要的,而OpenDDS提供了DDS协议的实现,可以满足即时性通信数据传输的需求。开发者可以使用OpenDDS中提供的IDL工具,创建IDL描述文档,然后通过OpenDDS提供的C++/Java开发环境进行开发,最终实现即时通信系统功能。 例2:医疗系统数据同步 在医疗系统中,各种设备产生的数据需要进行传输和同步,OpenDDS可以实现医疗设备之间的信息通信。例如,开发者可以利用OpenDDS提供的DDS协议实现心电图设备和监护设备的数据传输,实现数据的可靠传输和同步。 例3:物联网智能家居开发 在物联网智能家居中,需要对各种设备的数据进行实时采集和同步,OpenDDS可以实现设备之间的数据传输和同步。例如,开发者可以使用OpenDDS提供的DDS协议实现家庭温度传感器、照明控制等设备之间的数据传输,从而实现智能家居功能。 总之,OpenDDS具有较强的可扩展性和可靠性,在实际开发过程中可以满足各种数据传输和同步的需求。开发者可以根据具体的应用场景,使用OpenDDS提供的开发环境进行开发,实现相应的功能。 ### 回答2: OpenDDS是一个开源的分布式数据传输中间件,用于构建实时和分布式应用程序。它可以在各种平台上使用,具有高度灵活性和可扩展性。 一个使用OpenDDS开发的实例就是实现分布式卫星控制系统。在这个系统中,OpenDDS用于处理卫星发射、管道传输、数据传输和地面控制站之间的通信。卫星控制系统需要在地面控制站和卫星之间传输海量数据,包括信号和命令。 OpenDDS可以通过使用随机访问迭代器(Random Access Iterators)来优化数据传输性能,使得数据传输更加稳定和可靠。此外,OpenDDS还可以保持服务的可用性和数据的完整性,并支持服务的动态部署和配置。 在开发这种分布式卫星控制系统时,使用OpenDDS可以大大减少开发和维护成本,提高系统的可靠性和性能。OpenDDS还提供了丰富的API和代码库,使得开发人员可以更加方便地使用它来创建自己的分布式应用程序。 总之,OpenDDS是一个非常强大和灵活的中间件,可以用于各种实时和分布式应用程序的开发。它具有高度的扩展性和可靠性,可以大大简化应用程序的开发和维护工作,同时提高应用程序的性能和可用性。 ### 回答3: OpenDDS是一个开放的数据分发服务平台,它是C++语言编写的。它可以轻松快速的实现分布式应用程序的开发和管理。OpenDDS把数据分为多个主题,分别对不同类型的数据进行处理。下面,我们来看一个OpenDDS开发的实例。 假设我们要开发一个多人聊天室应用程序,这个应用程序可以让多个用户通过互联网进行文字聊天。我们需要使用OpenDDS来实现对多个用户消息的接收和发送。首先,我们需要设计消息数据格式。在这个聊天室应用程序中,我们需要使用消息主题作为数据的QoS(Quality of Service),这就保证了消息的实时性和可靠性,同时保证消息始终唯一。 接下来,我们需要在OpenDDS中配置消息传送的一些参数,如IP地址、端口号、消息类型等。在OpenDDS中,我们可以通过DDS规范中的IDL(Interface Definition Language)描述语言来定义消息类型、数据结构和接口定义。这些定义会生成对应的代码文件供我们使用。 最后,我们需要在OpenDDS中定义消息发布者和订阅者,以及它们之间的关系。在这个聊天室应用程序中,我们需要至少一个服务端和多个客户端。服务端负责将所有客户端发来的消息进行转发,而客户端负责接收和发送消息。定义好发布者和订阅者后,即可通过DDS中的API接口实现消息处理。通过使用OpenDDS来实现这个多人聊天室应用程序,我们能够实现消息的快速安全分发,同时可以确保消息的可靠性和实时性,为用户带来更好的聊天体验。 以上是一个简的OpenDDS开发实例。通过OpenDDS,我们可以快速、高效的实现分布式应用程序开发,满足不同场景下的数据传输要求,提高数据处理的效率和数据传输的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬不酸z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值