DM DSC 集群是一个多实例、单数据库的系统。

DSC系统特性

1. 高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。

2. 高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。

3. 负载均衡:用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。

DMDSC 组件:
集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件DMCSS组成。
共享存储:
DMDSC集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。配置DMDSC集群需要使用到的DCR、VOTING DISK等也必须保存在共享存储上。 DMDSC支持使用裸设备或DMASM文件系统作为共享存储。
本地存储:
本地存储用来保存配置文件(记录数据库实例配置信息的dm.ini、dmarch.ini、dmmal.ini),本地归档日志、远程归档日志。
网络通信:
DM DSC集群中,网络分为内部网络和公共网络两个部分。内部网络用于数据库实例之间交换信息和数据,以及网络心跳检测等用途,MAL链路使用的就是是内部网络。公共网络则用于对外提供数据库服务,用户使用公共网络地址登录DM DSC集群,访问数据库。实际应用中一般还存在服务器到共享存储的网络
集群控制:
集群系统的重要组成部分,DMCSS是DMDSC集群控制软件,负责监控集群中各个节点的运行状态。主要功能包括:管理集群的启动、关闭,控制节点故障处理、以及节点重加入流程

了解:
DCR(DM Clusterware Registry)
DCR 是 DM 集群注册表的简称,用于存储、维护集群配置的详细信息,整个集群环境共 享 DCR 配置信息,包括 DMDSC、DMASM、DMCSS 资源,包括实例名、监听端口、集群中故 障节点信息等。DCR 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸 设备。在一个集群环境中只能配置一个 DCR 磁盘。
表决磁盘(Voting Disk)
表决磁盘记录了集群成员信息,DM 集群通过 Voting Disk 进行心跳检测,确定集群 中节点的状态,判断节点是否出现故障。

 

 

 

DMDSC功能:
DM DSC 支持表、视图、索引、存储过程/函数、触发器、包、序列、同义词、类、SQL域、用户管理、角色管理、事务管理、对象注释、作业管理、多语言支持、数据查询、数据增删改、函数、PL/SQL、逻辑导入导出、备份还原、手册命令、故障切换功能。
在DM DSC环境下,不支持联机配置定时器,只有控制节点上配置的定时器生效。只支持脱机配置定时器,支持作业,但只有控制节点上支持执行作业,不支持HUGE表、不支持外部表、不支持堆表、不支持类型别名、不支持table级别的space limit功能、不支持全文索引、词库相关操作、不支持安全版本、审计相关操作、不支持DBMS_ALERT、DBMS_LOCK包、不支持数据复制、不支持为表空间文件指定mirror_path、不支持闪回查询。

dmdesc 构架图如下:

共享存储架构和超融合架构 共享存储集群_共享存储架构和超融合架构

 

搭建过程如下:

########################1.3 前期准备
用户与组

DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall),并设置系统用户dmdba的密码。

groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba

#################用户资源限制

执行命令,修改 dmdba 用户资源限制。

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

 

##############################用户环境变量

执行命令,修改 dmdba 用户环境变量:

vi /home/dmdba/.bash_profile

文件末尾添加如下内容:

export DM_HOME=/dm/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

修改后使得环境变量生效。

source /home/dmdba/.bash_profile

 

###############1.4 防火墙设置
关闭防火墙

查看防火墙状态,如果显示为active,需要关闭防火墙,禁用则开机不启动防火墙。

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

关闭SELinux

查看是否开启了SELinux,如果显示为Enforcing,需要改为Disabled,再重启系统使配置生效。

getenforce
vi /etc/selinux/config
# 进入文件后修改 SELINUX = disabled
# 保存退出文件
reboot

 

 

######################### 设置共享存储

编辑 /etc/udev/rules.d/60-raw.rules 文件,增加以下语句:

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

最后执行 ,完成裸设备绑定
systemctl restart systemd-udev-trigger.service
udevadm control --reload-rules
udevadm trigger --type=devices --action=change

