| 磁盘名称 | 磁盘大小 | 虚拟设备节点编号 | 磁盘路径 |
|---|---|---|---|
| DCR | 2G | SCSI 0:1 | E:\DSC_share\DSC_dcr.vmdk |
| VOTE | 2G | SCSI 0:2 | E:\DSC_share\DSC_vtd.vmdk |
| ARCH | 4G | SCSI 0:3 | E:\DSC_share\DSC_arch.vmdk |
| REDO | 4G | SCSI 0:4 | E:\DSC_share\DSC_rlog.vmdk |
| DATA | 10G | SCSI 0:5 | E:\DSC_share\DSC_data.vmdk |
首先在dsc_01上创建5块共享磁盘,步骤如下:
1、确保虚拟机关闭
2、右键左边栏上的虚拟机 —> 添加 —> 硬盘
3、选择下一步 —> SCSI
4、选择下一步 —> 创建新虚拟磁盘
5、选择下一步 —> 选择创建的磁盘大小、选择存储为单个文件
6、选择下一步 —> 选择创建的磁盘文件的存放位置以及具体名称
dsc_02需要共享刚才在dsc_01上创建的5个磁盘,步骤如下:
1、确保虚拟机关闭
2、右键左边栏上的虚拟机 —> 添加 —> 硬盘
3、选择下一步 —> SCSI
4、选择下一步 —> 使用现有的虚拟磁盘
5、选择下一步 —> 选择在dsc_01创建的磁盘
到这一步,在硬件层面上两个虚拟机挂载了5块磁盘。
一个 vmdk 虚拟磁盘同一时间只允许一台虚拟机读写,缺少集群必须的几个参数,所以需要手动在.vmx文件中追加:
#关闭 VMware 宿主机侧的磁盘读写缓存、预读、异步写
diskLib.dataCacheMaxSize=0
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096
diskLib.maxUnsyncedWrites = "0"
#关闭 VMware 的磁盘独占锁
disk.locking = "FALSE"
#开启 SCSI 总线共享模式
scsi0.sharedBus ="virtual"
#防止重启虚机后磁盘序号漂移
disk.EnableUUID = "TRUE"
找到虚拟机的配置文件,一般为.vmx结尾:
建议在Nodepad++中追加,这样编码格式不会乱:
注意⚠️:如果在记事本中打开编辑,不要保存,选择另存为,并将编码格式设置为ANSI,替换当前文件保存,不然会无法打开虚拟机。
[root@admin ~]# ls -lrth /dev/ASMDISK/
总用量 0
lrwxrwxrwx. 1 root root 6 9月 18 03:59 dmredo -> ../sdd
lrwxrwxrwx. 1 root root 6 9月 18 03:59 dmdata -> ../sdf
lrwxrwxrwx. 1 root root 6 9月 18 03:59 dmvote -> ../sdc
lrwxrwxrwx. 1 root root 6 9月 18 03:59 dmdcr -> ../sdb
lrwxrwxrwx. 1 root root 6 9月 18 03:59 dmarch -> ../sde
[root@admin ~]# for i in b c d e f;
> do
> echo /dev/sd$i
> /usr/lib/udev/scsi_id -g -u /dev/sd$i
> done
/dev/sdb
36000c29dc24a968bbea6797ef20c7acc
/dev/sdc
36000c2964e9df95623c6af99a046b507
/dev/sdd
36000c290a96c348c701a2c56f0bd352a
/dev/sde
36000c290a1474d074be12a97f854f57f
/dev/sdf
36000c2915129c02054da5c89424f0ef2
在主节点21(任意节点即可)配置udev规则:
vim /etc/udev/rules.d/99-dm-asm.rules
写入以下内容:
[root@admin rules.d]# cat 99-dm-asm.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36000c29dc24a968bbea6797ef20c7acc", SYMLINK+="ASMDISK/dmdcr",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36000c2964e9df95623c6af99a046b507", SYMLINK+="ASMDISK/dmvote",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36000c290a96c348c701a2c56f0bd352a", SYMLINK+="ASMDISK/dmredo",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36000c290a1474d074be12a97f854f57f", SYMLINK+="ASMDISK/dmarch",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",
RESULT=="36000c2915129c02054da5c89424f0ef2", SYMLINK+="ASMDISK/dmdata",OWNER="dmdba", GROUP="dinstall",MODE="0660"
udevadm control --reload
udevadm trigger --type=devices --action=change
[root@admin ~]# ls -lrth /dev/sd*
brw-rw----. 1 root disk 8, 0 9月 18 03:46 /dev/sda
brw-rw----. 1 root disk 8, 1 9月 18 03:46 /dev/sda1
brw-rw----. 1 root disk 8, 2 9月 18 03:46 /dev/sda2
brw-rw----. 1 dmdba dinstall 8, 16 9月 18 03:59 /dev/sdb
brw-rw----. 1 dmdba dinstall 8, 80 9月 18 04:02 /dev/sdf
brw-rw----. 1 dmdba dinstall 8, 64 9月 18 04:02 /dev/sde
brw-rw----. 1 dmdba dinstall 8, 48 9月 18 09:19 /dev/sdd
brw-rw----. 1 dmdba dinstall 8, 32 9月 18 09:22 /dev/sdc
| 虚拟机名 | IP地址 | dcr磁盘路径 | OGUID | CSS组名 | CSS实例名 | ASM组名 | ASM实例名 | DB组名 | DB实例名 |
|---|---|---|---|---|---|---|---|---|---|
| dsc_01 | 192.168.23.21 | /dev/ASMDISK/dmdcr | 63635 | GRP_CSS | CSS0 | GRP_ASM | ASM0 | GRP_DSC | DSC0 |
| dsc_02 | 192.168.23.22 | /dev/ASMDISK/dmdcr | 63635 | GRP_CSS | CSS1 | GRP_ASM | ASM1 | GRP_DSC | DSC1 |
| EP | DB_PORT | CSS_PORT | ASM_PORT | DCR_EP_SMH_KEY | DCR_CHECK_PORT | MAL_PORT | ASM_MAL_PORT |
|---|---|---|---|---|---|---|---|
| 实例节点 | 数据库实例监听端口 | CSS 集群控制进程端口 | DMASM 实例监听端口 | 实例共享内存 KEY | DCR 磁盘心跳检查端口 | DB MAL 通信端口 | ASM MAL 通信端口 |
| 0 | 5236 | 9341 | 9351 | 93360 | 9741 | 9255 | 9355 |
| 1 | 5236 | 9342 | 9352 | 93361 | 9742 | 9266 | 9366 |
dsc_01:
[dmdba@admin ~]$cd /home/dmdba/dm/dm_config/
[dmdba@admin ~/dm_config]$ls
conf0 dmarch0.ini dmasvrmal.ini dmdcr_cfg.ini dminit.ini sqllog.ini
conf1 dmarch1.ini dmcssm.ini dmdcr.ini dmmal.ini
dsc_02:
[dmdba@admin ~]$cd /home/dmdba/dm/dm_config/
[dmdba@admin ~/dm_config]$ls
conf0 dmarch0.ini dmasvrmal.ini dmdcr_cfg.ini dminit.ini sqllog.ini
conf1 dmarch1.ini dmcssm.ini dmdcr.ini dmmal.ini
[dmdba@admin ~]$cd /home/dmdba/dm/dm_config/
[dmdba@admin ~]$cat /home/dmdba/dm/dm_config/dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/ASMDISK/dmvote
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 = CSS0
DCR_EP_HOST = 192.168.23.21 ##IP以实际值为准
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.23.22 ##IP以实际值为准
DCR_EP_PORT = 9342
[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 = 1024
DCR_EP_HOST = 192.168.23.21 ##IP以实际值为准
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK
[GRP_ASM]
DCR_EP_NAME =ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 1024
DCR_EP_HOST = 192.168.23.22 ##IP以实际值为准
DCR_EP_PORT = 9352
DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK
[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
[dmdba@admin ~]$cd /home/dmdba/dm/dm_config/
[dmdba@admin ~/dm_config]$ls
conf0 dmarch0.ini dmasvrmal.ini dmdcr_cfg.ini dminit.ini sqllog.ini
conf1 dmarch1.ini dmcssm.ini dmdcr.ini dmmal.ini
[dmdba@admin ~/dm_config]$cat dmasvrmal.ini
MAL_CHECK_INTERVAL = 61
MAL_CONN_FAIL_INTERVAL = 61
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.23.21
MAL_PORT = 9355
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.23.22
MAL_PORT = 9366
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmmal.ini
MAL_CHECK_INTERVAL = 61
MAL_CONN_FAIL_INTERVAL = 61
[mal_inst0]
mal_inst_name = DSC0
mal_host = 192.168.23.21
mal_port = 9255
[mal_inst1]
mal_inst_name = DSC1
mal_host = 192.168.23.22
mal_port = 9266
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmdcr.ini
DMDCR_PATH = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH =/home/dmdba/dm/dm_config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 70
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/DmASMSvrService start
DMDCR_DB_RESTART_INTERVAL = 70
DMDCR_DB_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/DmService start
DMDCR_AUTO_OPEN_CHECK= 90
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_NEED_PRE_LOAD = 1
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmdcr.ini
DMDCR_PATH = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH =/home/dmdba/dm/dm_config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 70
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/DmASMSvrService start
DMDCR_DB_RESTART_INTERVAL = 70
DMDCR_DB_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/DmService start
DMDCR_AUTO_OPEN_CHECK= 90
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_NEED_PRE_LOAD = 1
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmcssm.ini
CSSM_OGUID=63635
CSSM_CSS_IP=192.168.23.21:9341
CSSM_CSS_IP=192.168.23.22:9342
CSSM_LOG_PATH=/home/dmdba/dm/dmdbms/log
CSSM_LOG_FILE_SIZE=32
CSSM_LOG_SPACE_LIMIT=1024
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dminit.ini
db_name = DAMENG
system_path = +DMDATA/
system = +DMDATA/DAMENG/system.dbf
system_size = 128
roll = +DMDATA/DAMENG/roll.dbf
roll_size = 128
main = +DMDATA/DAMENG/main.dbf
main_size = 128
ctl_path = +DMDATA/DAMENG/dm.ctl
ctl_size = 8
dcr_path = /dev/ASMDISK/dmdcr
dcr_seqno = 0
auto_overwrite = 1
[DSC0]
config_path= /home/dmdba/dm/dm_config/conf0
port_num = 5236
mal_host = 192.168.23.21
mal_port = 9255
log_path = +DMLOG/dsc0_01.log
log_path = +DMLOG/dsc0_02.log
log_size = 256
page_size= 32
extent_size=16
case_sensitive=Y
RLOG_GEN_FOR_HUGE=0
SYSDBA_PWD=Sysdba%_025
SYSSSO_PWD=Sysdba%_025
SYSAUDITOR_PWD=Sysdba%_025
[DSC1]
config_path= /home/dmdba/dm/dm_config/conf1
port_num = 5236
mal_host = 192.168.23.22
mal_port = 9266
log_path = +DMLOG/dsc1_01.log
log_path = +DMLOG/dsc1_02.log
log_size = 256
page_size= 32
extent_size=16
case_sensitive=Y
RLOG_GEN_FOR_HUGE=0
SYSDBA_PWD=Sysdba%_025
SYSSSO_PWD=Sysdba%_025
SYSAUDITOR_PWD=Sysdba%_025
节点21写入以下内容:
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmarch0.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024 #根据实际arch存储上限的40%配置
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024 #根据实际arch存储上限的40%配置
ARCH_LOCAL_SHARE = 1
节点22写入以下内容:
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cat dmarch1.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024 #根据实际arch存储上限的40%配置
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024 #根据实际arch存储上限的40%配置
ARCH_LOCAL_SHARE = 1
注意⚠️:归档日志的大小不可以太大,因为自己创建的磁盘空间和实际的生产现场差距很大,所以需要尽量都按最小的容量去给,不然会一直报错,磁盘也被写满
[dmdba@admin ~/dm_config]$cat sqllog.ini
BUF_TOTAL_SIZE = 102400
BUF_SIZE = 10240
BUF_KEEP_CNT = 60
[SLOG_ALL]
FILE_PATH = ../log #根据实际环境填写
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 256
ASYNC_FLUSH = 1
FILE_NUM = 5 #根据实际情况配置,至少保留3天的日志量
ITEMS = 0
SQL_TRACE_MASK = 2:3:23:25
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
[dmdba@admin ~/dmdbms/bin]$ ./dmasmcmd
ASM>create dcrdisk '/dev/ASMDISK/dmdcr' 'dmdcr'
ASM>create votedisk '/dev/ASMDISK/dmvote' 'dmvote'
ASM>create asmdisk '/dev/ASMDISK/dmarch' 'dmarch'
ASM>create asmdisk '/dev/ASMDISK/dmredo' 'dmredo'
ASM>create asmdisk '/dev/ASMDISK/dmdata' 'dmdata'
ASM>init dcrdisk '/dev/ASMDISK/dmdcr' from '/home/dmdba/dm/dm_config/dmdcr_cfg.ini' identified by 'Sysdba%_025'
ASM>init votedisk '/dev/ASMDISK/dmvote' from '/home/dmdba/dm/dm_config/dmdcr_cfg.ini'
[dmdba@admin ~/dmdbms/bin]$cp ./service_template/DmCSSService ./
[dmdba@admin ~/dmdbms/bin]$vim DmCSSService
DCR_INI_PATH=%DCR_INI_PATH% 修改为 DCR_INI_PATH=/home/dmdba/dm/dm_config/dmdcr.ini
[dmdba@admin ~/dmdbms/bin]$cp ./service_template/DmASMSvrService ./
[dmdba@admin ~/dmdbms/bin]$vim DmASMSvrService
DCR_INI_PATH=%DCR_INI_PATH% 修改为 DCR_INI_PATH=/home/dmdba/dm/dm_config/dmdcr.ini
[dmdba@admin ~/dmdbms/bin]$ cp ./service_template/DmService ./
[dmdba@admin ~/dmdbms/bin]$vim DmService
dsc_01:
INI_PATH=%INI_PATH%
修改为
INI_PATH=/home/dmdba/dm/dm_config/conf0/dm.ini
DCR_INI_PATH=%DCR_INI_PATH%
修改为
DCR_INI_PATH=/home/dmdba/dm/dm_config/dmdcr.ini
#文件中搜索MALLOC_ARENA_MAX
export MALLOC_ARENA_MAX=4
修改为
export MALLOC_ARENA_MAX=1
dsc_02:
INI_PATH=%INI_PATH%
修改为
INI_PATH=/home/dmdba/dm/dm_config/conf1/dm.ini
DCR_INI_PATH=%DCR_INI_PATH%
修改为
DCR_INI_PATH=/home/dmdba/dm/dm_config/dmdcr.ini
#文件中搜索MALLOC_ARENA_MAX
export MALLOC_ARENA_MAX=4
修改为
export MALLOC_ARENA_MAX=1
在任意节点启动均可:
[dmdba@admin ~]$ cd /home/dmdba/dm/dmdbms/bin
[dmdba@admin ~/dmdbms/bin]$./dmcssm ini_path=/home/dmdba/dm/dmdbms/bin/dmcssm.ini
[monitor] [2026-09-18 03:47:28.434] CSS MONITOR V8
[monitor] [2026-09-18 03:47:28.446] CSS MONITOR SYSTEM IS READY.
[monitor] [2026-09-18 03:47:28.448] Wait CSS Control Node choosed...
[monitor] [2026-09-18 03:47:34.482] Wait CSS Control Node choosed failed, if dmcss has startuped and ini configured correctly, please wait a little more before execute command.
[dmdba@admin ~]$ cd /home/dmdba/dm/dmdbms/bin
[dmdba@admin ~/dmdbms/bin]$./DmCSSService start
Starting DmCSSService: [ OK ]
回到cssm控制前台,在控制台中输入:
set GRP_DSC auto restart off
以192.168.23.21为主节点执行
[dmdba@admin ~]$ cd /home/dmdba/dm/dmdbms/bin
[dmdba@admin ~/dmdbms/bin]$./dmasmtool dcr_ini=/home/dmdba/dm/dm_config/dmdcr.ini
ASM>create diskgroup 'DMDATA' asmdisk '/dev/dm_shrdisk/dm_data'
ASM>create diskgroup 'DMLOG' asmdisk '/dev/dm_shrdisk/dm_rlog'
ASM>create diskgroup 'DMARCH' asmdisk '/dev/dm_shrdisk/dm_arch'
注意⚠️:确保ASM组成功拉起后,才可以创建磁盘组,不然tool工具无法使用
以192.168.23.21为主节点执行
[dmdba@admin ~]$ cd /home/dmdba/dm/dmdbms/bin
[dmdba@admin ~/dmdbms/bin]$./dminit control=/home/dmdba/dm/dm_config/dminit.ini
以192.168.23.21为主节点执行
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$cp sqllog.ini ./conf0/
[dmdba@admin ~/dm_config]$mv sqllog.ini ./conf1/
[dmdba@admin ~/dm_config]$cp dmmal.ini ./conf0/
[dmdba@admin ~/dm_config]$mv dmmal.ini ./conf1/
[dmdba@admin ~/dm_config]$mv dmarch0.ini ./conf0/dmarch.ini
[dmdba@admin ~/dm_config]$mv dmarch1.ini ./conf1/dmarch.ini
以192.168.23.21为主节点执行
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$vi ./conf0/dm.ini #分别修改
[dmdba@admin ~/dm_config]$vi ./conf1/dm.ini #分别修改
#将如下参数新增到文件结尾处或者找到对应参数修改对应的数值
ARCH_INI=1
SVR_LOG=1
ENABLE_ENCRYPT=0
####DSC专门修改参数
DSC_N_POOLS=101
DSC_N_CTLS=5000
以192.168.23.21为主节点执行
[dmdba@admin ~/dmdbms/bin]$ cd /home/dmdba/dm/dm_config
[dmdba@admin ~/dm_config]$scp -rp conf1 dmdba@192.168.23.22:/home/dmdba/dm/dm_config
回到cssm控制台前台窗口,启动DSC集群组:
EP STARTUP GRP_DSC
使用show命令展示GRP_CSS、GRP_ASM、GRP_DSC三个组的全部状态信息:
可以看到三个组全部打开,处于工作状态,DSC搭建成功!
文章
阅读量
获赞
