DmMonitorServiceMonitor stop
vim dmmonitor.ini
#MON_DW_IP = 192.168.20.33:5239 #集群内部节点3
DmWatcherServiceWatcher stop
#注释掉配置文件中的内容
#[MAL_INST3]
#MAL_INST_NAME = DM3
#MAL_HOST = 192.168.20.33
#MAL_PORT = 5238
#MAL_INST_HOST = 192.168.30.33
#MAL_INST_PORT = 5236
#MAL_DW_PORT = 5239
#MAL_INST_DW_PORT = 5237
生效配置
SF_MAL_CONFIG(1,0);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
//临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//修改数据库为MOUNT状态
SQL> ALTER DATABASE MOUNT;
//临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//修改数据库为MOUNT状态
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM3, TYPE= REALTIME';
SQL> select * from v$arch_status;
LINEID ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC
---------- --------- ----------------------- ----------- --------
1 LOCAL /home/dmdba/dmdbms/arch VALID DM2
2 REALTIME DM1 NULL DM2
used time: 1.703(ms). Execute id is 308.
SQL>
#关闭所有节点,否则不会自动更新动态性能视图信息。
Shutdown immediate
#手动修改原系统中所有实例为 OPEN 状态
#必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起。
//将ALTER_MODE_STATUS改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//修改数据库为OPEN状态
SQL> ALTER DATABASE OPEN FORCE;
//将ALTER_MODE_STATUS改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
//将DW_INACTIVE_INTERVAL改回原值,本例中为60
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);
DmWatcherServiceWatcher start
DmMonitorServiceMonitor start
#查看集群状态
Show global info
[dmdba@localhost DM1]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 6.047(ms)
disql V8
SQL> select * from v$instance ;
行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID
---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------- -----------
DSC_SEQNO DSC_ROLE BUILD_VERSION BUILD_TIME
----------- -------- --------------------------------- --------------------
1 DM1 DM1 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000d 2025-06-06 10:28:10 OPEN PRIMARY 45331
0 NULL 03134284368-20250430-272000-20149 May 6 2025 11:47:00
已用时间: 2.635(毫秒). 执行号:1601.
SQL> insert into t1 values(333,'dropD3');
影响行数 1
已用时间: 2.972(毫秒). 执行号:1602.
SQL> commit ;
操作已执行
已用时间: 1.956(毫秒). 执行号:1603.
SQL> select * from t1 ;
行号 ID NAME
---------- ----------- ----------
1 1 a
2 2 3
3 3 dm2
4 4 dm3d
5 5 dm3d
6 5 dm3d
7 6 dm3d
8 7 dm3d
9 8 dm3d
10 8 dm3d
11 111 dm2insert1
行号 ID NAME
---------- ----------- ------------
12 2222 sefwefwefwef
13 2333 ad
14 333 dropD3
14 rows got
已用时间: 3.175(毫秒). 执行号:1604.
SQL>
SQL> select * from t1 ;
SQL> select * from t1 ;
LINEID ID NAME
---------- ----------- ----------
1 1 a
2 2 3
3 3 dm2
4 4 dm3d
5 5 dm3d
6 5 dm3d
7 6 dm3d
8 7 dm3d
9 8 dm3d
10 8 dm3d
11 111 dm2insert1
LINEID ID NAME
---------- ----------- ------------
12 2222 sefwefwefwef
13 2333 ad
14 333 dropD3
14 rows got
used time: 0.649(ms). Execute id is 301.
SQL>
select * from V$MAL_LINK_STATUS ;
select * from v$dm_mal_ini;
SQL> BACKUP DATABASE BACKUPSET 'BACKUP_FILE_TO_DM3';
已有,略
#拷贝生成的备份集目录 BACKUP_FILE_TO_DM3 到 DM3上/home/dmdba/dmdbms/data/DM3/bak 目录,使用 DMRMAN 工具脱机还原。
scp -r BACKUP_FILE_TO_DM3/ root@192.168.20.33:/home/dmdba/dmdbms/data/DM3/bak
./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DM3/bak/BACKUP_FILE_TO_DM3'"
./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' FOR STANDBY FROM BACKUPSET '/home/dmdba/dmdbms/data/DM3/bak/BACKUP_FILE_TO_DM3'"
./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' UPDATE DB_MAGIC"
#配置 dm.ini
#在 DW3 机器上配置备库的实例名为 DM3,dm.ini 主要参数修改如下:
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
#配置 dmmal.ini
#基于原配置,所有节点均添加DM3的配置
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /home/dmdba/dmdbms/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 256 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DM1 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.20.31 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.30.31 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.20.32
MAL_PORT = 5238
MAL_INST_HOST = 192.168.30.32
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
[MAL_INST3]
MAL_INST_NAME = DM3
MAL_HOST = 192.168.20.33
MAL_PORT = 5238
MAL_INST_HOST = 192.168.30.33
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
#配置 dmarch.ini
#所有节点项目交叉配置
[ARCHIVE_REALTIME2]
#实时归档类型
ARCH_TYPE = REALTIME
#实时归档目标实例名
ARCH_DEST = DM2
#配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdbms/data/DM3/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
dmserver /home/dmdba/dmdbms/data/DM3/dm.ini mount
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(45331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','DM3','192.168.20.33',5238,'192.168.30.33',5236,5239,0,5237);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=DM3, TYPE= REALTIME';
ALTER DATABASE OPEN FORCE;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);
vi /home/dmdba/dmdbms/data/DM3/dmmonitor.ini
MON_DW_IP = 192.168.20.33:5239 #集群内部节点3
DmWatcherServiceWatcher start
DmMonitorServiceMonitor start
Show global info
[dmdba@localhost DM1]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 3.710(ms)
disql V8
SQL> delete from t1 ;
影响行数 14
已用时间: 3.362(毫秒). 执行号:2801.
SQL> insert into t1 values(1,'dm3');
影响行数 1
已用时间: 17.488(毫秒). 执行号:2802.
SQL> commit ;
操作已执行
已用时间: 3.445(毫秒). 执行号:2803.
SQL> select * from t1;
行号 ID NAME
---------- ----------- ----
1 1 dm3
已用时间: 2.129(毫秒). 执行号:2804.
SQL>
[dmdba@localhost DM2]$ disql SYSDBA/Dameng123
Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 3.593(ms)
disql V8
SQL> select * from t1;
LINEID ID NAME
---------- ----------- ----
1 1 dm3
used time: 0.981(ms). Execute id is 701.
[dmdba@localhost DM3]$ disql sysdba/Dameng123
Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 5.278(ms)
disql V8
SQL> select * from t1;
LINEID ID NAME
---------- ----------- ----
1 1 dm3
used time: 1.968(ms). Execute id is 1.
SQL>
删除节点只需要对节点进行下线,然后修改相应的归档和mal即可。
增加节点主要是动态添加相关的mal信息以及归档日志,然后调整监视器即可。
此次测试为本人根据官方文档中的内容尝试测试,有部分问题为能解决,后续深入学习后再进行尝试修复。
由于当前集群为3节点变为2节点后,又从2节点增加到3节点,3节点变成2节点后,数据库动态性能视图中的v$dm_mal_ini没有动态更新,另外动态增加MAL信息的操作没有成功,这里有些问题:
SF_MAL_INST_ADD(‘MAL_INST3’,‘DM3’,‘192.168.20.33’,5238,‘192.168.30.33’,5236,5239,0,5237);
[-803]:非法INI配置值.
已用时间: 0.474(毫秒). 执行号:0.
文章
阅读量
获赞