DM-DSC集群配置

DMDSC概述

DM 共享存储数据库集群全称 DM Data Shared Cluster,简称 DMDSC

DMDSC 特性

DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法对外服务。

负载均衡

通过配置 DM 数据库连接服务名来访问 DMDSC 集群,可以实现节点间的自动负载均衡,数据库连接请求会被自动、平均地分配到 DMDSC 集群中的各个节点。并且连接服务名支持 JDBC、DPI、ODBC、DCI、.Net Provider 等各种数据库接口。

组成

DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS (DM Cluster Synchronization Services)组成。

  • 数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件等),保存在物理磁盘或文件系统中

  • 数据库实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存

  • 共享存储:DMDSC 集群要求将数据文件、控制文件、日志文件保存在共享存储上;配置 DMDSC 集群需要的 DCR、Voting disk 也必须保存在共享存储上。DMDSC 支持使用裸设备或 DMASM 文件系统作为共享存储。

  • 本地存储:DMDSC 集群中,本地存储用来保存配置文件(记录数据库实例配置信息的 dm.ini、dmarch.ini、dmmal.ini),本地归档日志、远程归档日志

  • 通信网络:网络分为内部网络和公共网络两个部分。

    • 内部网络用于数据库实例之间交换信息和数据,MAL 链路使用的就是内部网络
    • 公共网络用于对外提供数据库服务,客户端使用公共网络地址登录 DMDSC 集群,访问数据库。
  • 集群控制(DMCSS):DMCSS 就是一款集群控制软件,专门负责监控集群中各个节点的运行状态

    • DMCSS 主要功能包括:管理集群的启动和关闭,控制节点故障处理,以及管理节点重加入流程

概念

DCR(DM Clusterware Registry)

DCR 是 DM 集群注册表的简称,用于存储、维护集群配置的详细信息,整个集群环境共享 DCR 配置信息,包括 DMDSC、DMASM、DMCSS 资源,包括实例名、监听端口、集群中故障节点信息等。

DCR 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个 DCR 磁盘

表决磁盘(Voting Disk)

表决磁盘记录了集群成员信息,DM 集群通过 Voting Disk 进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用 Voting Disk 来确定哪些 DMDSC 节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启动、节点故障、节点重加入等)DMCSS 通过 Voting Disk 传递控制命令,通知节点执行相应命令。

Voting Disk 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个表决磁盘

集群中各实例启动时,通过访问 DCR 获取集群配置信息。被监控实例从 Voting Disk 读取监控命令,并向 Voting Disk 写入命令响应以及自身心跳信息;DMCSS 也向 Voting Disk 写入自己的心跳信息,并从 Voting Disk 访问各被监控节点的运行情况,并将监控命令写入 Voting Disk,供被监控实例访问执行。

HeartBeat(心跳机制)

DMCSS 的心跳机制是通过 Voting Disk 的 Disk Heartbeat

MAL 链路

MAL 系统是达梦数据库基于 TCP 协议实现的一种内部通信机制。使用 DMASM 文件系统的 DMDSC 集群中存在两套 MAL 系统,DMASM 服务器之间配置一套 MAL 系统(dmasvrmal.ini),dmserver 服务器之间配置一套 MAL 系统(dmmal.ini)。一旦 MAL 链路出现异常,DMCSS 会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行。

与 DMDSC 相关的配置文件

  • DMDCR_CFG.INI
  • DMDCR.INI
  • DMINIT.INI
  • MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
  • DM.INI

DMDCR_CFG.INI

dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。
使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 VotingDisk。

DMDCR.INI

dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。

DMINIT.INI

dminit.ini 是 dminit 工具初始化数据库环境的配置文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。

MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)

dmmal.ini 和 dmasvrmal.ini 都是 MAL 配置文件。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。

DM.INI

dm.ini 是 dmserver 使用的配置文件。各 DSC 节点之间的部分 INI 参数必须保持一致,如果不一致,会导致后启动的节点启动失败,日志会记录失败原因。每个节点用系统函数修改本节点的 INI 时,DSC 会将新修改值同步到其它节点,始终保持 INI 参数值的一致性。

DMCSS

概述

DMCSS(Dameng Cluster Synchronization Services)达梦集群同步服务,使用 DMASM 集群或 DMDSC 集群都必须要配置 DMCSS 服务。在 DMASM 集群或 DMDSC 集群中,每个节点都需要配置一个 DMCSS 服务。这些 MCSS 服务自身也构成一个集群,DMCSS集群中负责监控、管理整个 DMASM 集群和 DMDSC 集群的节点称为控制节点(controlnode),其他 DMCSS 节点称为普通节点(normal node)。DMCSS 普通节点不参与 DMASM集群和 DMDSC 集群管理,当 DMCSS 控制节点故障时,会从活动的普通节点中重新选取一个DMCSS 控制节点。

心跳信息

DMCSS 实例启动后,每间隔 1 秒向 Voting Disk 指定区域写入心跳信息(包括自身的状态、时间戳等),表示 DMCSS 节点处于活动状态。

选举 DMCSS 控制节点

DMCSS 启动后向 Voting Disk 写入信息,并读取其他 DMCSS 节点的信息,如果 DMCSS集群中还没有活动的控制节点,则选举 DMCSS 控制节点。

