暂无图片
暂无图片
17
暂无图片
暂无图片
暂无图片

教你安装达梦高可用(X86 达梦V8 DSC)

原创 凯多 2021-08-23
3511

[TOC]

1 架构拓扑

img

2 规划信息

2.1 基本信息

DM1 DM2
Public-IP 168.5.80.30 168.5.80.31
Priv-IP 100.100.100.1 100.100.100.2
内存 8G 8G
操作系统 rhel7.6 rhel7.6
本地磁盘 50GB 50GB
共享磁盘 50GB 50GB
DB_NAME TESTDB TESTDB
实例名 TEST1 TEST2
ASM ASM1 ASM2

2.2 共享存储

共享存储
/dev/sdb RAW1 dcr disk 1G
/dev/sdc RAW2 voting disk 1G
/dev/sdd RAW3 log disk 8G
/dev/sde RAW4 data disk1 39G

2.3 安装路径

用途 路径
安装软件路径 /u01/dmins
DM_HOME /u01/app/dm
集群配置目录 /u01/dcs
本地归档目录 /arch
备份路径 /dmbackup

3 初始化参数规划实例

以Oracle为例,从 ORACLE 迁移一个24小时在线交易型系统,数据量 300G 以上,表数量 500张以上,表含有少量 VARCHAR2(4000)字段,日增数据量 10 万条以上,建议:

参数
簇大小 16
页大小 8K
日志文件大小 4*2048M
时区 +8:00
字符串比较大小写敏感
字符集 GB18030
VARCHAR 类型以字符为单位
改进字符串HASH算法

4 安装前准备工作

4.1 安装介质准备

根据操作系统版本和CPU架构下载达梦安装介质(DSC集群介质包含在达梦数据库安装内)。

4.2 操作系统检查

(1) 查看OS版本

[root@dm1 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)

[root@dm2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)

(2)查看OS位数

[root@dm1 ~]# getconf LONG_BIT
64

[root@dm2 ~]# getconf LONG_BIT
64

(3)内存和swap

当物理内存在16GB以内时,交换空间(swap)的大小应该与物理内存相等,当物理内存大于16GB时,交换空间的大小在16GB或以上。

