一、引言
DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。 DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
二、DMDSC概述
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。 数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
三、前期准备
3.1硬件准备
服务器 | 2台数据库虚拟机 |
---|---|
操作系统 | Linux dmtest1-10-0-0-1.novalocal 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
网卡 | 每台1块网卡 |
磁盘阵列 | 共享存储,两台虚拟机都连接到同一个存储上(共享存储只需要映射到服务器端fdisk -l可以查看到就行,不需要格式化)。归档日志和备份数据在本地。 |
存储规划 | 20G配置文件, 20G配置文件, 100G存储LOG文件 , 其他存放数据文件 , 将归档日志和备份文件放在数据库本地磁盘。 |
3.2修改系统参数
[root@dmtest1-10-0-0-1 ~]# ulimit –n 65536
[root@dmtest1-10-0-0-1 ~]# vi /etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft stack 65536
dmdba hard stack 65536
[root@dmtest1-10-0-0-1 ~]# vi /etc/profile
ulimit -SHn 65536
[root@dmtest1-10-0-0-1 ~]# vi /etc/sysctl.conf
[root@dmtest1-10-0-0-1 ~]# sysctl -p
vm.swappiness = 0
3.3关闭防火墙
关闭防火墙,并禁止防火墙服务开机自启。
[root@dmtest1-10-0-0-1 ~]# service iptables stop
[root@dmtest1-10-0-0-1 ~]# service iptables disable
注意:两台机器均需要修改。
四、创建目录并安装数据库
4.1 dmtest1-10-0-0-1.novalocal机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/dm/dmdbms/dmdbms目录下;详细安装步骤参考
https://eco.dameng.com/document/dm/zh-cn/ops/installation-install.html
4.2 dmtest2-10-0-0-2.novalocal机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/dm/dmdbms/dmdbms目录下;
五、存储准备
5.1划存储
用途 | 空间规划 |
---|---|
vdb1用于存放dcr配置信息 | 20G |
vdb2用于存放vote信息 | 20G |
vdb3用于存放redo log | 100G |
vdb4用于存放data | 其余空间 |
fdisk /dev/vdb
1) 依次输入 n p 1 回车 +20480M,完成第一块磁盘划分
2) 依次输入 n p 2 回车 +20480M,完成第二块磁盘划分
3) 依次输入 n p 3 回车 +102400M,完成第三块磁盘划分
4) 依次输入 n p 回车 回车 回车,完成第四块磁盘划分
5) 输入w命令,将裸设备划分的设置进行保存
5.1.1 挂存储方法一:
[root@dmtest2-10-0-0-2 raw]# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="fa:16:3e:40:0c:3d", NAME="eth0"
ACTION=="add", KERNEL=="vdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="vdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="vdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="vdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dmdba", MODE="660"
[root@dmtest2-10-0-0-2 raw]#chown dmdba:dinstall /dev/raw/raw*
[root@dmtest2-10-0-0-2 raw]#chmod 660 /dev/raw/raw*
5.1.2挂存储方法二:
手动执行类似如下命令,“vdb”等换成实际的裸设备名称;
raw/dev/raw/raw1 /dev/vdb1
raw/dev/raw/raw2 /dev/vdb2
raw/dev/raw/raw3 /dev/vdb3
raw/dev/raw/raw4 /dev/vdb4
chown dmdba:dinstall /dev/raw/raw*
chmod 660 /dev/raw/raw*
[root@dmtest1-10-0-0-1 ~]# blockdev --getsize64 /dev/raw/raw*
21474836480
21474836480
107374182400
386546008064
blockdev: ioctl error on BLKGETSIZE64: Invalid argument
六、搭建DSC
6.1 配置 dmdcr_cfg.ini
在/dm/dmdbms/data/DAMENG下新建dmdcr_cfg.ini文件;
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 45330
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 10.0.0.1
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.0.0.2
DCR_EP_PORT = 9343
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.0.0.1
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.0.0.2
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
6.2初始化磁盘组
注意:两台机器该文件相同。
[dmdba@dmtest1-10-0-0-1 bin]$ ./dmasmcmd
DMASMCMD V8
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
ASM>create votedisk '/dev/raw/raw2' 'vote'
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
[Trace]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDATA0
Used time: 1.913(ms).
ASM>Init dcrdisk '/dev/raw/raw1' from '/dm/dmdbms/data/DAMENG/DAMENG/dmdcr_cfg.ini' identified by 'abcd'
[Trace]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
[Trace]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 128.247(ms).
ASM>Init votedisk '/dev/raw/raw2' from '/dm/dmdbms/data/DAMENG/DAMENG/dmdcr_cfg.ini'
[Trace]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
[Trace]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 63.869(ms).
注意:以上初始化只需在一个节点上执行。
6.3 配置 dmasvrmal.ini
在/dm/dmdbms/data/DAMENG/DAMENG下新建dmasvrmal.ini文件;
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.0.0.1
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.0.0.2
MAL_PORT = 7237
注意:两台机器该文件相同。
6.4配置 dmdcr.ini
在dmtest1-10-0-0-1机器的/dm/dmdbms/data/DAMENG下新建dmdcr.ini文件;
DMDCR_PATH= /dev/raw/raw1
DMDCR_MAL_PATH= /dm/dmdbms/data/DAMENG/dmasvrmal.ini
DMDCR_SEQNO= 0
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dmdbms/bin/dmasmsvr dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dmdbms/bin/dmserver path=/dm/dscdata/dsc0_config/dm.ini dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
在dmtest2-10-0-0-2 机器的/dm/dmdbms/data/DAMENG下新建dmdcr.ini文件;
DMDCR_PATH= /dev/raw/raw1
DMDCR_MAL_PATH= /dm/dmdbms/data/DAMENG/dmasvrmal.ini
DMDCR_SEQNO= 1
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dmdbms/bin/dmasmsvr dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dmdbms/bin/dmserver path=/dm/dscdata/dsc1_config/dm.ini dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
注:
dmdcr.ini中先将ASM和DMSERVER配置为手动服务,待所有配置完成后,再修改dmdcr.ini将ASM和DMSERVER配置成自动拉起。
节点一:DMDCR_SEQNO =0
节点二:DMDCR_SEQNO =1
6.5 启动DMCSS、DMASM 服务程序
6.5.1分别在2个节点注册DMCSS和DMASM服务
节点一:
[root@dmtest1-10-0-0-1 root]# ./dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p CSS0
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServiceCSS
Finished to create the service (DmCSSServiceCSS0)
[root@dmtest1-10-0-0-1 root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p css0 -y DmCSSServiceCSS0
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrService css0.service to /usr/lib/systemd/system/DmASMSvrServicecss0.service.
Finished to create the service (DmASMSvrServicecss0)
节点二:
[root@dmtest2-10-0-0-2 root]# ./dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p CSS1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServiceCSS1.service to /usr/lib/systemd/system/DmCSSServiceCSS1.service.
Finished to create the service (DmCSSServiceCSS1)
[root@dmtest2-10-0-0-2 root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p css1 -y DmCSSServiceCSS1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrServicecss1.service to /usr/lib/systemd/system/DmASMSvrServicecss1.service.
Finished to create the service (DmASMSvrServicecss1)
6.5.2 启动DMCSS和DMASM 服务
节点1:
[root@dmtest1-10-0-0-1 root]# systemctl start DmCSSServiceCSS0.service
[root@dmtest1-10-0-0-1 root]# systemctl start DmASMSvrServicecss0.service
节点2:
[root@dmtest2-10-0-0-2 root]# systemctl start DmCSSServiceCSS1.service
[root@dmtest2-10-0-0-2 root]# systemctl start DmASMSvrServicecss1.service
6.6创建DMASM磁盘组
在任意节点使用 dmasmtool 工具创建 DMASM 磁盘组。
[dmdba@dmtest1-10-0-0-1 bin]$ ./dmasmtool DCR_INI=/dm/dmdbms/data/DAMENG/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'dmlog' asmdisk '/dev/raw/raw3'
Used time: 109.607(ms).
ASM>create diskgroup 'dmdata' asmdisk '/dev/raw/raw4'
6.7准备dminit.ini 配置文件
在2个节点的/dm/dmdbms/data/DAMENG目录下创建 dminit.ini 配置文件,添加如下内容。
db_name = dsc
system_path = +dmdata
system = +dmdata/dsc/system.dbf
system_size = 128
roll = +dmdata/dsc/roll.dbf
roll_size = 128
main = +dmdata/dsc/main.dbf
main_size = 128
ctl_path = +dmdata/dsc/dm.ctl
ctl_size = 8
log_size = 2048
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
charset =1
[DSC0]
config_path = /dm/dscdata/dsc0_config
port_num = 5236
mal_host = 10.0.0.1
mal_port = 9340
log_path = +dmlog/log/dsc0_log01.log
log_path = +dmlog/log/dsc0_log02.log
page_size = 16
case_sensitive = y
[DSC1]
config_path = /dm/dscdata/dsc1_config
port_num = 5236
mal_host = 10.0.0.2
mal_port = 9341
log_path = +dmlog/log/dsc1_log01.log
log_path = +dmlog/log/dsc1_log02.log
page_size = 16
case_sensitive = y
注意:只在一台机器配置。注意+dmdata大小写
6.8初始化数据库
在节点一机器上启动dminit工具初始化数据库,然后会在config_path配置的目录下生成dsc0_config和dsc1_config目录,每个目录下都有dm.ini和dmmal.ini。将A机器上生成的dsc1_config目录剪贴到节点二机器的config目录下
[dmdba@dmtest1-10-0-0-1 bin]$ ./dminit control=/dm/dmdbms/data/DAMENG/dminit.ini
[dmdba@dmtest1-10-0-0-1 dscdata]$ ll
总用量 0
drwxr-xr-x 2 dmdba dinstall 57 3月 23 12:43 dsc0_config
drwxr-xr-x 2 dmdba dinstall 38 3月 23 12:48 dsc1_config
[dmdba@dmtest1-10-0-0-1 dscdata]$ scp -r dsc1_config 10.0.0.2:/dm/dscdata/
6.9配置dmarch.ini
将两台机器上dm.ini中的ARCH_INI设置为1,然后配置dmarch.ini文件
在节点一机器的/dm/dscdata/dsc0_config下新建dmarch.ini文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/arch_rac0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 150000
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /dmarch/arch_rac0_1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 150000
在节点二机器的/dm/dscdata/dsc1_config下新建dmarch.ini文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/arch_rac1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 150000
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /dmarch/arch_rac1_0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 150000
6.10启动DMSERVER服务
节点一机器
[dmdba@dmtest1-10-0-0-1 bin]$ ./dmserver /dm/dscdata/dsc0_config/dm.ini dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
节点二机器
[dmdba@dmtest2-10-0-0-2 bin]$ ./dmserver /dm/dscdata/dsc1_config/dm.ini dcr_ini=/dm/dmdbms/data/DAMENG/dmdcr.ini
6.11注册服务
节点一注册DM 数据库服务:
[root@dmtest1-10-0-0-1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dscdata/dsc0_config/dm.ini -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p css0 -y DmASMSvrServicecss0
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicecss0.service to /usr/lib/systemd/system/DmServicecss0.service.
Finished to create the service (DmServicecss0)
节点二注册DM 数据库服务:
[root@dmtest2-10-0-0-2 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dscdata/dsc1_config/dm.ini -dcr_ini /dm/dmdbms/data/DAMENG/dmdcr.ini -p css1 -y DmASMSvrServicecss1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicecss0.service to /usr/lib/systemd/system/DmServicecss0.service.
Finished to create the service (DmServicecss0)
6.12 启动数据库
[root@dmtest1-10-0-0-1 root]# systemctl start DmServicecss0.service
[root@dmtest2-10-0-0-2 root]# systemctl start DmServicecss1.service
七、配置 DMCSSM监控器
7.1配置步骤
[dmdba@dmtest1-10-0-0-1 DAMENG]$ cat dmcssm.ini
CSSM_OGUID = 45330
CSSM_CSS_IP = 10.0.0.1:9341
CSSM_CSS_IP = 10.0.0.2:9343
CSSM_LOG_PATH =/dm/dmdbms/data/DAMENG
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 0
7.2启动监视器
[dmdba@dmtest1-10-0-0-1 bin]$ ./dmcssm /dm/dmdbms/data/DAMENG/dmcssm.ini
monitor current time:2023-06-08 09:21:53, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 1] ========================================
[CSS0] auto check = TRUE, global info:
[ASM0] auto restart = TRUE
[DSC0] auto restart = TRUE
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC1] auto restart = TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:21:54 CSS0 0 9341 Normal Node OPEN WORKING OK TRUE 3286 4233
2023-06-08 09:21:54 CSS1 1 9343 Control Node OPEN WORKING OK TRUE 3759 4710
=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 1] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:21:54 ASM0 0 9349 Normal Node OPEN WORKING OK TRUE 9506 10431
2023-06-08 09:21:54 ASM1 1 9351 Control Node OPEN WORKING OK TRUE 9975 10909
=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:21:54 DSC0 0 5236 Control Node OPEN WORKING OK TRUE 4158 5051
2023-06-08 09:21:54 DSC1 1 5236 Normal Node OPEN WORKING OK TRUE 3175 4088
==================================================================================================================
show
monitor current time:2023-06-08 09:22:49, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 1] ========================================
[CSS0] auto check = TRUE, global info:
[ASM0] auto restart = TRUE
[DSC0] auto restart = TRUE
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC1] auto restart = TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:22:50 CSS0 0 9341 Normal Node OPEN WORKING OK TRUE 3286 4289
2023-06-08 09:22:50 CSS1 1 9343 Control Node OPEN WORKING OK TRUE 3759 4766
=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 1] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:22:50 ASM0 0 9349 Normal Node OPEN WORKING OK TRUE 9506 10486
2023-06-08 09:22:50 ASM1 1 9351 Control Node OPEN WORKING OK TRUE 9975 10964
=================== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2023-06-08 09:22:50 DSC0 0 5236 Control Node OPEN WORKING OK TRUE 4158 5107
2023-06-08 09:22:50 DSC1 1 5236 Normal Node OPEN WORKING OK TRUE 3175 4143
=
八、其他配置
8.1配置dm_svc.conf
以下配置是每次定向连接 DMDSC 服务名的第一个服务(10.0.0.1:5236),当服务器故障后,以间隔 1000 毫秒的节奏尝试连接第一个服务 60 次,若连接成功则进行使用,若连接失败则连接下一个服务(10.0.0.2:5236)。假设 2 号服务先连接成功,由于 AUTO_RECONNECT=(1),因此当 1 号服务可以正常连接后当前连接也不会切换到 1 号服务。
TIME_ZONE=(480)
LANGUAGE=(cn)
DMDSC=(10.0.0.1:5236,10.0.0.2:5236)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(1)
AUTO_RECONNECT=(1)
8.2应用连接
8.2.1文件存放:
Linux:将dm_svc.cof文件放在应用服务器/etc目录下。
Windows32位:将dm_svc.conf文件放在应用服务器system32目录下。
Windows64位:将dm_svc.conf文件放在应用服务器system32和syswow64目录下。
8.2.2配置应用连接串:
连接串格式:
jdbc:dm://ip:port?参数名=参数值&参数名=参数值&参数名=参数值
// 定义 DM JDBC 驱动串
static String jdbcString = "dm.jdbc.driver.DmDriver";
// 定义 DM URL 连接串
static String urlString = "jdbc:dm://DMDSC";
// 定义连接用户名
static String userName = "SYSDBA";
// 定义连接用户口令
static String password = "SYSDBA";