DMCSS 选举的原则有两条:

  1. 先启动的 DMCSS 作为控制节点
  2. DMCSS 同时启动,则选择节点号小的节点为控制节点

DMASM

DMASM 磁盘

DMASM 磁盘是指经过 dmasmcmd 工具格式化,可以被 dmasmsvr 识别的物理磁盘

DMASMCMD

DMASMCMD 是 DMASM 文件系统初始化工具,用来格式化裸设备为 DMASM 磁盘,并初始化 DCR Disk、Voting Disk。格式化 DMASM 磁盘就是在裸设备的头部写入 DMASM 磁盘特征描述符号,包括 DMASM 标识串、DMASM 磁盘名、以及 DMASM 磁盘大小等信息。其中Voting Disk 和 DCR Disk 也会被格式化为 DMASM 磁盘。

功能

  1. 格式化 DMASM 磁盘
  2. 初始化 DCR Disk,同时指定密码
  3. 初始化 Voting Disk
  4. 导出 DCR Disk 配置信息
  5. 导入 DCR Disk 配置信息
  6. 清理 DCR Disk 中指定组的故障节点信息
  7. 创建用于模拟裸设备的磁盘文件(用于单机模拟 DMDSC 环境)
  8. 列出指定路径下面磁盘属性
  9. 联机修改 DCR 磁盘,扩展节点

用法

创建 DMASM 磁盘
create asmdisk disk_path disk_name [size(M)]

-- 格式化为 DCR 磁盘
create dcrdisk disk_path disk_name [size(M)]
-- 格式化为 Voting Disk
create votedisk disk_path disk_name [size(M)]
初始化 DCR & Voting Disk
-- 根据配置文件 dmdcr_cfg.ini 的内容,初始化 DCR 磁盘。设置登录 ASM 文件系统的密码,密码要用单引号括起来
init dcrdisk disk_path from ini_pathidentified by password
init dcrdisk '/dev/dmasm/dcr' from '/home/asm/dmdcr_cfg.ini'identified by ''

-- 根据配置文件 dmdcr_cfg.ini 的内容,初始化 Voting Disk
init votedisk disk_path from ini_path
init votedisk '/dev/dmasm/vote' from '/home/asm/dmdcr_cfg.ini'
导出 DCR 的配置文件
-- 解析 DCR 磁盘内容,导出到 dmdcr_cfg.ini 文件
export dcrdisk disk_path to ini_path
export dcrdisk '/dev/dmasm/dcr' to '/home/asm/dmdcr_cfg.ini'
导入 DCR 的配置文件

根据配置文件/data/dmdcr_cfg.ini 的内容,将修改导入 DCR 磁盘

import dcrdisk ini_path to disk_path
import dcrdisk '/data/dmdcr_cfg.ini' to '/data/asmdisks/disk0.asm'
校验 DCR 磁盘
check dcrdisk disk_path
check dcrdisk '/dev/dmasm/dcr'

校验 DCR 磁盘信息是否正常,根据打印出来的 code 值判断,如果等于 0,则表示 DCR 磁盘正常,如果小于 0,则说明 DCR 磁盘故障,需要重新初始化

清理指定组的故障节点信息

清理 DCR Disk 中指定组的故障节点信息,可借助 export 命令查看对应组的DCR_GRP_N_ERR_EP 和 DCR_GRP_ERR_EP_ARR 信息 , 清理成功后 , 指 定组 的DCR_GRP_N_ERR_EP 值为 0,DCR_GRP_ERR_EP_ARR 内容为空

clear dcrdisk err_ep_arr disk_path group_name
clear dcrdisk err_ep_arr '/dev/dmasm/dcr' 'GRP_DSC'
显示指定路径下面磁盘属性
listdisks path
listdisks '/dev/dmasm/'

显示 path 路径下面所有磁盘的信息,分为三种类型:

  • normal disk:普通磁盘;
  • unused asmdisk:初始化未使用的 asmdisk;
  • used asmdisk:已经使用的 asmdisk。
联机修改 DCR 磁盘,扩展节点

联机修改 DCR 磁盘,扩展节点,会将新增节点信息写回 dcr 磁盘

extend dcrdisk disk_path from ini_path
extend dcrdisk '/dev/dmasm/disk0.asm' from 'd:dmdcr_cfg.ini'

DMASMSVR

DMASMSVR 是提供 DMASM 服务的主要载体,每个提供 DMASM 服务的节点都必须启动一个 DMASMSVR 服务器,这些 DMASMSVR 一起组成共享文件集群系统,提供共享文件的全局并发控制。

DMASMSVR 实例之间使用 MAL 系统进行信息和数据的传递。

DMASMSVR 集群的启动、关闭、故障处理等流程由 DMCSS 控制,DMASMSVR 定时向Voting Disk 写入时间戳、状态、命令、以及命令执行结果等信息,DMCSS 控制节点定时从 Voting Disk 读取信息,检查 DMASMSVR 实例的状态变化,启动相应的处理流程。