[root@dm1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        449M        6.8G         13M        418M        6.9G
Swap:          2.0G          0B        2.0G

[root@dm2 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        448M        6.8G         13M        429M        6.9G
Swap:          2.0G          0B        2.0G

(4)检查/tmp空间的大小,至少在2GB以上。

(5)数据库软件安装在目录,可用空间40GB以上。

(6)安装介质目录所需空间5GB以上。

4.3 关闭SELinux

#临时关闭selinux
setenforce 0
#查看selinux状态
getenforce
#永久关闭
#vim /etc/selinux/config修改SELINUX=disabled

4.4 永久关闭防火墙

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

systemctl stop iptables
systemctl disable iptables

#或者只开放数据库端口: 
firewall-cmd --zone=public --add-port=54321/tcp --permanent systemctl restart firewalld firewall-cmd --list-ports

4.5 关闭不必要的系统服务

作为一个用途广泛的服务器操作系统,其自带了大量的系统服务,这些系统服务为硬件设备、安全、性能、系统诊断等各方面提供了相应的机制和功能。但某些缺省运行的系统服务会有如下的问题:

(1) 过多占用系统资源。

(2) 一些安全相关的系统服务可能会使数据库运行不正常或异常故障,比如iptables服务。

(3) 一些系统诊断相关的系统服务可能影响数据库的性能,比如trace-cmd服务。

(4) 一些性能或节能相关的系统服务,可能会使操作系统和数据库运行不稳定,比如cpuspeed服务。

以下是实际核心生产系统上为开启状态的系统服务列表:

systemctl list-unit-files
显示结果略

关闭服务参考:

systemctl disable iptables.service
systemctl disable rhnsd.service
systemctl disable isdn.service
systemctl disable avahi-daemon.service
systemctl disable avahi-dnsconfd.service
systemctl disable bluetooth.service
systemctl disable hcid.service
systemctl disable capi.service
systemctl disable hidd.service
systemctl disable irqbalance.service
systemctl disable mcstrans.service
systemctl disable pcscd.service
systemctl disable gpm.service
systemctl disable portmap.service
systemctl disable rpcgssd.service
systemctl disable rpcidmapd.service
systemctl disable rpcsvcgssd.service
systemctl disable portmap.service
systemctl disable sendmail.service
systemctl disable xend.service
systemctl disable cups.service
systemctl disable blk-availability.service
systemctl disable abrt-ccpp.service
systemctl disable abrtd.service
systemctl disable certmonger .service
systemctl disable cpuspeed.service
systemctl disable irqbalance.service
systemctl disable trace-cmd.service
systemctl disable NetworkManager.service
systemctl disable yum-updatesd.service
systemctl disable xfs.service
systemctl disable rawdevices.service
systemctl disable iscsid.service
systemctl disable acpid.service
systemctl disable auditd.service
systemctl disable firstboot.service
systemctl disable haldaemon.service
systemctl disable microcode_ctl.service
systemctl disable restorecond.service
systemctl disable setroubleshoot.service
systemctl disable lvm2-monitor.service
systemctl disable mdmonitor.service

4.6 修改主机名及hosts文件

一定要测验ip互不互通

永久修改主机名

vim /etc/hosts 

168.5.80.151 dm1
168.5.80.152 dm2

100.100.100.1 dm1-priv
100.100.100.2 dm2-priv

4.7 时间和时间同步

先date -s

再配置ntp

4.8 创建用户及用户组

/usr/sbin/groupadd -g 1001 dba
/usr/sbin/groupadd -g 1009 dinstall
/usr/sbin/groupadd -g 1002 oper

useradd -m -u 1109 -g dinstall -G dba,oper -d /home/dm -s /bin/bash -c "dm Software Owner" dm

passwd dm     ---evecom!123

4.9 添加用户环境变量

注意,在DM 软件安装时会自动添加DM_HOME 和 LD_LIBRARY_PATH 变量,这里只需要添加PATH即可。

export PATH
export PATH="/u01/app/dm/bin:$PATH"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/u01/app/dm/bin"
export DM_HOME="/u01/app/dm"

另外,在有的版本中有配置“DM_INSTALL_TMPDIR=安装目录”(说是因为安装达梦数据库时会产生1G的临时空间量),此处如“DM_INSTALL_TMPDIR=/u01/dmins”,但必要性有待商榷。

4.10 创建数据库相关目录和赋权

 mkdir -p /u01/app/dm  
 mkdir -p /u01/dmins  
 mkdir -p /u01/dsc 
 mkdir -p /arch
 mkdir -p /dmbackup
 
 chown -R dm:dinstall /u01/app/dm 
 chmod -R 775 /u01/app/dm 
 chown -R dm:dinstall /u01/dmins
 chmod -R 775 /u01/dmins
 chown -R dm:dinstall /u01/dsc
 chmod -R 775 /u01/dsc
 chown -R dm:dinstall /arch
 chmod -R 775 /arch
 chown -R dm:dinstall /dmbackup
 chmod -R 775 /dmbackup

其中软件目录: /u01/app/dm

安装目录:/u01/dmins

集群配置目录:/u01/dsc

归档目录:/arch

备份目录:/dmbackup

4.11 大内存页设置

下面是大内存页设置的具体步骤:

(1) 确认操作系统支持大内存页

有的操作系统内核不支持大内存页,通过下面的命令可以确认系统是否支持大内存页。

grep -i huge /proc/meminfo

AnonHugePages:     98304 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

上述信息表明了内核支持大内存页,大内存页面大小为2M。

(2) 计算需要的大内存页数量

根据系统情况确定共享内存大小,在初始情况下可以设置共享内存为物理内存一半大小,假设物理内存为128G,达梦数据库共享内存会达到70%,所以我们一般会设置大内存总量比共享内存略大,比如设置90G。

(3) 设置内核参数

在/etc/sysctl.conf文件中增加一行:

##需要根据共享内存来计算,可略大于计算出来的值.
vm.nr_hugepages = 16408  # MEM=64;DBMEM=32;expr ${DBMEM} \* 1024 \* 1024 \* 1024 / 2048 / 1024 + 24;
vm.nr_hugepages = 32792  # MEM=128;DBMEM=64; expr ${DBMEM} \* 1024 \* 1024 \* 1024 / 2048 / 1024 + 24;
vm.nr_hugepages = 65560  # MEM=256;DBMEM=128; expr ${DBMEM} \* 1024 \* 1024 \* 1024 / 2048 / 1024 + 24;
vm.nr_hugepages = 81944  # MEM=328;DBMEM=160; expr ${DBMEM} \* 1024 \* 1024 \* 1024 / 2048 / 1024 + 24;
vm.nr_hugepages = 131096 # MEM=512;DBMEM=256; expr ${DBMEM} \* 1024 \* 1024 \* 1024 / 2048 / 1024 + 24;

此处总内存为8,这里取6,大页参数为3096

然后用sysctl –p命令使参数生效。

(4) 检查大内存页数量:

grep  -i huge /proc/meminfo

在得到的结果中HugePages_Total值应该为3096,否则可能是操作系统内存碎片化严重,没有足够的连续的内存用于大页面内存,此种情况下需要重启服务器。

(5) 设置用户的limits。

在/etc/security/limits.conf文件中增加用户的lock memory设置。

#memlock=vm.nr_hugepages*2048=3096*2048=6340608,memlock表示最大锁定内存地址空间

dm soft memlock 6340608
dm hard memlock 6340608

可以比实际的可用大内存页大很多。但是不能小于实际的可用的大内存页,可以为物理内存的90%。

重启服务器,或者等到4.14做完一起重启也可以。

检查HugePages_Total大小,需与/ets/sysctl.conf中参数值vm.nr_hugepages一致,检查命令如下:

[root@localhost ~]# grep Huge /proc/meminfo

4.12 Limit设置

vim /etc/security/limits.conf

dm      soft   nofile     1048576
dm      hard   nofile     1048576
dm      soft   nproc      131072
dm      hard   nproc      131072
dm      soft   stack      10240
dm      hard   stack      32768
dm      soft   core       6291456
dm      hard   core       6291456

ulimit -a

4.13 内核参数调整

vim /etc/sysctl.conf

fs.file-max = 6815744   #系统下可打开的最大文件句柄数,要大于进程数
kernel.sem = 10000  10240000 10000 1024
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 40960000
vm.dirty_ratio=20
vm.dirty_background_ratio=3
vm.dirty_writeback_centisecs=100
vm.dirty_expire_centisecs=500
vm.swappiness=10
vm.min_free_kbytes=524288

sysctl -p

4.14 关闭操作系统Transparent Huge pages(透明大页)

添加transparent_hugepage=never 参数到/etc/default/grub文件的GRUB_CMDLINE_LINUX选项后面,例如:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

使其生效

[root@dm1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-990d0aff481e4ecf9a0199ac01deb063
Found initrd image: /boot/initramfs-0-rescue-990d0aff481e4ecf9a0199ac01deb063.img
done

重启服务器。

reboot

该配置在重启机器后生效,重启后查看以下命令显示为[never]即已生效。

[root@dm1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

5 DMDSC集群安装

5.1 DM软件安装(双节点分别只单独安装数据库软件)

5.1.1 拷贝达梦数据库介质到服务器上

将iso上传并挂载。

[root@dm2 ~]# mount /u01/dmins/dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@dm2 ~]# cd /mnt
[root@dm2 mnt]# ls
DM8 Install.pdf  DMInstall.bin
[root@dm2 mnt]# cp DMInstall.bin /u01/dmins/

赋权

 chown dm:dinstall -R /u01/dmins/
 chmod -R 775 /u01/dmins
5.1.2 执行DMInstall.bin

以dm用户执行./DMInstall.bin,开始安装。

5.1.3 选择时区和语言

image-20210706173038698

5.1.4 欢迎界面

image-20210706173109199

5.1.5 许可证协议

image-20210706173134581

5.1.6 验证KEY文件

直接next

image-20210706173200785

5.1.7 选择安装方式

因为是服务端,应该选择“服务器安装”,以防万一选择典型安装

image-20210706173334199

5.1.8 选择安装目录

image-20210706173406636

选择ok

image-20210706173431734

5.1.9 安装前小结

image-20210706173453554

5.1.10 安装

image-20210706173549077

root执行脚本,点击确定,完成。

image-20210706174117724

在安装结束的时候,会提示我们是否初始化数据库,我们这里选择不初始化,结束安装,同理安装第二节点 数据库软件。

image-20210706174255099

5.2 DSC集群配置

5.2.1 存储配置(双节点)

官方文档方法如下,但不适用于高版本的操作系统(我的是银河麒麟V10和rhel7.6),仅用于参考。

#提供共享存储使得两台主机都能识别到设备。
[root@dm1 dmins]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
36000c29866cd10649d44ef119449f6f7
[root@dm1 dmins]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
36000c29d2079f9268d336c866b563d1f
[root@dm1 dmins]# /usr/lib/udev/scsi_id -g -u -d /dev/sdd
36000c2963f004cfcea8d84a6f4cbd833
[root@dm1 dmins]# /usr/lib/udev/scsi_id -g -u -d /dev/sde
36000c297059291abb8201678a140dbcf

#绑定udev
vim /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw*",OWNER="dm",GROUP="dinstall",MODE="660"

#重启服务器
[root@dm1 ~]# ll /dev/raw/*
crw-rw---- 1 dm dinstall 162, 1 Jul  6 16:52 /dev/raw/raw1
crw-rw---- 1 dm dinstall 162, 2 Jul  6 16:52 /dev/raw/raw2
crw-rw---- 1 dm dinstall 162, 3 Jul  6 16:52 /dev/raw/raw3
crw-rw---- 1 dm dinstall 162, 4 Jul  6 16:52 /dev/raw/raw4
crw-rw---- 1 dm dinstall 162, 0 Jul  6 16:52 /dev/raw/rawctl

(1) 提供共享存储

提供共享存储使得两台主机都能识别到设备。

(2)配置多路径

根据需求配置多路径。

(3)绑定udev

执行脚本

for i in b c d e;  
do  
echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\",PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asm-disk$i\",OWNER=\"dm\", GROUP=\"dinstall\",MODE=\"0660\"" >>/etc/udev/rules.d/99-dm-devices.rules 
done

查看

[root@dm1 ~]# cat /etc/udev/rules.d/99-dm-devices.rules
KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29866cd10649d44ef119449f6f7", SYMLINK+="asm-diskb",OWNER="dm", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29d2079f9268d336c866b563d1f", SYMLINK+="asm-diskc",OWNER="dm", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2963f004cfcea8d84a6f4cbd833", SYMLINK+="asm-diskd",OWNER="dm", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c297059291abb8201678a140dbcf", SYMLINK+="asm-diske",OWNER="dm", GROUP="dinstall",MODE="0660"

使udev重新生效

udevadm trigger --type=devices --action=change 
udevadm control --reload-rules

(4)绑定raw设备

# chmod +x /etc/rc.d/rc.local

# vim /etc/rc.d/rc.local

#Dcr
raw /dev/raw/raw1 /dev/asm-diskb  #如果是多路径就写/dev/mapper/mpathB
sleep 2
chown dm:dinstall /dev/raw/raw1
chmod 660 /dev/raw/raw1
#Votingdisk
raw /dev/raw/raw2 /dev/asm-diskc
sleep 2
chown dm:dinstall /dev/raw/raw2
chmod 660 /dev/raw/raw2
#Log
raw /dev/raw/raw3 /dev/asm-diskd
sleep 2
chown dm:dinstall /dev/raw/raw3
chmod 660 /dev/raw/raw3
#Data
raw /dev/raw/raw4 /dev/asm-diske
sleep 2
chown dm:dinstall /dev/raw/raw4
chmod 660 /dev/raw/raw4
touch /var/lock/subsys/local

重启服务器

[root@dm2 ~]# ll /dev/asm*
lrwxrwxrwx 1 root root 3 Jul  7 11:27 /dev/asm-diskb -> sdb
lrwxrwxrwx 1 root root 3 Jul  7 11:27 /dev/asm-diskc -> sdc
lrwxrwxrwx 1 root root 3 Jul  7 11:27 /dev/asm-diskd -> sdd
lrwxrwxrwx 1 root root 3 Jul  7 11:27 /dev/asm-diske -> sde
[root@dm2 ~]# ll /dev/sd*
brw-rw---- 1 root disk     8,  0 Jul  7 11:27 /dev/sda
brw-rw---- 1 root disk     8,  1 Jul  7 11:27 /dev/sda1
brw-rw---- 1 root disk     8,  2 Jul  7 11:27 /dev/sda2
brw-rw---- 1 dm   dinstall 8, 16 Jul  7 11:27 /dev/sdb
brw-rw---- 1 dm   dinstall 8, 32 Jul  7 11:27 /dev/sdc
brw-rw---- 1 dm   dinstall 8, 48 Jul  7 11:27 /dev/sdd
brw-rw---- 1 dm   dinstall 8, 64 Jul  7 11:27 /dev/sde
[root@dm2 ~]# ll /dev/raw/*
crw-rw---- 1 dm   dinstall 162, 1 Jul  7 11:27 /dev/raw/raw1
crw-rw---- 1 dm   dinstall 162, 2 Jul  7 11:27 /dev/raw/raw2
crw-rw---- 1 dm   dinstall 162, 3 Jul  7 11:27 /dev/raw/raw3
crw-rw---- 1 dm   dinstall 162, 4 Jul  7 11:27 /dev/raw/raw4
crw-rw---- 1 root disk     162, 0 Jul  7 11:27 /dev/raw/rawctl

通过 blockdev --getsize64 /dev/raw/raw1 命令查看裸设备大小

[root@dm1 ~]# blockdev --getsize64 /dev/raw/raw1
1073741824
[root@dm1 ~]# blockdev --getsize64 /dev/raw/raw2
1073741824
[root@dm1 ~]# blockdev --getsize64 /dev/raw/raw3
8589934592
[root@dm1 ~]# blockdev --getsize64 /dev/raw/raw4
41875931136

5.2.2 准备dmdcr_cfg.ini配置文件(在一个节点执行)

准备dmdcr_cfg.ini配置文件。

节点一的dm用户编辑

vim /u01/dsc/dmdcr_cfg.ini

如下,其实是依次写了3个磁盘组,分别为CSS(TESTCSS)、ASM(TESTASM)、DB(TESTDSC)。

注意:以下注释最好去掉

DCR_N_GRP = 3
#表决磁盘路径
DCR_VTD_PATH = /dev/raw/raw2 
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = TESTCSS     
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60

[TESTCSS]
DCR_EP_NAME = DM1
DCR_EP_HOST = 100.100.100.1
DCR_EP_PORT = 9341

[TESTCSS]
DCR_EP_NAME = DM2
DCR_EP_HOST = 100.100.100.2
DCR_EP_PORT = 9343

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = TESTASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60

[TESTASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 100.100.100.1
DCR_EP_PORT = 9349
#按5.2.1如果是裸设备就填这个,如果是多路径就填多路径的目录
DCR_EP_ASM_LOAD_PATH = /dev/raw 


[TESTASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 100.100.100.2
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = TESTDCS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60

[TESTDCS]
DCR_EP_NAME = TEST1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741

[TESTDCS]
DCR_EP_NAME = TEST2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742

5.2.3 DMASMCMD进行初始化(在一个节点执行)

dm用户

进入dmasmcmd后,将以下语句一条一条执行,注意不要加分号。

create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'
init dcrdisk '/dev/raw/raw1' from '/u01/dsc/dmdcr_cfg.ini' identified by 'dm'
init votedisk '/dev/raw/raw2' from '/u01/dsc/dmdcr_cfg.ini'

执行结果如下

[dm@dm1 dsc]$ dmasmcmd
DMASMCMD V8
ASM>
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
[Trace]The ASM initialize dcrdisk /dev/raw/raw1 to name DMASMdcr
Used time: 205.046(ms).
ASM>create votedisk '/dev/raw/raw2' 'vote'
[Trace]The ASM initialize votedisk /dev/raw/raw2 to name DMASMvote
Used time: 168.293(ms).
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
[Trace]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMLOG0
Used time: 174.536(ms).
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
[Trace]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDATA0
Used time: 134.706(ms).
ASM>init dcrdisk '/dev/raw/raw1' from '/u01/dsc/dmdcr_cfg.ini' identified by 'dm'
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
Used time: 159.236(ms).
ASM>init votedisk '/dev/raw/raw2' from '/u01/dsc/dmdcr_cfg.ini'
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
Used time: 192.601(ms).


5.2.4 dm用户创建dmasvrmal.ini文件(两节点都执行)

vim /u01/dsc/dmasvrmal.ini

[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 100.100.100.1
MAL_PORT = 7236

[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 100.100.100.2
MAL_PORT = 7237


5.2.5 创建DMDCR.INI配置文件(两节点都执行)

两个节点分别配置 dmdcr.ini。其中dmdcr_path相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqo 分别为0和1。

以下注释仅为参考,实际配置时去掉。

(1)DM1(100.100.100.1):

vim /u01/dsc/dmdcr.ini

DMDCR_PATH = /dev/raw/raw1
#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_MAL_PATH = /u01/dsc/dmasvrmal.ini 
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /u01/app/dm/bin/dmasmsvr dcr_ini=/u01/dsc/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
#下面的/u01/dsc/test1_config/dm.ini在初始化步骤中会生成
DMDCR_DB_STARTUP_CMD = /u01/app/dm/bin/dmserver path=/u01/dsc/test1_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini


(2)DM2(100.100.100.2):

vim /u01/dsc/dmdcr.ini

DMDCR_PATH = /dev/raw/raw1
#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_MAL_PATH = /u01/dsc/dmasvrmal.ini 
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动,配置为0表示0s自动拉起?
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /u01/app/dm/bin/dmasmsvr dcr_ini=/u01/dsc/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /u01/app/dm/bin/dmserver path=/u01/dsc/test2_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini


5.2.6 启动DMCSS、DMASM服务进程(两节点都执行)

注意:一节点先启动DMCSS,二节点再启动DMCSS,双节点同时启动DMASM。
手动启动 dmcss 命令(DM_HOME/bin下执行):

./dmcss DCR_INI=/u01/dsc/dmdcr.ini

节点一

image-20210707163838717

节点二

image-20210707163955226

手动启动 dmasmsvr 命令(两个节点同时执行):

./dmasmsvr DCR_INI=/u01/dsc/dmdcr.ini

节点一

image-20210707164200826

节点二

image-20210707164220556

最终节点一的dmcss显示如下

image-20210707164303846

5.2.7 用dmasmtool创建磁盘组(在一个节点执行)
[dm@dm1 bin]$ cd /u01/app/dm/bin
[dm@dm1 bin]$ ./dmasmtool DCR_INI=/u01/dsc/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
Used time: 108.134(ms).
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
Used time: 80.626(ms).
ASM>

其他dmasmtool的用途

ASM>help
Format: create diskgroup name asmdisk file_path
Usage:  create diskgroup 'DMDATA' asmdisk '/home/data/asmdisks/disk0.asm'

Format: alter diskgroup name add asmdisk file_path
Usage:  alter diskgroup 'DMDATA' add asmdisk '/home/data/asmdisks/disk1.asm'

Format: drop diskgroup name
Usage:  drop diskgroup 'DMDATA'

Format: create asmfile file_path size num(M)
Usage:  create asmfile '+DMDATA/sample.dta' size 20

Format: alter asmfile file_path extend to num(M)
Usage:  alter asmfile '+DMDATA/sample.dta' extend to 20

Format: alter asmfile file_path truncate to num(M)
Usage:  alter asmfile '+DMDATA/sample.dta' truncate to 20

Format: delete asmfile file_path
Usage:  delete asmfile '+DMDATA/sample.dta'

Format: spool file_path [create|replace|append]
Usage:  spool /home/data/asmdisks/spool.txt

Format: spool off
Usage:  spool off

Format: cd [path]
Usage:  cd +DMDATA/test

Format: cp [-rf] src_file_path dst_file_path
Usage:  cp '+DMDATA/a/sample.dta' '+DMDATA/a/b.dta'
        cp -r '+DMDATA/a/newfile.dat' '+DMDATA/b'
        cp -f '+DMDATA/a/*' '+DMDATA/c'

Format: rm [-f] file_path
        rm -r[f] directories
Usage:  rm '+DMDATA/a/sample.dta'
        rm -r '+DMDATA/a/'

Format: mkdir [-p] dir_path
Usage:  mkdir '+DMDATA/a'
        mkdir -p '+DMDATA/a'

Format: find path file_name
Usage:  find +DMDATA/a 'sample.dta'

Format: ls [-lr] [dir_path]
Usage:  ls
        ls -l
        ls -r b*

Format: df
Usage:  df

Format: pwd
Usage:  pwd

Format: lsdg
Usage:  lsdg

Format: lsdsk
Usage:  lsdsk

Format: lsattr
Usage:  lsattr

Format: lsall
Usage:  lsall

Format: password
Usage:  password


查看剩余空间命令

ASM>ls
+
disk groups total [4]......
NO.1     name: DMLOG
NO.2     name: DMDATA
NO.3     name: VOTE
NO.4     name: DCR
Used time: 1.770(ms).
ASM>lsdg
total 4 groups......
1 disk_group:
         name: DMLOG
         id: 0
         au_size: 1.00 MB
         extent_size: 4
         total_size: 8.00 GB
         free_size: 6.99 GB
         total_file_num: 6
2 disk_group:
         name: DMDATA
         id: 1
         au_size: 1.00 MB
         extent_size: 4
         total_size: 39.00 GB
         free_size: 38.54 GB
         total_file_num: 26
3 disk_group:
         name: VOTE
         id: 125
         au_size: 1.00 MB
         extent_size: 4
         total_size: 1.00 GB
         free_size: 1000.00 MB
         total_file_num: 2
4 disk_group:
         name: DCR
         id: 126
         au_size: 1.00 MB
         extent_size: 4
         total_size: 1.00 GB
         free_size: 1000.00 MB
         total_file_num: 2
Used time: 2.919(ms).


5.2.8 创建dminit配置文件(在一个节点执行)

dm用户

vim /u01/dsc/dminit.ini

db_name = TESTDB
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
[TEST1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /u01/dsc/test1_config
port_num = 5236
mal_host = 100.100.100.1
mal_port = 9340
log_path = +DMLOG/log/test1_log01.log
log_path = +DMLOG/log/test1_log02.log
[TEST2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /u01/dsc/test2_config
port_num = 5236   #注意这里官方文档为5237,和6.2故障重连有关
mal_host = 100.100.100.2
mal_port = 9341
log_path = +DMLOG/log/test2_log01.log
log_path = +DMLOG/log/test2_log02.log

5.2.9 使用dminit初始化数据库(在一个节点执行)

(1)在节点一(100.100.100.1)启动dminit工具初始化数据库,dminit执行完成后,会在config_path目录(/u01/dsc/test1_config/和/u01/dsc/test2_config/)下生成配置文件dm.ini和dmmal.ini,检查是否生成。

[dm@dm1 bin]$ cd /u01/app/dm/bin
[dm@dm1 bin]$ ./dminit control=/u01/dsc/dminit.ini
initdb V8
db version: 0x7000b
file dm.key not found, use default license!
License will expire on 2021-09-04

 log file path: +DMLOG/log/test1_log01.log


 log file path: +DMLOG/log/test1_log02.log


 log file path: +DMLOG/log/test2_log01.log


 log file path: +DMLOG/log/test2_log02.log

write to dir [+DMDATA/data/TESTDB].
create dm database success. 2021-07-08 09:26:58


(2)检查dm.ini和dmmal.ini是否生成

[dm@dm1 dsc]$ ll /u01/dsc/test1_config/dm.ini
-rw-r--r-- 1 dm dinstall 49819 Jul  8 09:26 /u01/dsc/test1_config/dm.ini
[dm@dm1 dsc]$ ll /u01/dsc/test1_config/dmmal.ini
-rw-r--r-- 1 dm dinstall 208 Jul  8 09:26 /u01/dsc/test1_config/dmmal.ini
[dm@dm1 dsc]$ ll /u01/dsc/test2_config/dm.ini
-rw-r--r-- 1 dm dinstall 49819 Jul  8 09:26 /u01/dsc/test2_config/dm.ini
[dm@dm1 dsc]$ ll /u01/dsc/test2_config/dmmal.ini
-rw-r--r-- 1 dm dinstall 208 Jul  8 09:26 /u01/dsc/test2_config/dmmal.ini


(3)将在节点一生成的/u01/dsc/test2_config目录拷贝到到节点二(节点一的test2_config文件可删除)。

[dm@dm1 dsc]$ scp -r test2_config/ dm@168.5.80.152:/u01/dsc
dm@168.5.80.152's password:
dmmal.ini                                                                                              100%  208   125.4KB/s   00:00
dm.ini                                                                                                 100%   49KB  21.5MB/s   00:00
sqllog.ini  

5.2.10 启动数据库服务

注意:双节点同时启动数据库服务。

节点一:

./dmserver /u01/dsc/test1_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini

节点二:

./dmserver /u01/dsc/test2_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini

执行结果如下。

节点一:

这里发现默认安装的license是有时间限制的

[dm@dm1 dsc]$ cd /u01/app/dm/bin
[dm@dm1 bin]$ ./dmserver /u01/dsc/test1_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT  startup...
Database mode = 0, oguid = 0
License will expire on 2021-09-04
check CSS cmd: START NOTIFY, cmd_seq: 2
Control Node change from 255 to 254
check CSS cmd: DCR_LOAD, cmd_seq: 3
check CSS cmd: EP START, cmd_seq: 6
Control Node change from 254 to 0
file lsn: 0
check CSS cmd: EP START2, cmd_seq: 11
ndct db load finished
ckpt2_exec_immediately begin.
ckpt_lsn, ckpt_fil, ckpt_off are set as (0, 0, 4096)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536861696, 1024)
checkpoint: buffer pages flushing...
ckpt_lsn, ckpt_fil, ckpt_off are set as (3, 0, 4096)
checkpoint: 2 pages flushed.
checkpoint finished, rlog free space, used space is (536861696, 1024)
ckpt_lsn, ckpt_fil, ckpt_off are set as (4, 0, 5120)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536862720, 0)
ckpt_lsn, ckpt_fil, ckpt_off are set as (4, 0, 5120)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536862720, 0)
ndct fill fast pool finished
iid page's trxid[1002]
NEXT TRX ID = 1003
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.


节点二:

[dm@dm2 bin]$ ./dmserver /u01/dsc/test2_config/dm.ini dcr_ini=/u01/dsc/dmdcr.ini
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT  startup...
Database mode = 0, oguid = 0
License will expire on 2021-09-04
check CSS cmd: DCR_LOAD, cmd_seq: 4
check CSS cmd: EP START, cmd_seq: 8
Control Node change from 255 to 0
mal_tsk_process_g_crash_lsn_bro, ep_seqno(0), crash_lsn(0)
mal_tsk_process_g_crash_lsn_bro, ep_seqno(1), crash_lsn(0)


节点dmcss如下:

show

css current time:2021-07-08 09:36:17
======= group[name = TESTCSS, seq = 0, type = CSS, Control Node = 0] ===================
ep:     inst_name  seqno  port  mode     sys_status    vtd_status    is_ok     active    guid           ts
        DM1        0      9341  Control Node OPEN          WORKING       OK        TRUE      600071364      600072934
        DM2        1      9343  Normal Node OPEN          WORKING       OK        TRUE      600079466      600081027

self css info:
[ASM1] auto restart = FALSE
[TEST1] auto restart = FALSE

======= group[name = TESTASM, seq = 1, type = ASM, Control Node = 0] ===================
ep:     inst_name  seqno  port  mode     sys_status    vtd_status    is_ok     active    guid           ts
        ASM1       0      9349  Control Node OPEN          WORKING       OK        TRUE      600096545      600098077
        ASM2       1      9351  Normal Node OPEN          WORKING       OK        TRUE      600111600      600113088
===================================================================================

n_ok_ep = 2
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
===================================================================================

======= group[name = TESTDCS, seq = 2, type = DB, Control Node = 0] ===================
ep:     inst_name  seqno  port  mode     sys_status    vtd_status    is_ok     active    guid           ts
        TEST1      0      5236  Control Node STARTUP       WORKING       OK        TRUE      1372945644     1372945792
        TEST2      1      5236  Normal Node STARTUP       WORKING       OK        TRUE      1373000278     1373000387
===================================================================================

n_ok_ep = 2
(0, 0)
(1, 1)
sta = Control Node STARTUP, sub_sta = WAIT_REDO
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
===================================================================================


5.2.11 注册CSS,ASM,DB服务(两个节点都执行)

注意:(1)使用root用户执行。

[root@dm1 mnt]# cd /u01/app/dm/script/root/

(2)注意生成的文件有无.service,修改正确脚本后再执行。

(3)以下注册是为了可以不手动启动CSS,ASM和DB服务(手动启动无法关闭窗口),而是以服务的形式启动。

1 注册CSS服务

(1)节点一:

./dm_service_installer.sh -t dmcss -dcr_ini /u01/dsc/dmdcr.ini -p dm1

[root@dm1 root]# ./dm_service_installer.sh -t dmcss -dcr_ini /u01/dsc/dmdcr.ini -p dm1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServicedm1.service to /usr/lib/systemd/system/DmCSSServicedm1.service.
Finished to create the service (DmCSSServicedm1)


(2)节点二:

./dm_service_installer.sh -t dmcss -dcr_ini /u01/dsc/dmdcr.ini -p dm2

[root@dm2 root]# ./dm_service_installer.sh -t dmcss -dcr_ini /u01/dsc/dmdcr.ini -p dm2
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServicedm2.service to /usr/lib/systemd/system/DmCSSServicedm2.service.
Finished to create the service (DmCSSServicedm2)


2 注册ASM服务

(1)节点一:

./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dsc/dmdcr.ini -p asm1 -y DmCSSServicedm1.service

[root@dm1 root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dsc/dmdcr.ini -p asm1 -y DmCSSServicedm1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrServiceasm1.service to /usr/lib/systemd/system/DmASMSvrServiceasm1.service.
Finished to create the service (DmASMSvrServiceasm1)


(2)节点二:

./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dsc/dmdcr.ini -p asm2 -y DmCSSServicedm2.service

[root@dm2 root]# ./dm_service_installer.sh -t dmasmsvr -dcr_ini /u01/dsc/dmdcr.ini -p asm2 -y DmCSSServicedm2.service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrServiceasm2.service to /usr/lib/systemd/system/DmASMSvrServiceasm2.service.
Finished to create the service (DmASMSvrServiceasm2)


3 注册DB服务

(1)节点一:

./dm_service_installer.sh -t dmserver  -dm_ini /u01/dsc/test1_config/dm.ini -dcr_ini /u01/dsc/dmdcr.ini -p test1 -y DmASMSvrServiceasm1.service

[root@dm1 root]# ./dm_service_installer.sh -t dmserver  -dm_ini /u01/dsc/test1_config/dm.ini -dcr_ini /u01/dsc/dmdcr.ini -p test1 -y DmASMSvrServiceasm1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetest1.service to /usr/lib/systemd/system/DmServicetest1.service.
Finished to create the service (DmServicetest1)


(1)节点二:

./dm_service_installer.sh -t dmserver  -dm_ini /u01/dsc/test2_config/dm.ini -dcr_ini /u01/dsc/dmdcr.ini -p test2 -y DmASMSvrServiceasm2.service

[root@dm2 root]# ./dm_service_installer.sh -t dmserver  -dm_ini /u01/dsc/test2_config/dm.ini -dcr_ini /u01/dsc/dmdcr.ini -p test2 -y DmASMSvrServiceasm2.service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicetest2.service to /usr/lib/systemd/system/DmServicetest2.service.
Finished to create the service (DmServicetest2)


5.2.12 启动和关闭CSS,ASM,DB服务

root用户执行,就不用手动执行还保留窗口了。

      一节点启动
      [root@dm1 ~]# systemctl start DmCSSServicedm1
      [root@dm1 ~]# systemctl start DmASMSvrServiceasm1
      二节点启动
      [root@dm2 ~]# systemctl start DmCSSServicedm2
      [root@dm2 ~]# systemctl start DmASMSvrServiceasm2
      启动DMDB服务,分别在两个节点启动
      [root@dm1 ~]# systemctl start DmServicetest1
      [root@dm2 ~]# systemctl start DmServicetest2
     
      停止DMDB服务,分别在两个节点启动
      [root@dm1 ~]# systemctl stop DmServicetest1
      [root@dm2 ~]# systemctl stop DmServicetest2
      一节点停止
      [root@dm1 ~]# systemctl stop DmASMSvrServiceasm1
      [root@dm1 ~]# systemctl stop DmCSSServicedm1
      二节点停止
      [root@dm2 ~]# systemctl stop DmASMSvrServiceasm2
      [root@dm2 ~]# systemctl stop DmCSSServicedm2

6 安装后配置调整

6.1 进入命令行检查

注意:SYSDBA默认密码为SYSDBA,且为大写。

6.1.1 检查实例
[dm@dm1 dsc]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 25.358(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          TEST1


[dm@dm2 ~]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 37.482(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          TEST2

6.1.2 检查集群
SQL> select * from v$dsc_ep_info;

LINEID     EP_NAME EP_SEQNO    EP_GUID              EP_TIMESTAMP         EP_MODE      EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1          TEST1   0           1372945644           1372953827           Control Node OK
2          TEST2   1           1373000278           1373008448           Normal Node  OK

used time: 248.823(ms). Execute id is 598.


6.2 配置故障自动重连服务(dm_svc.conf,双节点)

6.2.1 配置

配置DMDSC集群,要求配置连接服务名,以实现故障自动重连(双活的前提)。连接服务名可以在DM提供的JDBC、DPI等接口中使用,连接数据库时指定连接服务名,接口会随机选择一个IP进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个IP进行连接,直至连接成功或者遍历了所有IP。
可以通过编辑dm_svc.conf文件,配置连接服务名。dm_svc.conf配置文件在DM安装时生成,Windows平台下位于%SystemRoot%\system32目录,Linux平台下位于/etc目录。

vim /etc/dm_svc.conf

dmdsc_svc=(100.100.100.1:5236,100.100.100.2:5236)  #这里如果是官方文档,实例2应为5237
SWITCH_TIME=(10000) #检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。
SWITCH_INTERVAL=(1000) #表示在服务器之间切换的时间间隔,单位为毫秒
TIME_ZONE=(480)
LANGUAGE=(en)

进入命令行,@符号后面即6.1配置的服务名。

[dm@dm1 dsc]$ disql SYSDBA/SYSDBA@dmdsc_svc

Server[100.100.100.2:5236]:mode is normal, state is open
login used time : 459.445(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          TEST2

used time: 175.717(ms). Execute id is 101.


6.2.2 测试故障重连

(1)连接到dsc

[dm@dm1 ~]$ disql SYSDBA/SYSDBA@dmdsc_svc

Server[100.100.100.2:5236]:mode is normal, state is open
login used time : 239.979(ms)
disql V8
SQL>


(2)确认当前用户已经连接到的节点实例

SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          TEST2

used time: 65.935(ms). Execute id is 101.


用户当前连接到节点2上TEST2实例。不要退出这个会话,第4步还是在这个会话中执行。

(3)关闭TEST2实例 ,或者将节点2所在的这台主机关闭。

(4)等待几秒后,再次执行这条语句,还在会话1中执行,再次查询当前用户已经连接到的节点实例。

SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          TEST1

used time: 289.150(ms). Execute id is 302.


可见,关闭节点2,用户连接被自动转移到节点1的TEST1实例上,而用户并无察觉,实现了故障的自动转移。

最后修改时间:2021-08-24 08:52:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论