ls -lrt /dev/raw/raw*

##############################################################
##############################################################
##############################################################

1.5 安装数据库
只需要安装数据库,暂时不需要初始化实例。
##############################################################
##############################################################
##############################################################

#####################################
三、添加配置文件
3.1 配置 DCR 初始化配置文件(DSC1 & DSC2)
创建配置文件存放目录,2 个节点都要执行,使用 dmdba 用户,执行以下命令:

mkdir -p /dm/config

准备 dmdcr_cfg.ini 配置文件,保存到 /home/ 目录下面。后续 DMASMCMD
工具执行 init 语句会使用到。

cd /dm/config
vi dmdcr_cfg.ini

DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635

[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 = CSS1
DCR_EP_HOST = 10.10.10.120
DCR_EP_PORT = 9341

[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 10.10.10.130
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 = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 10.10.10.120
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 10.10.10.130
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 = DSC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742

 

####################3.2 创建 ASM 磁盘(DSC1)
创建磁盘

使用 dmdba 用户,到 DM 数据库软件安装目录的 bin 目录执行以下命令(只需在一个节点执行)。
## 格式化

dd if=/dev/zero of=/dev/raw/raw1 bs=1k count=3000
dd if=/dev/zero of=/dev/raw/raw2 bs=1k count=3000
dd if=/dev/zero of=/dev/raw/raw3 bs=1k count=3000
dd if=/dev/zero of=/dev/raw/raw4 bs=1k count=3000

 

cd /dm/dmdbms/bin
./dmasmcmd
1
进入 ASM 提示符后执行以下命令:

create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'

初始化磁盘

使用编辑好的 dmdcr_cfg.ini 配置文件初始化 dcrdisk 和 votedisk,并在 ASM 提示符执行以下命令:

init dcrdisk '/dev/raw/raw1' from '/dm/config/dmdcr_cfg.ini' identified by '123456'
init votedisk '/dev/raw/raw2' from '/dm/config/dmdcr_cfg.ini'

 

 

##################
准备 DM ASM 的 MAL 配置文件(命名为 dmasvrmal.ini ),使用 DMASM 的所有节点都
要配置,内容完全一样,保存到 /dm/config 目录下

vi /dm/config/dmasvrmal.ini

[MAL_INST1]

MAL_INST_NAME = ASM1
MAL_HOST = 10.10.10.120
MAL_PORT = 7236

[MAL_INST2]

MAL_INST_NAME = ASM2
MAL_HOST = 10.10.10.130
MAL_PORT = 7237

 

#############################
.4 配置 DCR 启动配置文件(DSC1 & DSC2)
节点一和节点二各需要创建dmdcr.ini文件。
两者内容差别主要在于DMDCR_SEQNO和PATH中的实例名。

本文将ASM和DB的重启参数均设置为0,为手动拉起ASM和DB服务,主要是为了防止拉起过程出现故障导致不断重启。

 

准备 dmdcr.ini 配置文件,保存到 /dm/config 目录下面
DMASM 的两个节点分别配置 dmdcr.ini dmdcr_path 相同, dmasvrmal.ini 文
件内容也相同, dmdcr_seqo 分别为 0 和 1 。

###节点1
vi /dm/config/dmdcr.ini

#### 1 节点参数
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0

#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/bin/dmasmsvr dcr_ini=/dm/config/dmdcr.ini

#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/dmdbms/bin/dmserver path=/dmdata/dsc1/dm.ini dcr_ini=/dm/config/dmdcr.ini

 

#### 2 节点参数
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1

#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/bin/dmasmsvr dcr_ini=/dm/config/dmdcr.ini

#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm/dmdbms/bin/dmserver path=/dmdata/dsc2/dm.ini dcr_ini=/dm/config/dmdcr.ini

 

 

##################两个节点都要做
四、启动DMDSC集群
4.1 启动 DMCSS 服务(DSC1 & DSC2)
2 个节点启动 dmcss,dmdba 用户到数据库安装目录 bin 下执行以下命令:

 

启动DMCSS、DMASM服务程序
在 2节点先后分别启动dmcss、dmasmsvr程序。
手动启动dmcss命令:
cd /dm/dmdbms/bin/
./dmcss DCR_INI=/dm/config/dmdcr.ini

4.2 启动 ASM 服务(DSC1 & DSC2)
2 个节点启动 asm,dmdba 用户到数据库安装目录 bin 下执行以下命令:

手动启动dmasmsvr命令:
cd /dm/dmdbms/bin/
./dmasmsvr DCR_INI=/dm/config/dmdcr.ini
如果DMCSS配置有自动拉起dmasmsvr的功能,可以等待DMCSS自动拉起dmasmsvr

 

如果DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr

问题: 运行dmcss DCR_INI=/dm/cbconf/dmdcr.ini命令时遇到如下错误
dmcss: error while loading shared libraries: libdmcalc.so: cannot open shared object file: No such file or directory
解决方案
方案1:
ln -s /dm/dbms/bin/*.so /lib64/
方案2:

切换到$DM_HOME/bin 目录后再执行dmcss

 

#######################
使用dmasmtool工具创建DMASM磁盘组
选择一个节点(10.10.10.120),启动dmasmtool工具。
cd /dm/dmdbms/bin/
./dmasmtool DCR_INI=/dm/config/dmdcr.ini

#######################
输入下列语句创建DMASM磁盘组:
#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

 

准备 init_init_init.ini配置文件,保存到/dmdata目录

之后会生成 dm.ini 文件的

####################
注意注意注意 注意 mal_port 是和 css的mal端口 不是一样的
db 的mal 文件是放在 /dmdata/dsc1/dmmal.ini

 

db_name = dsc
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr磁盘路径,目前不支持asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[DSC0] #inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应
config_path = /dmdata/dsc1
port_num = 5236
mal_host = 10.10.10.120
mal_port = 9236
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
[DSC1] #inst_name跟dmdcr_cfg.ini中DB类型group中DCR_EP_NAME对应
config_path = /dmdata/dsc2
port_num = 5236
mal_host = 10.10.10.130
mal_port = 9237
log_path = +DMLOG/log/dsc2_log01.log
log_path = +DMLOG/log/dsc2_log02.log

 

#####################################
使用dminit初始化DB环境
选择一个节点(10.0.2.101),启动dminit工具初始化数据库。dminit执行完成后,会在config_path目录(/home/data/dsc0_config和/home/data/dsc1_config)下生成配置文件dm.ini和dmmal.ini。
73
DM8 共享存储集群
./dminit control=/home/data/dminit.ini
屏幕打印如下:

/dm/dmdbms/bin/dminit control=/dmdata/dsc1/dm.ini




十五、配置后台启动服务与注册为系统服务(两台都配)
1.配置后台启动服务

 

 

注册为系统服务(root用户)

注册CSS服务
注册ASM服务
注册DB服务

# 节点1
/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/config/dmdcr.ini -p CSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/config/dmdcr.ini -p ASM -y DmCSSServiceCSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dsc1/dm.ini -dcr_ini /dm/config/dmdcr.ini -p DSC1 -y DmASMSvrServiceASM

systemctl enable DmCSSServiceCSS
systemctl enable DmASMSvrServiceASM
systemctl enable DmServiceDSC1

systemctl stop DmCSSServiceCSS

# 节点2
/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/config/dmdcr.ini -p CSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/config/dmdcr.ini -p ASM -y DmCSSServiceCSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dsc2/dm.ini -dcr_ini /dm/config/dmdcr.ini -p DSC2 -y DmASMSvrServiceASM

systemctl enable DmCSSServiceCSS
systemctl enable DmASMSvrServiceASM
systemctl enable DmServiceDSC2

 

systemctl stop DmServiceDSC1
systemctl stop DmASMSvrServiceASM
systemctl stop DmCSSServiceCSS

 

 

 

###卸载服务
systemctl disable DmCSSServiceDMCSS
systemctl disable DmASMSvrServiceDMASM
systemctl disable DmServiceDMSERVER

cd /usr/lib/systemd/system/
rm -rf DmCSSServiceDMCSS.service DmASMSvrServiceDMASM.service DmServiceDMSERVER.service

 

十六、设置自动拉起功能(两台都改)
修改dmdcr.ini的DMDCR_ASM_RESTART_INTERVAL与DMDCR_DB_RESTART_INTERVAL为1

vi /dm/config/dmdcr.ini

DMDCR_ASM_RESTART_INTERVAL = 1

DMDCR_DB_RESTART_INTERVAL = 1

 

 

十七、配置监视器(两台任选一台)
vi /dm/config/dmcssm.ini

CSSM_OGUID = 63635
CSSM_CSS_IP = 10.10.10.120:9341
CSSM_CSS_IP = 10.10.10.130:9343
CSSM_LOG_PATH =/dm/log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 2048

 

/dm/dmdbms/bin/dmcssm ini_path=/dm/config/dmcssm.ini

 

 

########## 设置归档

su - dmdba

mkdir -p /dmdata/dmarch/local
mkdir -p /dmdata/dmarch/remote

将所有节点dm.ini文件ARCH_INI设置为1
vi /dm/dbconf/dsc01_config/dm.int
ARCH_INI = 1

 

实例 dsc1 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmdata/dmarch/local, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc2, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dmdata/dmarch/remote';
alter database open;

实例 dsc2 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmdata/dmarch/local, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc1, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dmdata/dmarch/remote';
alter database open;

检查配置
select para_name, para_value from v$dm_ini where para_name in ('ARCH_INI','RLOG_APPEND_LOGIC');

切换归档
alter system archive log current;

查看归档
select sequence# seq, name , to_char(first_time,'yyyy-mm-dd hh24:mi:ss') first_time, to_char(next_time,'yyyy-mm-dd hh24:mi:ss') next_time, first_change# , next_change# from v$archived_log;

 

 

 

通过系统视图检查
DMDSC信息
实例状态
select NAME,INSTANCE_NAME,INSTANCE_NUMBER from v$instance;
select * from v$dsc_ep_info;

查看DCR配置的全局信息
select * from v$dcr_info;

查看DCR配置的组信息
select * from v$dcr_group;

查看DCR配置的节点信息
select GROUP_NAME,EP_NAME,EP_SEQNO,EP_HOST,EP_PORT,SHM_KEY,SHM_SIZE,ASM_LOAD_PATH from v$dcr_ep;

统计DSC环境内TYPE类型请求时间
select * from v$dsc_request_statistic;
统计lbs_xx类型最耗时间的前100页地址信息
select * from v$dsc_request_page_statistic;
显示DSC环境各个节点数据页LSN
select * from v$dsc_crash_over_info;
ASM 信息
查看ASM磁盘信息
select GROUP_ID,DISK_ID,DISK_NAME,DISK_PATH,SIZE,FREE_AUNO from v$asmdisk;

查看ASM磁盘组信息
select * from v$asmgroup;
img

查看所有的ASM文件信息
select * from v$asmfile;
查看文件路径信息
查询重做日志文件路径
SELECT GROUP_ID, FILE_ID, PATH FROM V$RLOGFILE ORDER BY 2;
查看表空间状态及所对应的数据文件
SELECT t.name
,t.status$
,d.path
,d.status$
,d.total_size * d.page_size / 1024 / 1024 total_mb
,d.free_size * d.page_size / 1024 / 1024 free_mb
,d.auto_extend
,d.max_size / 1024
FROM v$datafile d, v$tablespace t
WHERE d.group_id = t.id;