DMASMSVR 集群中,只有一个控制节点,控制节点以外的其他节点叫做普通节点,DMASMSVR 控制节点由 DMCSS 选取;所有 DDL 操作(比如创建文件,创建磁盘组等)都是在控制节点执行,用户登录普通节点发起的 DDL 请求,会通过 MAL 系统发送到控制节点执行并返回;而 DMASM 文件的读、写等操作,则由登录节点直接完成,不需要传递到控制节点执行。

DMASMSVR 启动格式

dmasmsvr DCR_INI=/dm/dbconf/dmdcr.ini

dmdcr.ini

dmdcr.ini 配置文件记录了 DCR 磁盘路径、实例序列号等信息;如果不指定DCR_INI 参数,dmasmsvr 默认在当前路径下查找 dmdcr.ini 文件

DMASMTOOL

DMASMTOOL 是 DMASM 文件系统管理工具,提供了一套类 Linux 文件操作命令,用于管理 DMASM 文件,是管理、维护 DMASM 的好帮手。DMASMTOOL 工具使用 DMASMAPI 连接到 DMAMSVR,并调用相应的 DMASMAPI 函数,实现创建、拷贝、删除等各种文件操作命令;DMASMTOOL 还支持 DMASM 文件和操作系统文件的相互拷贝。

DMASMTOOL 登录 DMASMSVR

DMASMTOOL 可以登录本地 DMASMSVR,也可以登录位于其他节点的 DMASMSVR,并执行各种文件操作命令。一般建议登录本地 DMASMSVR 服务器,避免文件操作过程中的网络开销,提升执行效率。

使用 DMASMTOOL 或 DMASMAPI 函数 dmasm_connect()登录 DMASMSVR 时,用户名只能为“ASMSYS”。若为本地登录,不校验密码;若为远程登录,应使用初始化 DCR 磁盘时设置的登录 ASM 文件系统的密码。

DMASMTOOL 启动命令
dmasmtool DCR_INI=/dm/dbconf/dmdcr.ini
  • dmasmtool 的最大命令长度是 1024
  • 脚本文件必须以"#asm script file"开头,否则认为是无效脚本文件;脚本中其他行以"#"开始表示注释。
支持功能
  • 创建磁盘组

    create diskgroup 'DMDATA' asmdisk '/dev/dmasm/data001'
    

    asmdisk 为磁盘组名,最长不能超过 32 字节。路径必须是全路径,不能是相对路径

  • 添加磁盘

    alter diskgroup 'DMDATA' add asmdisk '/dev/dmasm/data002'
    
  • 删除磁盘组

    drop diskgroup 'DMDATA'
    

部署实施

部署结构图

image-20211017105300846

环境说明

主机规划

主机名称 IP地址 操作系统 数据库软件 网卡
node1 192.168.10.201(对外服务) 银河麒麟V10 DM8 每台2块网卡
node1 172.168.0.201(私有ip)
node2 192.168.10.202(对外服务) 银河麒麟V10 DM8
node2 172.168.0.202(私有ip)

内网用于 MAL 通讯

存储规划

名称 存储路径 容量 说明
软件安装路径 /dm/dbms 60G 软件安装到本地磁盘上
数据文件路径 dmasm{+DMDATA,+DMLOG} 依据业务需求 数据存储在共享存储上
归档文件路径 /dmarch 依据业务需求 归档文件
远程归档日志目录 /dm_remote_arch
备份文件路径 /dmbackup 依据业务需求 备份到本地磁盘
配置文件路径 /dm/dbconf 配置文件在节点的本地磁盘
共享存储规划

DM 支持的共享存储有两种:裸设备和DMASM

ASM磁盘组名称 容量 说明
DCR 1 GB 存放DCR配置,一个集群只能一个磁盘
VOTE 1 GB 存放表决文件,一个集群只能一个磁盘
DMLOG 10GB 存放redo日志文件
DMDATA 500GB * N (lun) 存放数据文件,每个磁盘容量500GB

网络端口

实例名称 端口类型 端口 用途
CSS01 DCR_EP_PORT 9341 CSS 进程 TCP 连接端口
CSS02 DCR_EP_PORT 9341 CSS 进程 TCP 连接端口
ASM01 DCR_EP_PORT 9351 ASM 进程 TCP 连接的端口
ASM02 DCR_EP_PORT 9351 ASM 进程 TCP 连接的端口
DSC01 DCR_EP_PORT 5237 数据库实例监听端口
DSC01 DCR_CHECK_PORT 9741 DCR 检查数据库实例监听端口
DSC02 DCR_EP_PORT 5237 数据库实例监听端口
DSC02 DCR_CHECK_PORT 9741 DCR 检查数据库实例监听端口
ASM01 MAL MAL_PORT 7236 ASM 的 MAL 系统 TCP 连接的端口
ASM02 MAL MAL_PORT 7236 ASM 的 MAL 系统 TCP 连接的端口
DSC01 MAL MAL_PORT 9236 数据库实例的 MAL 系统 TCP 连接的端口
DSC02 MAL MAL_PORT 9236 数据库实例的 MAL 系统 TCP 连接的端口

前期准备(所有节点)[root用户]

主机名

# 方法1
hostnamectl set-hostname [name]
# 方法2
nmcli general hostname [name]
systemctl restart systemd-hostnamed

配置hosts文件

cat >> /etc/hosts <<-'EOF'

# node1
192.168.10.201 node1
172.168.0.201  node1-priv

# node2
192.168.10.202 node2
172.168.0.202  node2-priv
EOF

关闭selinux

 setenforce 0
 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭防火墙

systemctl status -l firewalld 
systemctl disable --now firewalld

# 检查
systemctl list-unit-files|grep firewalld

创建用户

USR_PWD=$(</dev/urandom tr -dc '1234567890#abcdefghijklmnopqrstuvwzyxABCDEFGHIJKLMNOPQRSTUVWZYX' |head -c16; echo
UrXpiaLFMHbT5#9J)
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo "${USR_PWD}" | passwd --stdin dmdba

创建软件目录

mkdir -p /dm/{dbms,dbconf,soft}
mkdir -p /dmarch
mkdir -p /dmbackup
chown -R dmdba:dinstall /dm /dmarch /dmbackup
chmod -R 755 /dm /dmarch /dmbackup

配置系统资源限制

cat > /etc/security/limits.d/98-dm.conf <<-'EOF'
dmdba  soft  nofile  65536
dmdba  hard  nofile  65536
dmdba  soft  nproc   16384
dmdba  hard  nproc   16384
dmdba  soft  stack   10240
dmdba  hard  stack   10240
EOF

# 检查
su - dmdba -c "ulimit -a"

共享存储配置

检查磁盘UUID等配置信息
华为存储多路径
upadmin show vlun
EMC存储多路径
powermt display dev=all
日立存储多路径
/opt/DynamicLinkManager/bin/dlnkmgr view -lu/opt/DynamicLinkManager/bin/dlnkmgr view -path
(看情况)情况磁盘头信息
dd if=/dev/zero of=/dev/sdc bs=8192 count=51200
配置规则文件
cat > /etc/udev/rules.d/99-dmasm.rules <<-'EOF'
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29df8b346cd16bc4f82414dc2b9", SYMLINK+="dmasm/dcr",OWNER="dmdba", GROUP="dinstall",MODE="0660",OPTIONS="nowatch"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2951289f970d5aa450e0570d727", SYMLINK+="dmasm/vote",OWNER="dmdba", GROUP="dinstall",MODE="0660",OPTIONS="nowatch"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29c2e2eb12e5aa21df5d6a87875", SYMLINK+="dmasm/log",OWNER="dmdba", GROUP="dinstall",MODE="0660",OPTIONS="nowatch"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2924f9362797deba9ae66e9f2b2", SYMLINK+="dmasm/data001",OWNER="dmdba", GROUP="dinstall",MODE="0660",OPTIONS="nowatch"
EOF
加载规则
# 方法1
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload-rules

# 方法2
/sbin/partprobe   # 请求操作系统将分区表更改通知给内核,让系统重新读取分区表
/sbin/udevadm control --reload-rules
检查确认
ls -l /dev/dmasm/*

详细配置过程

准备软件

# 上传介质与license文件到/dm/soft目录

# 校验文件
sha256sum -c dm8_20210917_x86_kylin10_64_ent_8.1.2.70_pack1.iso_SHA256.txt

# 挂载介质
mount -o loop dm8_20210917_x86_kylin10_64_ent_8.1.2.70_pack1.iso /mnt
cp -p /mnt/DMInstall.bin /dm/soft/
chown dmdba:dinstall /dm/soft/DMInstall.bin
chmod 755 /dm/soft/DMInstall.bin

安装DM软件(所有节点)

(交互式)命令行安装
/dm/soft/DMInstall.bin -i 
静默安装
/dm/soft/DMInstall.bin -q auto_install.xml
auto_install.xml
<?xml version="1.0"?>
<DATABASE>
	<!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。 -->
	<LANGUAGE>zh</LANGUAGE>
	<!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
	<TIME_ZONE>+08:00</TIME_ZONE>
	<!-- key 文件路径 -->
	<KEY></KEY>
	<!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户 端。默认为 0。 -->
	<INSTALL_TYPE>0</INSTALL_TYPE>
	<!--安装路径,不允许为空。 -->
	<INSTALL_PATH>/dm/dbms/</INSTALL_PATH>
	<!--是否初始化库,取值 Y/N、y/n,不允许为空。 -->
	<INIT_DB>n</INIT_DB>
</DATABASE>
执行root脚本
/dm/dbms/script/root/root_installer.sh
作用
  • 创建必要配置文件
  • 创建DmAPService服务并启动
配置环境变量
echo "export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH" >> ~/.bash_profile

配置DMASM实例

所有节点配置DMASM参数文件(dmdcr_cfg.ini)

dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。

cat > /dm/dbconf/dmdcr_cfg.ini <<-'EOF'
# 集群环境全局信息
DCR_N_GRP            = 3               # 集群环境包括多少个 group,取值范围 1~16
DCR_VTD_PATH         = /dev/dmasm/vote # Voting Disk 路径
DCR_OGUID            = 63635           # 消息标识,dmcssm 登录 dmcss 消息校验用

# 集群组信息
[GRP]                              # [GRP]表示新建一个 Group
DCR_GRP_TYPE         = CSS         # 组类型(CSSASMDB)
DCR_GRP_NAME         = GRP_CSS     # 组名,16 字节,配置文件内不可重复
DCR_GRP_N_EP         = 2           # 组内节点个数 N,最大 16
DCR_GRP_DSKCHK_CNT   = 60          # 磁盘心跳机制,容错时间,单位秒,缺省 60S,取值范围 5~600

# 节点信息
[GRP_CSS]                          #[]里的是组名,与[GRP]中的 DCR_GRP_NAME 一致
DCR_EP_NAME          = CSS01        # 节点名,16 字节,配置文件内不可重复
DCR_EP_HOST          = 172.168.0.201  # CSS 中设置表示 DMCSSM 可以通过该IP连接 CSS,可以不配置
DCR_EP_PORT          = 9341        # 节点TCP监听CSS的端口,取值范围 1024~65534
[GRP_CSS]
DCR_EP_NAME          = CSS02
DCR_EP_HOST          = 172.168.0.202
DCR_EP_PORT          = 9341

[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          = ASM01        # ASM 的节点名必须和 dmasvrmal.ini 里的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY       = 93360       # 共享内存标识,数值类型(ASM有效,初始化共享内存的标识符),应为大于0的4字节整数
DCR_EP_SHM_SIZE      = 10            # 共享内存大小,单位M,(ASM 有效,初始化共享内存大小),取值范围10~1024
DCR_EP_HOST          = 172.168.0.201 # 节点 IP(实例所在机器的 IP 地址),ASM中设置表示 DB 可以通过该 IP 连接 ASM,可以不配置
DCR_EP_PORT          = 9351        # 节点TCP监听ASM的端口,取值范围 1024~65534
DCR_EP_ASM_LOAD_PATH = /dev/dmasm  # ASM 磁盘扫描路径,Linux 下一般为/dev/raw,文件模拟情况,必须是全路径,不能是相对路径
[GRP_ASM]
DCR_EP_NAME          = ASM02             # 与dmasvrmal.ini的MAL_INST_NAME一致
DCR_EP_SHM_KEY       = 93361
DCR_EP_SHM_SIZE      = 10
DCR_EP_HOST          = 172.168.0.202
DCR_EP_PORT          = 9351
DCR_EP_ASM_LOAD_PATH = /dev/dmasm

[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          = DSC01  # DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致
DCR_EP_SEQNO         = 0          # 组内序号,DB 可以配置,0 ~ n_ep -1,组内不能重复,如不配置则自动分配
DCR_EP_PORT          = 5237     # 节点TCP监听DB的端口,取值范围 1024~65534
DCR_CHECK_PORT       = 9741     # DCR检查端口号。检查实例是否活动的时候用,各实例不能冲突。实例配置此参数,取值范围1024~65535;DCR发起连接的端口在1024~65534之间随机分配
[GRP_DSC]
DCR_EP_NAME          = DSC02
DCR_EP_SEQNO         = 1
DCR_EP_PORT          = 5237
DCR_CHECK_PORT       = 9741

EOF
使用 DMASMCMD 工具初始化DCR和Vote Disk
编写脚本文件(init_dcr_vote.sql)
cat> /dm/dbconf/init_dcr_vote.sql <<-'EOF'
#asm script file
create dcrdisk  '/dev/dmasm/dcr'   'DCR'
create votedisk '/dev/dmasm/vote'  'VOTE'
create asmdisk  '/dev/dmasm/log'   'LOG'

create asmdisk  '/dev/dmasm/data001' 'DATA001'
create asmdisk  '/dev/dmasm/data002' 'DATA002'

init   dcrdisk  '/dev/dmasm/dcr'   from '/dm/dbconf/dmdcr_cfg.ini' identified by 'fKMdwv#c3rIh3JOg'
init   votedisk '/dev/dmasm/vote'  from '/dm/dbconf/dmdcr_cfg.ini'
EOF
使用 dmasmcmd 工具,根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 Voting Disk。
/dm/dbms/bin/dmasmcmd script_file=/dm/dbconf/init_dcr_vote.sql
检查确认
cat > /dm/dbconf/init_check.sql<<-'EOF'
check dcrdisk '/dev/dmasm/dcr'
check dcrdisk '/dev/dmasm/vote'
check dcrdisk '/dev/dmasm/data001'
check dcrdisk '/dev/dmasm/data002'
EOF
/dm/dbms/bin/dmasmcmd script_file=/dm/dbconf/init_check.sql

DMDCR.INI

dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 等工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。注意:节点的DMDCR_SEQNO值依次增加。如果不配置 css 自动启动 asm 和 db 则需要配置DMDCR_ASM_RESTART_INTERVAL 和DMDCR_DB_RESTART_INTERVAL 为 0

节点1配置
cat> /dm/dbconf/dmdcr.ini<<-'EOF'
DMDCR_PATH                 = /dev/dmasm/dcr  # 记录 DCR 磁盘路径
DMDCR_MAL_PATH             = /dm/dbconf/dmasvrmal.ini # 保存 dmmal.ini 配置文件的路径,仅对 dmasmsvr 有效
DMDCR_SEQNO                = 0    # 记录当前节点序号(用来获取 ASM 登录信息)

#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10  # DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMASM 节点的故障重启,超过设置的时间后,如果 DMASM 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
DMDCR_ASM_STARTUP_CMD      = /dm/dbms/bin/dmasmsvr dcr_ini=/dm/dbconf/dmdcr.ini # DMCSS 认定 DMASM 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动

#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL  = 30  # DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMDSC 节点的故障重启,超过设置的时间后,如果 DMDSC 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
DMDCR_DB_STARTUP_CMD       = /dm/dbms/bin/dmserver path=/dm/dbconf/dsc0_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini # DMCSS 认定 DMDSC 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动

# DMDCR_AUTO_OPEN_CHECK   = 30   # 指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒,取值范围应大于等于 30s。不配置此参数时表示不启用此功能。
EOF
节点2配置
cat> /dm/dbconf/dmdcr.ini<<-'EOF'
DMDCR_PATH                 = /dev/dmasm/dcr  # 记录 DCR 磁盘路径
DMDCR_MAL_PATH             = /dm/dbconf/dmasvrmal.ini # 保存 dmmal.ini 配置文件的路径,仅对 dmasmsvr 有效
DMDCR_SEQNO                = 1    # 记录当前节点序号(用来获取 ASM 登录信息)

#DMASMSVR 实例重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10  # DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMASM 节点的故障重启,超过设置的时间后,如果 DMASM 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
DMDCR_ASM_STARTUP_CMD      = /dm/dbms/bin/dmasmsvr dcr_ini=/dm/dbconf/dmdcr.ini # DMCSS 认定 DMASM 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动

# dmserver 实例重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL  = 30  # DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~86400s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的DMDSC 节点的故障重启,超过设置的时间后,如果 DMDSC 节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。如果配置为 0,则不会执行自动拉起操作,默认为 60s。
DMDCR_DB_STARTUP_CMD       = /dm/dbms/bin/dmserver path=/dm/dbconf/dsc1_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini # DMCSS 认定 DMDSC 节点故障后,执行自动拉起的命令串,可以配置为服务方式或命令行方式启动

# DMDCR_AUTO_OPEN_CHECK   = 30   # 指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒,取值范围应大于等于 30s。不配置此参数时表示不启用此功能。
EOF

MAL 系统配置文件(dmmal.ini, dmasvrmal.ini)

dmasmsvr 和 dmserver 使用不同的 MAL 系统,需要配置两套 MAL 系统,配置文件 dmmal.ini 需要分别生成,保存到不同的目录下,并且 dmmal.ini 中的配置项不能重复、冲突。

说明
  • DMASMSVR 组成的集群环境使用 MAL 系统进行通讯,需要在 dmdcr.ini 配置文件中配置 DMDCR_MAL_PATH 参数,指定 MAL 配置文件路径。例如:DMDCR_MAL_PATH=/home/data/dmasvrmal.ini
  • 使用 MAL 系统的 dmserver 实例,需要将 dm.ini 配置项 MAL_INI 设置为 1。同
    时 MAL 系统配置文件名称必须为 dmmal.ini
  • DMASMSVR和DMDSC集群中的dmserver实例需要分别配置一套独立的MAL系统,
    两者配置的 MAL 环境不能冲突。
所有节点配置DMASM 的 MAL 参数文件(dmasvrmal.ini)
cat > /dm/dbconf/dmasvrmal.ini <<-'EOF'
[MAL_INST1]                    # MAL 名称,同一个配置文件中 MAL 名称需保持唯一性
MAL_INST_NAME = ASM01           # 实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一
MAL_HOST      = 172.168.0.201  # MAL IP 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路
MAL_PORT      = 7236           # MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配
[MAL_INST2]
MAL_INST_NAME = ASM02
MAL_HOST      = 172.168.0.202
MAL_PORT      = 7236
EOF

启动DMASM实例

所有节点分别先后在前端窗口手动启动dmcss、dmasmsvr服务
# 在每个节点分别打开两个中终端连接窗口并依次执行命令
## 手动启动dmcss服务
/dm/dbms/bin/dmcss    DCR_INI=/dm/dbconf/dmdcr.ini
## 手动启动dmasmsvr服务
/dm/dbms/bin/dmasmsvr DCR_INI=/dm/dbconf/dmdcr.ini

如果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

img

创建DMASM磁盘组

使用 dmasmtool 工具交互模式创建 DMASM 磁盘组

# 仅在一个节点执行dmasmtool DCR_INI=/dm/dbconf/dmdcr.ini命令
/dm/dbms/bin/dmasmtool DCR_INI=/dm/dbconf/dmdcr.ini
ASM>create diskgroup 'DMLOG'  asmdisk     '/dev/dmasm/log'

ASM>create diskgroup 'DMDATA' asmdisk      '/dev/dmasm/data001'
ASM>alter  diskgroup 'DMDATA' add asmdisk  '/dev/dmasm/data002'

配置数据库

dminit.ini文件

dminit.ini 是 dminit 工具初始化数据库环境的配置文件。与初始化库使用普通文件系统不同,如果使用裸设备或者 ASM 文件系统,必须使用 dminit 工具的 control 参数指定 dminit.ini 文件。dminit 工具的命令行参数都可以放在 dminit.ini 中,比如: db_name,auto_overwrite 等,dminit.ini 格式分为全局参数和节点参数。

编写dminit.ini文件
cat > /dm/dbconf/dminit.ini <<-'EOF'
# 全局参数,对所有节点有效
db_name        = dsc      # 初始化数据库名称
system_path    = +DMDATA/data  # 初始化数据库存放的路径
system         = +DMDATA/data/dsc/system.dbf  # SYSTEM 表空间路径
system_size    = 128                              # SYSTEM 表空间大小
roll           = +DMDATA/data/dsc/roll.dbf    # ROLL 表空间路径
roll_size      = 128                              # ROLL 表空间大小
main           = +DMDATA/data/dsc/main.dbf  # MAIN 表空间路径
main_size      = 128                            # MAIN 表空间大小
ctl_path       = +DMDATA/data/dsc/dm.ctl    # DM.CTL 控制文件路径
ctl_size       = 8                               # DM.CTL 控制文件大小
log_size       = 1024                            # 日志文件大小
dcr_path       = /dev/dmasm/dcr    # DCR 磁盘路径
# HUGE_PATH    =                   # huge 表空间路径
dcr_seqno      = 0                 # 连接 DMASM 节点节点号
auto_overwrite = 1                 # 文件存在时的处理方式
charset        = 1                 # 字符集
page_size      = 16                # 
LENGTH_IN_CHAR = 1                 # 
BLANK_PAD_MODE = 1                 # 

# 节点参数,对具体节点有效
[DSC01] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path    = /dm/dbconf/dsc01  # 配置文件存放路径
port_num       = 5237                           # 节点服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024~65535之间随机分配
mal_host       = 172.168.0.201                 # 节点 MAL 系统使用 IP
mal_port       = 9236          # MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间 MAL 链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配
log_path       = +DMLOG/log/log01.log  # 日志文件路径
log_path       = +DMLOG/log/log02.log
log_path       = +DMLOG/log/log03.log

[DSC02] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path    = /dm/dbconf/dsc02
port_num       = 5237
mal_host       = 172.168.0.202
mal_port       = 9236
log_path       = +DMLOG/log/log01.log
log_path       = +DMLOG/log/log02.log
log_path       = +DMLOG/log/log03.log
EOF
初始化数据库(节点1)

生成/dm/dbconf/dsc01和dsc02两个目录,并生成配置文件 dm.ini 和 dmmal.ini。

# 仅在一个节点执行,如节点1执行:
/dm/dbms/bin/dminit control=/dm/dbconf/dminit.ini

# 拷贝dsc02_config目录到节点2
scp -r dsc02 172.168.0.202:/dm/dbconf/
手工启动数据库
# 各个节点运行

## 节点1
dmserver /dm/dbconf/dsc01_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini

## 节点2
dmserver /dm/dbconf/dsc02_config/dm.ini dcr_ini=/dm/dbconf/dmdcr.ini
配置服务名配置dm_svc.conf服务名文件
cat >> /etc/dm_svc.conf <<-'EOF'
dmdsc_svc=(192.168.10.201:5237,192.168.10.202:5237)
SWITCH_TIME=(10000) # 在服务器之间切换的次数(超过设置次数没有连接到有效数据库时,断开连接并报错)
SWITCH_INTERVAL=(100) # 在服务器之间切换的时间间隔,单位为毫秒
EOF

服务注册

用法
/dm/dbms/script/root/dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file]
        [-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file]
        [-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file]
        [-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info]
        [-dmap_ini dmap_ini_file] [-dpc_mode SP|MP|BP] [-m open|mount] [-y dependent_service] [-auto true|false]
  or dm_service_installer.sh [-s service_file_path]
  or dm_service_installer.sh -h

   -t               服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss
   -p               服务名后缀,对于dmimon,dmap服务类型无效
   -dm_ini          dm.ini文件路径
   -watcher_ini     dmwatcher.ini文件路径.
   -monitor_ini     dmmonitor.ini文件路径.
   -dcr_ini         dmdcr.ini文件路径.
   -cssm_ini        dmcssm.ini文件路径.
   -dss_ini         dss.ini文件路径.
   -drs_ini         drs.ini文件路径.
   -dras_ini        dras.ini文件路径.
   -dcs_ini         dcs.ini文件路径.
   -dfs_ini         dfs.ini文件路径.
   -dmap_ini        dmap.ini文件路径.
   -dpc_mode        DPC节点类型.
   -server          服务器信息(IP:PORT)
   -auto            设置服务是否自动启动,值为true或false,默认true.
   -m               设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
   -y               设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
   -s               服务脚本路径,设置则忽略除-y外的其他参数选项
   -h               帮助
注册CSS服务
/dm/dbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /db/dbconf/dmdcr.ini -p CSS
注册ASM服务
/dm/dbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /db/dbconf/dmdcr.ini -p ASM -y DmCSSServiceCSS
注册DB服务
# 节点1
/dm/dbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dbconf/dsc01_config/dm.ini -dcr_ini /db/dbconf/dmdcr.ini -p DSC01 -y DmASMSvrServiceASM

# 节点2
/dm/dbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dbconf/dsc02_config/dm.ini -dcr_ini /db/dbconf/dmdcr.ini -p DSC02 -y DmASMSvrServiceASM

启动DMCSS和DMASM 服务

注册服务之后,当操作系统重启时,数据DMCSS和DMASM服务会随着操作系统的启动而启动,数据库此时,也会被拉起来。在停止数据库时,建议手动停止。按依赖顺序,先停数据库服务,然后再停DMASM服务,最后停DMCSS服务

启动服务
启动CSS
systemctl enable --now DmCSSServiceCSS
启动ASM
systemctl enable --now DmASMSvrServiceASM
启动DB
systemctl enable --now DmServiceDSC01
systemctl enable --now DmServiceDSC02
停止服务
关闭DB
systemctl stop DmServiceDSC01
systemctl stop DmServiceDSC02
关闭ASM
systemctl stop DmASMSvrServiceDmAsmsvr
关闭CSS
systemctl stop DmCSSServiceDmCss
检查服务状态
systemctl status -l DmCSSServiceDmCss
systemctl status -l DmASMSvrServiceDmAsmsvr
systemctl status -l DmServiceDWGLPTDB

systemctl status -l DmAPService.service

后期配置优化

归档模式配置

通过INI文件方式配置
将所有节点dm.ini文件ARCH_INI设置为1
vi /dm/dbconf/dsc01_config/dm.int
ARCH_INI = 1
配置dmarch.ini文件
# 节点1
cat > /dm/dbconf/dsc01_config/dm.int<<-'EOF'
ARCHIVE_LOCAL1]
  ARCH_TYPE            = LOCAL
  ARCH_DEST            = /dmarch/local  
  ARCH_FILE_SIZE       = 2048
  ARCH_SPACE_LIMIT     = 51200
[ARCH_REMOTE1]
  ARCH_TYPE            = REMOTE
  ARCH_DEST            = DSC02   # 设置为远程数据库实例名,表示 REDO 日志发送到这个节点
  ARCH_INCOMING_PATH   = /dmarch/remote #设置为本地存储路径,用于保存 ARCH_DEST实例发送的REDO 日志
  ARCH_FILE_SIZE       = 2048
  ARCH_SPACE_LIMIT     = 51200
EOF

# 节点2
cat > /dm/dbconf/dsc02_config/dm.int<<-'EOF'
ARCHIVE_LOCAL1]
  ARCH_TYPE            = LOCAL
  ARCH_DEST            = /dmarch/local
  ARCH_FILE_SIZE       = 2048
  ARCH_SPACE_LIMIT     = 51200
[ARCH_REMOTE1]
  ARCH_TYPE            = REMOTE
  ARCH_DEST            = DSC01
  ARCH_INCOMING_PATH   = /dmarch/remote #设置为本地存储路径,用于保存 ARCH_DEST实例发送的REDO 日志
  ARCH_FILE_SIZE       = 2048
  ARCH_SPACE_LIMIT     = 51200
EOF
重启服务
systemctl stop  DmServiceDSC01
systemctl stop  DmServiceDSC02

systemctl start DmServiceDSC01
systemctl start DmServiceDSC02
通过SQL语句方式配置
实例 dsc01 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc02, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dm_remote_arch';
alter database open;
实例 dsc02 上配置
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=102400';
alter database add archivelog 'DEST=dsc01, TYPE=REMOTE, FILE_SIZE=1024, SPACE_LIMIT=102400, INCOMING_PATH=/dm_remote_arch';
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

配置监视器

配置dmcssm.ini文件
cat > /dm/dbconf/dmcssm.ini <<-'EOF'
#与 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635

#配置所有 CSS 的连接信息
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP          = 172.168.0.201:9341
CSSM_CSS_IP          = 172.168.0.202:9341
CSSM_LOG_PATH        = /dm/dbms/log      # 监视器日志文件存放路径
CSSM_LOG_FILE_SIZE   = 1024               # 每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0              # 不限定日志文件总占用空间
EOF
启动监视器检查服务状态
#交互模式启动监视器
dmcssm INI_PATH=/dm/dbconf/dmcssm.ini
# 输入show

image-20211017010819732

命令说明

监视器提供一系列命令,支持集群的状态信息查看以及节点的故障处理,可输入 help 命令,查看命令使用说明

命令名称 说明
help 显示帮助信息
show [group_name] 显示指定的组信息,如果没有指定 group_name,则显示所有组信息
show config 显示 dmdcr_cfg.ini 的配置信息
show monitor 显示当前连接到主 CSS 的所有监视器信息
set group_name auto restart on 打开指定组的自动拉起功能(只修改 dmcss 内存值)
set group_name auto restart off 关闭指定组的自动拉起功能(只修改 dmcss 内存值)
open force group_name 强制 open 指定的 ASM 或 DB 组
ep startup group_name 启动指定的 ASM 或 DB 组
ep stop group_name 退出指定的 ASM 或 DB 组
ep halt group_name.ep_name 强制退出指定组中的指定节点
extend node 联机扩展节点
ep crash group_name.ep_name 手动指定节点故障
check crash over group_name 检查指定组故障处理是否真正结束
exit 退出监视器

通过系统视图检查

DMDSC信息
实例状态
select NAME,INSTANCE_NAME,INSTANCE_NUMBER from v$instance;
select * from v$dsc_ep_info;

img

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

img

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

img

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

image-20211018152024266

统计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;

img

查看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;

原文地址:https://www.cnblogs.com/binliubiao/p/15416631.html