完全共享: 单点服务
共享磁盘: 多个实例同时访问数据, 节点数增大则对系统I/O 锁资源等产生竞争, 节点数增大性能反而可能下降
完全不共享: 系统中存在一个主控节点, 如果主控节点异常则无法提供服务
完全对等共享: 不存在主控节点
完全对等无共享存储集群, 支持多个DM数据库实例组成一个并行计算网络
1、每个数据库实例, 在集群中称为一个EP(执行节点), 客户端可以连接人一个节点进行操作
2、每个EP只负责自身的数据读写
3、内部通过MAL高速系统进行数据传输
1、用户选择一个 EP 登录, 此时该 EP 就是此用户的主 EP, 集群中的其余 EP 都是此用户的从 EP
2、主 EP 接受用户的 SQL 请求, 并生成并行执行计划
3、主 EP 将计划打包后分发给其他从 EP
4、各 EP 并行执行
5、主 EP 收集各 EP(包括自己)的执行结果
6、主 EP 将执行结果汇总后返回给用户
1、TB/PB级别的数据分析
2、支持绝大部分单机功能
3、高性价比
4、高可靠性
5、支持超大规模集群
根据表中的一个字段或多个字段对行进行哈希计算, 计算出来的哈希值和哈希映射表将改行数据分布到映射的节点上
哈希分布节点之间的数据是否均和, 取决于哈希分布列和数据情况, 当节点个数发生变化时, 各个节点的数据需要根据新的哈希映射表重新分布
不存在分布列, 插入数据时会按照一定的随机算法将数据均匀分不到各个节点
随机分布优点: 不存在数据和节点之间的映射关系, 节点发生变化可以不对数据进行均衡
随机分布的对于复杂查询性能不如哈希分布高
在每个节点上的本地数据都是一分完整的数据拷贝, 查询任意一个节点都可以得到完整的数据不需要从其他节点获取数据
复制分布应用于数据量不大的表
根据表中的一个列或者多个列的列值范围进行分布
表中一个列或者多个列的离散值, 来确定存储在那个EP上
客户端连接任意一个EP节点系统会自动建立和其他EP节点之间的关系
用户对数据库的操作也是通过全局连接在所有EP进行使用全局连接时
要求 MPP 系统的所有 EP都正常提供服务, 否则无法建立连接
客户端连接某个EP节点后, 该节点不会和其他EP节点建立关系所有操作只在该节点进行
/* MPP 默认使用全局连接 */
disql中MPP_TYPE 可以指定使用本地连接还是全局连接
MGAT MPP GATHER 主EP收集所有节点数据, 从EP将数据发送给主EP
MCLCT MPP COLLECT 在 MGAT 的基础上, 增加主从 EP 执行同步功能, 避免数据在主 EP 上堆积. 一个计划树中一般只会在较上层出现一个 MCLCT, 但可能有多个 MGAT
MDIS MPP DISTRIBUTE 各 EP 节点间相互分发数据, 按照分发列计算行数据的目标节点并发送过去, 目标节点负责接收
MBRO MPP BROADCAST 功能类似 MGAT, 收集数据到主 EP, 该操作符带有聚集函数运算功能, 仅和 FAGR 配合使用
MSCT MPP SCATTER 主 EP 发送完整数据到所有从 EP, 保证每个节点数据都完整, 一般和 MGAT配合使用
1、建立连接 用户连接到 MPP 系统内任意一个 EP 节点, 则该 EP 为连接的主 EP, 其余节点为从 EP
2、生成执行计划 主 EP 解析查询语句, 生成普通的查询计划后, 根据数据分布情况在合适的位置插入合适的并行通讯操作符, 生成最终的并行查询计划
3、分发计划 主 EP 把执行计划分发给所有的从 EP
4、执行计划 各从 EP 收到计划后, 生成执行计划的运行环境, 所有 EP 并行执行, 执行时各 EP通过通讯操作符分发必要的数据并协调执行进度
5、生成结果集 主 EP 收集所有 EP 的查询结果(包括自身数据), 生成结果集
6、返回结果集 主 EP 将结果集返回给用户
1、建立连接 户连接到 MPP 系统内任意一个 EP 节点, 则该 EP 为连接的主 EP, 其余节点为从 EP
2、生成执行计划 主 EP 解析语句, 生成执行计划, 其中包含的查询计划(即 WHERE 条件对应的计划)也是并行查询计划, 另外还会生成一个对应的在从 EP 上执行的计划(MPLN)
3、准备数据 主 EP 开始执行计划时首先把查询计划部分发布给所有的从 EP, 并行执行查询, 主 EP 收集查询结果
4、定位节点 数据准备完成后, 根据分布列和分布方式计算出需要修改的行数据所在的目标 EP, 将 MPLN 以及操作所需数据发送到各对应的 EP如果目标 EP 为本地则不发送, 在本地直接完成操作
5、执行修改操作 从 EP 收到 MPLN 计划和数据后生成执行环境, 执行实际的修改操作
6、返回执行结果 主 EP 等待所有的从 EP 执行完成后才会返回执行结果给客户端, 只要其中有任一个 EP 执行失败, 则已经执行的所有 EP 都会回滚, 保证数据的一致性, 并返回错误信息给客户端
MPP_CLIENT: 该参数用来设置MPP环境下使用dmfldr进行数据加载时数据分布方式
客户端分发模式
本地分发模式
./dmfldr mpp_client=false
MAL_INI MAL 系统配置开关, 0 表示不启用 MAL 系统, 1 表示启用 MAL 系统,
MPP_INI MPP 系统配置开关, 0 表示不启用 MPP 系统, 1 表示启用 MPP 系统,
MAX_EP_SITES MPP 环境下EP 节点的最大数量, 有效值范围(2~1024), 默认值为
MPP_HASH_LR_RATE MPP 系统下对 HASH JOIN 节点, 可以根据左右儿子 CARD 代价的比值, 调整 HASH_JOIN 的左右儿子的 MOTION 添加, 从而影响计划如果CARD 比值超过此值, 则小数据量的一方全部收集到主 EP 来做取值范围(1~4294967294), 默认值为 10
MPP_OP_JUMP MPP 系统中操作符的跳转开关, 是否支持通讯操作符的跳转功能1: 支持0: 不支持取值范围: 0、1, 默认值为 1
PHF_NTTS_OPT MPP 系统中是否进行NTTS计划的优化, 打开时可能减少计划中的NTTS操作符1: 支持0: 不支持取值范围: 0、1, 默认值为 1
MAL_CHECK_INTERVAL MAL 链路检测时间间隔, 取值范围(0s-1800s), 默认 30s, 配置为 0 表示不进行 MAL 链路检测为了防止误判, DMRAC 集群中, 建议将配置值>= DCR_GRP_NETCHK_TIME
MAL_CONN_FAIL_INTERVAL 判定 MAL 链路断开的时间, 取值范围(2s-1800s), 默认 10s
MAL_LEAK_CHECK 是否打开 MAL 内存泄露检查, 0: 关闭, 1: 打开, 默认 0
MAL_LOGIN_TIMEOUT MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800), 以秒为单位, 默认 15s
MAL_BUF_SIZE 单个 MAL 缓存大小限制, 以兆为单位当此 MAL 的缓存邮件超过此大小, 则会将邮件存储到文件中有效值范围(0~500000), 默认为 100
MAL_SYS_BUF_SIZE MAL 系统总内存大小限制, 单位: M有效值范围(0~500000), 默认为 0, 表示 MAL 系统无总内存限制
MAL_VPOOL_SIZE MAL 系统使用的内存初始化大小, 以兆为单位有效值范围( 1~500000 ), 默 认 为128 , 此 值 一 般 要 设 置 的 比MAL_BUF_SIZE 大一些
MAL_COMPRESS_LEVEL MAL 消息压缩等级, 取值范围(0-10)默认为 0, 不进行压缩1–9 表示采用 zip 算法, 从 1 到 9 表示压缩速度依次递减, 压缩率依次递增10 表示采用 snappy 算法, 压缩速度高于 zip算法, 压缩率相对低
MAL_TEMP_PATH 指定临时文件的目录当邮件使用的内存超过 mal_buf_size或者 mal_sys_buf_size 时, 将新产生的邮件保存到临时文件中如果缺省, 则新产生的邮件保存到 temp.dbf 文件中
[MAL_NAME] MAL 名称, 同一个配置文件中 MAL 名称需保持唯一性
MAL_INST_NAME 数据库实例名, 与 dm.ini 的 INSTANCE_NAME 配置项保持一致, MAL 系统中数据库实例名要保持唯一
MAL_HOST MAL IP 地址, 使用 MAL_HOST + MAL_PORT 创建 MAL 链路
MAL_PORT MAL 监听端口, 用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置, 监听端端口配置此参数, 范围1024~65534, 发起连接端的端口在 1024~65535 之间随机分配
MAL_INST_HOST MAL_INST_NAME 实例对外服务 IP 地址
MAL_INST_PORT MAL_INST_NAME 实例服务器监听通讯端口号, 服务器配置此参数 , 有 效 值 范 围 ( 1024~65534 ), 发 起 连 接 端 的 端 口 在1024-65535 之间随机分配此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
MAL_DW_PORT MAL_INST_NAME 实例守护进程的监听端口, 其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建与该实例守护进程的 TCP 连接, 监听端配置此参数, 有效值范围(1024~65534), 发起连接端的端口在 1024-65535 之间随机分配
MAL_LINK_MAGIC MAL 链路网段标识, 有效值范围(0-65535), 默认 0设置此参数时, 同一网段内的节点都设置相同, 不同网段内的节点设置的值必须不一样
dmmpp.ctl 是 DM MPP 系统的控制文件, 它是一个二进制文件, 用户不能直接进行配置
用户需要首先配置 dmmpp.ini, 然后利用 dmctlcvt 工具进行转换得到生成的dmmpp.ctl 文件
MPP 系统中的每个 EP 都必须使用相同的 dmmpp.ctl 文件
dmmpp.ini 的配置参数
[SERVICE_NAME] 标识 MPP 系统中每个 EP 实例的选项名
MPP_SEQ_NO 实例在 mpp 系统内的序号, 取值范围为 0~1023
MPP_INST_NAME 实例名
节点一 外网IP: 100.63.1.1 内网IP: 192.168.232.128 INSTANCE_NAME: its01 DB_NAME: its PORT_NUM: 5236 MAL_PORT: 17001 MPP_SEQNO: 0
节点二 外网IP: 100.63.1.2 内网IP: 192.168.232.129 INSTANCE_NAME: its02 DB_NAME: its PORT_NUM: 5236 MAL_PORT: 17001 MPP_SEQNO: 1
1、主库
[dmdba@itsapp1 dm8]$ ./DMInstall.bin -i
2、备库
[dmdba@itsapp2 dm8]$ ./DMInstall.bin -i
1、主库
[dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its01
2、备库
[dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its02
[dmdba@itsapp1 bin]$ vi /dmdata/its/dm.ini
INSTANCE_NAME = ITS01
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1
[dmdba@itsapp1 bin]$ vi /dmdata/its/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = ITS01
MAL_HOST = 192.168.232.128
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.1
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = ITS02
MAL_HOST = 192.168.232.129
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.2
MAL_INST_PORT = 5236
[dmdba@itsapp1 bin]$ vi /dmdata/its/dmmpp.ini
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = ITS01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = ITS02
[dmdba@itsapp1 bin]$ ./dmctlcvt TYPE=2 SRC=/dmdata/its/dmmpp.ini DEST=/dmdata/its/dmmpp.ctl
[dmdba@itsapp2 bin]$ vi /dmdata/its/dm.ini
INSTANCE_NAME = ITS02
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1
2、其他配置文件必须和节点一完全一致, 复制即可
[dmdba@itsapp1 bin]$ scp /dmdata/its/dmmal.ini 100.63.1.2:/dmdata/its/
[dmdba@itsapp1 bin]$ scp /dmdata/its/dmmpp.ini 100.63.1.2:/dmdata/its/
[dmdba@itsapp1 bin]$ scp /dmdata/its/dmmpp.ctl 100.63.1.2:/dmdata/its/
1、主库
[dmdba@itsapp1 bin]$ ./dmserver /dmdata/its/dm.ini
2、备库
[dmdba@itsapp2 bin]$ ./dmserver /dmdata/its/dm.ini
[dmdba@itsapp1 bin]$ ./disql
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 ITS02 ITS02 2 itsapp2 DM Database Server x64 V8 DB Version: 0x7000c 2022-06-13 17:11:28 OPEN NORMAL 0 0 NULL 1-2-114-22.03.04-158322-10045-ENT Mar 4 2022 11:52:18
2 ITS01 ITS01 1 itsapp1 DM Database Server x64 V8 DB Version: 0x7000c 2022-06-13 17:11:07 OPEN NORMAL 0 0 NULL 1-2-114-22.03.04-158322-10045-ENT Mar 4 2022 11:52:18
SQL> CREATE TABLE T1(id INT);
SQL> SP_TABLEDEF('SYSDBA','T1');
行号 COLUMN_VALUE
---------- -----------------------------------------------------------------------------------------------
1 CREATE TABLE "SYSDBA"."T1" ( "ID" INT) STORAGE(ON "MAIN", CLUSTERBTR) DISTRIBUTED RANDOMLY;
-- 默认没有指定如果分布, 则使用随机分布建表
CREATE TABLE T1(id INT);
INSERT INTO T1 VALUES(1);
INSERT INTO T1 VALUES(10);
INSERT INTO T1 VALUES(100);
INSERT INTO T1 VALUES(1000);
INSERT INTO T1 VALUES(10000);
INSERT INTO T1 VALUES(100000);
INSERT INTO T1 VALUES(1000000);
INSERT INTO T1 VALUES(10000000);
INSERT INTO T1 VALUES(100000000);
INSERT INTO T1 VALUES(1000000000);
COMMIT;
SQL> CALL SP_GET_EP_COUNT('SYSDBA','T1');
行号 SEQNO N_ROWS
---------- ----------- --------------------
1 0 3
2 1 7
[dmdba@itsapp3 dm8]$ ./DMInstall.bin -i
[dmdba@itsapp3 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its03
1、禁止全局DDL操作
SQL> SP_DDL_FORBIDEN(1);
2、开启归档
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch , TYPE=LOCAL,FILE_SIZE=128,SPACE_LIMIT=2048';
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
3、备份DDL语句
SQL> BACKUP DATABASE DDL_CLONE BACKUPSET 'CLONE';
1、复制备份文件到本地
[dmdba@itsapp1 bak]$ scp CLONE 100.63.1.3:/dmdata/its/bak/
2、进行恢复
RMAN> RESTORE DATABASE '/dmdata/its/dm.ini' FROM BACKUPSET '/dmdata/its/bak/CLONE';
RMAN> RECOVER DATABASE '/dmdata/its/dm.ini' FROM BACKUPSET '/dmdata/its/bak/CLONE';
RMAN> RECOVER DATABASE '/dmdata/its/dm.ini' UPDATE DB_MAGIC;
1、dm.ini
[dmdba@itsapp3 bin]$ vi /dmdata/its/dm.ini
MAL_INI = 1
MPP_INI = 1
2、dmmal.ini
[dmdba@itsapp3 bin]$ vi /dmdata/its/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = ITS01
MAL_HOST = 192.168.232.128
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.1
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = ITS02
MAL_HOST = 192.168.232.129
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.2
MAL_INST_PORT = 5236
[MAL_INST3]
MAL_INST_NAME = ITS03
MAL_HOST = 192.168.232.130
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.3
MAL_INST_PORT = 5236
[dmdba@itsapp3 bin]$ ./dmserver /dmdata/its/dm.ini mount
[dmdba@itsapp3 bin]$ ./disql
SQL> SP_DDL_FORBIDEN(1);
SQL> ALTER DATABASE OPEN FORCE;
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','ITS03','192.168.232.130',17001, '100.63.1.3',5236);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
-- SF_MAL_INST_ADD('mal标签名称','实例名','mal的地址',mal的端口, '实例监听地址',实例监听端口);
-- 需要使用本地登录方式, 每个节点都执行
-- 只需登录原有的一个节点执行即可
SF_MAL_CONFIG(1,1);
SF_MPP_SAVE_HASHMAP();
SF_MPP_INST_ADD('service_name3','ITS03');
100.63.1.1
主库一: 实例名: GRP1_MPP_EP01 PORT_NUM=5236 MAL_INST_DW_PORT=16001 MAL_PORT=17001 MAL_DW_PORT=18001
备库二: 实例名: GRP2_MPP_EP22 PORT_NUM=5237 MAL_INST_DW_PORT=26001 MAL_PORT=27001 MAL-DW_PORT=28001
100.63.1.2
主库二: 实例名: GRP2_MPP_EP02 PORT_NUM=5236 MAL_INST_DW_PORT=16001 MAL_PORT=17001 MAL_DW_PORT=18001
备库一: 实例名: GRP1_MPP_EP11 PORT_NUM=5237 MAL_INST_DW_PORT=26001 MAL_PORT=27001 MAL-DW_PORT=28001
100.63.1.1 服务器上实例路径
主库一: /dmdata/EPO1
备库二: /dmdata/EP02
100.63.1.2 服务器上实例路径
主库二: /dmdata/EP02
备库一: /dmdata/EP01
守护进程OGUID
GRP1的oguid:453330
GRP2的oguid:453331
1、初始化主库一
[dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata DB_NAME=EP01 INSTANCE_NAME=GRP1_MPP_EP01
2、初始化备库二
[dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata DB_NAME=EP02 INSTANCE_NAME=GRP1_MPP_EP22
3、初始化主库二
[dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata DB_NAME=EP02 INSTANCE_NAME=GRP1_MPP_EP02
4、初始化备库一
[dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata DB_NAME=EP01 INSTANCE_NAME=GRP1_MPP_EP11
1、节点一
[dmdba@itsapp1 bin]$ ./dmserver /dmdata/EP01/dm.ini
[dmdba@itsapp1 bin]$ ./dmserver /dmdata/EP02/dm.ini
2、节点二
[dmdba@itsapp2 bin]$ ./dmserver /dmdata/EP01/dm.ini
[dmdba@itsapp2 bin]$ ./dmserver /dmdata/EP02/dm.ini
-- 启动一次是为了后面做备份
1、主库一
[dmdba@itsapp1 bin]$ ./dmrman
RMAN> BACKUP DATABASE '/dmdata/EP01/dm.ini' FULL BACKUPSET '/dmbak/full_database';
2、主库二
[dmdba@itsapp2 bin]$ ./dmrman
RMAN> BACKUP DATABASE '/dmdata/EP02/dm.ini' FULL BACKUPSET '/dmbak/full_database';
1、备库二
RESTORE DATABASE '/dmdata/EP02/dm.ini' FROM BACKUPSET '/dmbak/full_database';
RECOVER DATABASE '/dmdata/EP02/dm.ini' FROM BACKUPSET '/dmbak/full_database';
RECOVER DATABASE '/dmdata/EP02/dm.ini' UPDATE DB_MAGIC;
2、备库一
RESTORE DATABASE '/dmdata/EP01/dm.ini' FROM BACKUPSET '/dmbak/full_database';
RECOVER DATABASE '/dmdata/EP01/dm.ini' FROM BACKUPSET '/dmbak/full_database';
RECOVER DATABASE '/dmdata/EP01/dm.ini' UPDATE DB_MAGIC;
1、dm.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP01/dm.ini
INSTANCE_NAME = GRP1_MPP_EP01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
2、dmmal.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_MPP_EP01
MAL_HOST = 192.168.232.128
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.1
MAL_INST_PORT = 5236
MAL_DW_PORT = 18001
MAL_INST_DW_PORT = 16001
[MAL_INST2]
MAL_INST_NAME = GRP2_MPP_EP02
MAL_HOST = 192.168.232.129
MAL_PORT = 17001
MAL_INST_HOST = 100.63.1.2
MAL_INST_PORT = 5236
MAL_DW_PORT = 18001
MAL_INST_DW_PORT = 16001
[MAL_INST3]
MAL_INST_NAME = GRP1_MPP_EP11
MAL_HOST = 192.168.232.129
MAL_PORT = 27001
MAL_INST_HOST = 100.63.1.2
MAL_INST_PORT = 5237
MAL_DW_PORT = 28001
MAL_INST_DW_PORT = 26001
[MAL_INST4]
MAL_INST_NAME = GRP2_MPP_EP22
MAL_HOST = 192.168.232.128
MAL_PORT = 27001
MAL_INST_HOST = 100.63.1.1
MAL_INST_PORT = 5237
MAL_DW_PORT = 28001
MAL_INST_DW_PORT = 26001
3、dmarch.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_MPP_EP11
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/EP01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
4、dmmpp.ctl
[dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmmpp.ini
[service_name1]
mpp_seq_no = 0
mpp_inst_name = GRP1_MPP_EP01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = GRP2_MPP_EP02
[dmdba@itsapp1 bin]$ ./dmctlcvt TYPE=2 SRC=/dmdata/EP01/dmmpp.ini DEST=/dmdata/EP01/dmmpp.ctl
1、dm.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP02/dm.ini
INSTANCE_NAME = GRP2_MPP_EP02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
[dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP02/
3、dmarch.ini
[dmdba@itsapp2 bin]$ vi /dmdata/EP02/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_MPP_EP22
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/EP02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
1、dm.ini
[dmdba@itsapp2 bin]$ vi /dmdata/EP01/dm.ini
INSTANCE_NAME = GRP1_MPP_EP11
PORT_NUM = 5237
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
[dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP01/
3、dmarch.ini
[dmdba@itsapp2 bin]$ vi /dmdata/EP01/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_MPP_EP01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/EP01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
1、dm.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP02/dm.ini
INSTANCE_NAME = GRP2_MPP_EP22
PORT_NUM = 5237
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
MPP_INI = 1
RLOG_SEND_APPLY_MON = 64
2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
[dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP01/
3、dmarch.ini
[dmdba@itsapp1 bin]$ vi /dmdata/EP02/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_MPP_EP02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/EP02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[dmdba@itsapp1 bin]$ ./disql SYSDBA/[email protected]:5236#"{mpp_type=local}"
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45330); -- 注意OGUID不一样
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
[dmdba@itsapp1 bin]$ ./disql SYSDBA/[email protected]:5236#"{mpp_type=local}"
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331); -- 注意OGUID不一样
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
[dmdba@itsapp2 bin]$ ./disql SYSDBA/[email protected]:5237#"{mpp_type=local}"
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45330); -- 注意OGUID不一样
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
[dmdba@itsapp1 bin]$ ./disql SYSDBA/[email protected]:5237#"{mpp_type=local}"
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331); -- 注意OGUID不一样
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
[dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 45330 #守护系统唯一OGUID值
INST_INI = /dmdata/EP01/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值, 默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值, 默认关闭
[GRP2]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI = /dmdata/EP02/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值, 默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值, 默认关闭
[dmdba@itsapp2 bin]$ scp /dmdata/EP01/dmwatcher.ini 100.63.1.2:/dmdata/EP01/
[dmdba@itsapp2 bin]$ vi /dmdata/EP01/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 45330
MON_DW_IP = 192.168.232.128:18001 # 主库一IP:MAL_DWPORT
MON_DW_IP = 192.168.232.129:28001 # 备库一IP:MAL_DW_PORT
[GRP2]
MON_INST_OGUID = 45331
MON_DW_IP = 192.168.232.128:18001 # 主库二IP:MAL_DW_PORT
MON_DW_IP = 192.168.232.129:28001 # 备库二IP:MAL_DW_PORT
1、节点一
[dmdba@itsapp1 bin]$ ./dmwatcher /dmdata/EP01/dmwatcher.ini
、节点二
[dmdba@itsapp2 bin]$ ./dmwatcher /dmdata/EP01/dmwatcher.ini
[dmdba@itsapp2 bin]$ ./dmmonitor /dmdata/EP01/dmmonitor.ini
show mpp
2022-06-13 19:59:49
#------------------------------------------------------------------#
INST_NAME EP_SEQNO EP_IP EP_PORT
0 GRP1_MPP_EP01 0 100.63.1.1 5236
1 GRP2_MPP_EP02 1 100.63.1.2 5236
#------------------------------------------------------------------#
show global info
2022-06-13 20:03:14
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 45330 TRUE AUTO TRUE
<>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.232.128 18001 2022-06-13 20:03:14 GLOBAL VALID OPEN GRP1_MPP_EP01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.232.129 28001 2022-06-13 20:03:14 GLOBAL VALID OPEN GRP1_MPP_EP11 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
#--------------------------------------------------------------------------------#
2022-06-13 20:03:14
#--------------------------------------------------------------------------------#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP2 45331 TRUE AUTO TRUE
<>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.232.129 18001 2022-06-13 20:03:14 GLOBAL VALID OPEN GRP2_MPP_EP02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.232.128 28001 2022-06-13 20:03:14 GLOBAL VALID OPEN GRP2_MPP_EP22 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
#================================================================================#
获取会话连接的 EP 的节点序号 SF_GET_SELF_EP_SEQNO();
根据 ROWID 获取本行数据来自哪个EP SF_GET_EP_SEQNO(ROWID);
获取 EP 节点配置信息 SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取当前会话连接的实例名 SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取 MPP 系统内所有 EP 的所有会话 SELECT * FROM V$SESSIONS;
获取当前连接的实例上的所有会话 SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取实例 EP01 上的所有会话 SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='EP01');
获取表 TEST 在每个实例上的数据行数 CALL SP_GET_EP_COUNT('SYSDBA','TEST');
获取所接实例上的表 TEST 的使用空间 SELECT TABLE_USED_PAGES('SYSDBA','TEST');
获取每个实例上的表 TEST 使用空间 SELECT TABLE_USED_PAGES('SYSDBA','TEST'), NAME FROM V$INSTANCE;
获取所有实例上表 TEST 的总使用空间 SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','TEST') TOTAL_SIZE, NAME FROM V$INSTANCE);
允许多个数据库实例同时访问、操作同一数据库, 具有高可用、高性能、负载均衡等特性
DMDSC 支持故障自动切换和故障自动重加入, 某一个数据库实例故障后, 不会导致数据库服务无法提供
1、多个实例访问同一个数据库
2、数据文件和控制文件在集群中只有一份
3、每个节点都有自己REOD日志, 存储在共享存储上
4、每个节点都有自己的归档日志, 可以保存到共享存储上, 也可以保存在本地磁盘上
数据库
数据库实例
共享存储
通信网络
集群管理软件
共享存储上保存的文件
数据文件
控制文件
日志文件
DCR
VOTING DISK
当系统出现故障时, DMCSS 检测故障并自动将故障节点踢出集群, 保证数据库正常提供服务, 故障节点的连接会自动切换到活动节点, 未提交的事务进行回滚
当某个节点故障处理完成后, DMCSS 检测到故障节点恢复时, 自动启动节点重新加入流程, 将节点重新加入集群
集群监视器, DMCSSM 和 DMCSS 相互通信获取并监控整个集群系统的状态信息, DMCSSM还提供一系列命令来管理和维护集群
集群注册表, 用于存储和维护集群配置的详细信息, 整个集群环境共享DCR配置信息
包括: DMDSC、DMASM、DMCSS 资源, 实例名、监听端口、集群中故障节点信息等
DCR 必须存储在共享存储上供所有节点都可以访问
在一个集群中只能配置一个DCR磁盘
表决磁盘, 用于记录集群成员信息, 通过表决磁盘进行心跳检测, 确定集群中节点的状态、判断节点是否出现故障
表决磁盘还用来传递命令, DMCSS通过表决磁盘传递控制命令, 通知节点执行相同命令
表决磁盘必须存储在共享存储上在一个集群中只能配置一个表决磁盘
DMDSC集群存在两套MAL系统, DMASM服务器之间配置一套, dmserver之间配置一套, 一旦MAL链路出现异常, DMCSS会进行裁定, 并从集群中踢出一个节点保证集群正常运行
1、支持定时器, 但只有控制节点上配置的定时器生效只支持脱机配置定时器, 不支持联机配置
2、支持作业, 但只有控制节点上支持执行作业
3、不支持 HUGE 表
4、不支持外部表
5、不支持 table 级别的 space limit 功能
6、支持全文索引, 但仅支持默认词库, 需要将默认词库文件 SYSWORD.UTF8.LIB 放到 ASM 文件系统中
7、不支持 DBMS_ALERT、DBMS_LOCK 包
8、不支持数据复制
9、不能与 MPP 集群混合使用
10、不支持为表空间文件指定 mirror_path
11、不支持闪回查询, 不允许打开闪回功能
集群同步服务, 使用DMASM集群或DMDSC集群中每个节点都需要配置一个DMCSS服务
各个节点上的DMCSS服务构成一个DMCSS集群
DMCSS集群分为: 控制节点和普通节点, 控制节点负责管理管理和监控整个DMDSC集群
当DMCSS集群出现故障时, 会自动从普通节点中选出一个控制节点
在表决磁盘中为每个被监控对象(dmserver,dmasmsvr,dmcss) 分配一片独立的存储区域
被监控对象定时向表决磁盘写入信息(时间戳、状态、命令、以及命令执行结果)
DMCSS控制节点定时从表决磁盘读取信息检查被监控对象的状态变化,启动相应的处理流程
被监控对象只能被动的接收DMCSS控制节点的命令, 执行并响应
1、写入心跳信息
2、选举DMCSS控制节点
3、选举DMASM、DMDSC控制节点
4、管理被监控对象的启动流程
5、集群状态监控
7、节点故障处理
8、节点重新加入
9、接收DMCSSM指令
1、先启动的DMCSS节点为控制节点
2、如果同时启动, 选择节点号小的作为控制节点
3、如果控制节点故障, 那么会将先向表决磁盘写入心跳信息的节点设置为控制节点
4、如果控制节点故障, 同时多个节点先向表决磁盘写入心跳信息, 那么选择节点号小的作为控制节点
1、只有一个活动节点, 则设置活动节点为控制节点
2、存在多个活动节点, 则选举节点号小的为控制节点
DMASM 和 DMDSC 集群中的实例启动后一直处于waiting状态, 等待DMCSS的启动命令
DMCSS控制节点在选取监控对象控制节点后, 通知控制节点启动, 在控制捷尔的启动完成后再依次通知其他普通节点启动
DMCSS维护集群状态, 随着节点活动信息的变化, DMCSS节点会通知被监控节点执行不同的命令来控制节点启动、故障处理、重新加入等操作
DMCSS控制节点每秒从表决磁盘读取被监控对象的心跳信息, 一旦被监控对象的时间戳再DCR_GRP_DSKCHK_CNT秒内没有变化则认为被监控对象出现异常
DMCSS普通节点定时读取DMCSS控制节点的信息信息, 监控DMCSS运行状态
DMCSS实例启动后, 每间隔一秒向表决磁盘指定区域写入心跳信息(包括自身状态、时间戳等) 表示DMCSS节点处于活动状态
DMCSS控制节点检测到实例故障后, 首先向故障实例的表决磁盘区域写入kill命令(所有实例一旦发现kill命令, 无条件自杀)
1、活动节点重新选举DMCSS控制节点
2、新的DMCSS控制及节点通知DMCSS故障节点对应的dmasmsver、dmserver强制退出
1、挂起工作线程
2、更新DCR的故障节点信息
3、通知故障节点对应的dmserver强制退出
4、dmasmsver进行故障恢复
5、恢复工作线程
1、更新DCR故障节点信息
2、重新选举一个控制节点
3、通知dmserver控制节点启动故障处理流程
4、等待dmserver故障处理结束
1、挂起工作线程
2、修改节点的状态
3、执行恢复操作
4、重新进入STARTUP状态, 准备启动
5、OPEN重新加入的节点
6、重启工作线程
7、执行OPEN数据库实例操作
1、挂起工作线程
2、修改节点的状态
3、执行恢复操作
4、重新进入STARTUP状态, 准备启动
5、OPEN重新加入的节点
6、重启工作线程
DMCSS控制节点通过一系列的集群指令, 控制被监控对象的启动、故障处理切换等操作
DMCSS控制节点向目标对象的表决磁盘指令去写入命令, 通知目标对象执行相应的命令并等待返回结果
自动存储管理器, 提供一个专用的分布式文件系统, 支持多节点同时访问、修改数据
主要功能
1、格式化ASM磁盘
2、初始化DCR 同时指定密码
3、初始化 voting disk
4、导出 DCR 配置信息
5、导入 DCR 配置信息
6、清理 DCR 指定组中的故障节点信息
7、创建用于模拟裸设备或块设备的磁盘文件
8、列出指定路径下的磁盘属性
9、联机修改DCR 磁盘, 扩展节点
每个提供ASM服务的节点都必须启动一个DMASMSVR服务
DMASMSVR启动时扫描/dev/raw/ 的所有裸设备或块设备、加载ASM磁盘
DMASMSVR实例之间使用MAL系统进行通信和数据的传递
DMASMSVR的启动、关闭、故障处理由DMCSS控制, DMASMSVR定期向表决磁盘只当的区域写入时间戳、状态、命令、命令执行结果等信息
DMCSS控制节点定时从表决磁盘读取信息, 检查DMASMSVR的实例状态等、启动相应的处理流程
DMASMSVR只有一个控制节点由DMCSS选举出来的, 所有DDL操作都是控制节点执行
管理ASM的工具
创建磁盘组
CREATE DISKGROUP 'disk_name' ASMDISK '/dev/raw/xxx';
添加磁盘
ALTER DISKGROUP 'disk_name' ADD ASMDISK '/dev/raw/xxx';
删除磁盘组
DROP DISKGROUP 'disk_name';
启动DMDSC集群之前, 要先启动DMCSS服务和DMASM服务
DMCSS服务需要手动退出所有节点, 没有同步功能
LINUX环境下 DMASMSVR 和 dmserver 都监控了操作系统的SIGTERM信号
执行 kill -10 则DMASMSVR 和 dmserver 服务都能正常退出
执行 kill -2 命令 dmserver实例节点自动退出, 不影响其他节点正常运行
关闭DMDSC集群时, 一次关闭 dmserver DMASMSVR DMCSS 服务
dmdcr_cfg.ini
格式化DCR 和 voting disk的配置文件, 配置包含三类: 集群环境全局信息、集群组的信息、组内节点信息
使用dmasmcmd工具, 可以根据dmdcr_cfg.ini配置文件格式化DCR 和 voting disk
集群全局配置信息
DCR_VTD_PATH Voting Disk路径
DCR_N_GRP 集群环境包括多少个group, 取值范围1~16
DCR_OGUID 消息标识, dmcssm登录dmcss消息校验用
集群组信息
DCR_GRP_TYPE 组类型(CSS\ASM\DB)
DCR_GRP_NAME 组名, 16字节, 配置文件内不可重复
DCR_GRP_N_EP 组内节点个数N, 最大16
DCR_GRP_EP_ARR 组内包含的节点序列号, {0,1,2,...N-1}用户不能指定, 仅用于从DCR磁盘export出来可见
DCR_GRP_N_ERR_EP 组内故障节点个数用户不能指定, 仅用于从DCR磁盘export出来可见
DCR_GRP_ERR_EP_ARR 组内故障节点序列号用户不能指定, 仅用于从DCR磁盘export出来可见
DCR_GRP_DSKCHK_CNT 磁盘心跳机制, 容错时间, 单位秒, 缺省60S, 取值范围5~600
节点信息, 某些属性可能只针对某一类型节点, 比如SHM_KEY只针对ASM节点有效
DCR_EP_NAME 节点名, 16字节, 配置文件内不可重复, DB的节点名必须和dm.ini里的INSTANCE_NAME保持一致ASM的节点名必须和dmasvrmal.ini里的MAL_INST_NAME一致同一类型节点的EP_NAME不能重复
DCR_EP_SEQNO 组内序号, CSS/ASM不能配置, 自动分配DB可以配置, 0 ~ n_ep -1, 组内不能重复, 如不配置则自动分配
DCR_EP_HOST 节点IP(实例所在机器的IP地址)对DB来说, 是绑定VIP的网卡对应的物理IP地址, 若配置DCR_VIP才需要配置, 否则不需要配置CSS中设置表示DMCSSM可以通过该IP连接CSS, 可以不配置
DCR_EP_PORT 节点TCP监听端口(CSS/ASM/DB有效, 对应登录CSS/ASM/DB的端口号), 节点实例配置此参数, 取值范围1024~65534 发起连接端的端口在1024~65535之间随机分配特别对DB来说, DB的DCR_EP_PORT与dm.ini中的PORT_NUM不一致时, DB端口以DCR_EP_PORT为准
DCR_EP_SHM_KEY 共享内存标识, 数值类型(ASM有效, 初始化共享内存的标识符), 应为大于0的4字节整数
DCR_VIP 节点VIP(DB有效, 表示配置的虚拟IP), 需要和DCR_EP_HOST在同一网段若需要取消VIP配置, 仅需要将DB组的DCR_VIP和DCR_EP_HOST删除即可
DCR_CHECK_PORT DCR检查端口号检查实例是否活动的时候用, 各实例不能冲突实例配置此参数, 取值范围1024~65535 DCR发起连接的端口在1024~65534之间随机分配
DCR_EP_SHM_SIZE 共享内存大小, 单位M, (ASM有效, 初始化共享内存大小), 取值范围10~1024共享内存大小与其能管理的磁盘大小的关系详见6.4节
DCR_EP_ASM_LOAD_PATH ASM磁盘扫描路径, Linux下一般为/dev/raw, 文件模拟情况, 必须是全路径, 不能是相对路径
dmcss、dmasmsvr、dmasmtool等工具的输入参数, 记录当前节点序号以及DCR磁盘路径
DMDCR_PATH 记录DCR磁盘路径
DMDCR_SEQNO 记录当前节点序号(用来获取ASM登录信息)
DMDCR_MAL_PATH 保存dmmal.ini配置文件的路径 , 仅对dmasmsvr有效
DMDCR_ASM_RESTART_INTERVAL DMCSS认定DMASM节点故障重启的时间间隔(取值0~ 86400s) , DMCSS只负责和DMDCR_SEQNO节点号相等的DMASM节点的故障重启 , 超过设置的时间后 , 如果DMASM节点的active标记仍然为FALSE , 则DMCSS会执行自动拉起 如果配置为0 , 则不会执行自动拉起操作 , 默认为60s
DMDCR_ASM_STARTUP_CMD DMCSS认定DMASM节点故障后 , 执行自动拉起的命令串 , 可以配置为服务方式或命令行方式启动 , 具体可参考说明部分
DMDCR_DB_RESTART_INTERVAL DMCSS认定DMDSC节点故障重启的时间间隔(取值0~ 86400s) , DMCSS只负责和DMDCR_SEQNO节点号相等的DMDSC节点的故障重启 , 超过设置的时间后 , 如果DMDSC节点的active标记仍然为FALSE , 则DMCSS会执行自动拉起 如果配置为0 , 则不会执行自动拉起操作 , 默认为60s
DMDCR_DB_STARTUP_CMD DMCSS认定DMDSC节点故障后 , 执行自动拉起的命令串 , 可以配置为服务方式或命令行方式启动 , 具体可参考说明部分
DMDCR_AUTO_OPEN_CHECK 指定时间内如果节点实例未启动 , DMCSS会自动将节点踢出集群环境 , 单位为秒 , 取值范围应大于等于30s不配置此参数时表示不启用此功能
DMDCR_MESSAGE_CHECK 是否对CSS通信消息启用通信体校验(只有当消息的发送端和接收端都配置为1才启用通信体校验)0: 不启用;1: 启用默认为1
节点一: 100.63.1.8 10.10.10.8 itsdata1
节点二: 100.63.1.9 10.10.10.9 itsdata2
共享存储: 100.63.1.10 10.10.10.10 itsstorage
1、安装iscsi软件
[root@itsstorage ~]# yum -y install scsi-target-utils iscsi-initiator-utils
2、配置对外提供的磁盘
[root@itsstorage ~]# iscsi-iname
iqn.1994-05.com.redhat:626da0b7621c
[root@itsstorage ~]# vi /etc/tgt/targets.conf
backing-store /dev/sdb
backing-store /dev/sdc
backing-store /dev/sdd
backing-store /dev/sde
[root@itsstorage ~]# /etc/init.d/tgtd start
3、查看存储信息
[root@itsstorage ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.1994-05.com.redhat:626da0b7621c
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
LUN: 2
Type: disk
SCSI ID: IET 00010002
SCSI SN: beaf12
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdc
Backing store flags:
LUN: 3
Type: disk
SCSI ID: IET 00010003
SCSI SN: beaf13
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdd
Backing store flags:
LUN: 4
Type: disk
SCSI ID: IET 00010004
SCSI SN: beaf14
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sde
Backing store flags:
Account information:
ACL information:
ALL
[root@itsstorage ~]#
1、安装软件
[root@itsdata1 ~]# yum -y install iscsi-initiator-utils
2、各个节点扫描存储信息
[root@itsdata1 ~]# iscsiadm -m discovery -t st -p 100.63.1.10
Starting iscsid: [ OK ]
100.63.1.10:3260,1 iqn.1994-05.com.redhat:626da0b7621c
[root@itsdata1 ~]#
3、各个节点登录存储
[root@itsdata1 ~]# iscsiadm -m node -T iqn.1994-05.com.redhat:626da0b7621c -p 100.63.1.10 -l
Logging in to [iface: default, target: iqn.1994-05.com.redhat:626da0b7621c, portal: 100.63.1.10,3260] (multiple)
Login to [iface: default, target: iqn.1994-05.com.redhat:626da0b7621c, portal: 100.63.1.10,3260] successful.
[root@itsdata1 ~]#
4、各节点查看磁盘挂载情况
[root@itsdata1 ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000eb617
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 157 1048576 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 157 5222 40688640 83 Linux
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[root@itsdata1 ~]#
[dmdba@itsdata1 dm8]$ ./DMInstall.bin -i
[root@itsdata1 ~]# vi /etc/udev/rules.d/90-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"
KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
[root@itsdata1 ~]# scp /etc/udev/rules.d/90-raw.rules 100.63.1.9:/etc/udev/rules.d/
[root@itsdata1 ~]# start_udev
Starting udev: [ OK ]
[root@itsdata1 ~]# partprobe /dev/sdb
[root@itsdata1 ~]# partprobe /dev/sdc
[root@itsdata1 ~]# partprobe /dev/sdd
[root@itsdata1 ~]# partprobe /dev/sde
[root@itsdata1 ~]# ls /dev/raw/ -1
raw1
raw2
raw3
raw4
rawctl
[root@itsdata1 ~]#
[root@itsdata1 ~]# blockdev --getsize64 /dev/raw/raw{1,2,3,4}
10737418240
10737418240
10737418240
10737418240
[root@itsdata1 ~]#
[dmdba@itsdata1 ~]$ vi /dm8/config/dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
# 第一组配置CSS, DCR_GRP_NAME的名称要和成员的组名称相同
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.10.1.8
DCR_EP_PORT = 9341
[CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 10.10.1.9
DCR_EP_PORT = 9341
# 第二组配置ASM, DCR_GRP_NAME的名称要和成员的组名称相同
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.1.8
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.1.9
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
# 第三组配置DB, DCR_GRP_NAME的名称要和成员的组名称相同
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[dmdba@itsdata1 bin]$ ./dmasmcmd
ASM>CREATE DCRDISK '/dev/raw/raw1' 'DCR'
ASM>CREATE VOTEDISK '/dev/raw/raw2' 'VOTE'
ASM>CREATE ASMDISK '/dev/raw/raw3' 'LOG0'
ASM>CREATE ASMDISK '/dev/raw/raw4' 'DATA0'
/* 只需要再节点一执行 */
ASM>INIT DCRDISK '/dev/raw/raw1' FROM '/dm8/config/dmdcr_cfg.ini' IDENTIFIED BY '123456' -- DCR磁盘可以指定其他ASM磁盘
ASM>INIT VOTEDISK '/dev/raw/raw2' FROM '/dm8/config/dmdcr_cfg.ini' -- VOTEDISK必须和dmdcr_cfg.ini中配置的一样
/* 只需要再节点一执行 */
[dmdba@itsdata1 ~]$ vi /dm8/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1 # 该参数要和 dmdcr_cfg.ini 中的 DCR_EP_NAME 保持一致
MAL_HOST = 10.10.1.8
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 10.10.1.9
MAL_PORT = 7236
1、节点一配置
[dmdba@itsdata1 bin]$ vi /dm8/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /dm8/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini
2、节点二配置
[dmdba@itsdata2 bin]$ vi /dm8/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /dm8/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/config/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini
/* 两个节点的 DMDCR_SEQNO 参数不能相同要唯一 path后面的dm.ini参数位置也不一样 */
1、节点一
[dmdba@itsdata1 bin]$ ./dmcss DCR_INI=/dm8/config/dmdcr.ini
2、节点二
[dmdba@itsdata2 bin]$ ./dmcss DCR_INI=/dm8/config/dmdcr.ini
[dmdba@itsdata1 bin]$ ./dmasmtool dcr_ini=/dm8/config/dmdcr.ini
DMASMTOOL V8
ASM>CREATE DISKGROUP 'DMLOG' ASMDISK '/dev/raw/raw3'
ASM>CREATE DISKGROUP 'DMDATA' ASMDISK '/dev/raw/raw4'
ASM>ls
+
disk groups total [4]......
NO.1 name: DMLOG
NO.2 name: DMDATA
NO.3 name: VOTE
NO.4 name: DCR
Used time: 0.688(ms).
ASM>
[dmdba@itsdata1 bin]$ vi /dm8/config/dminit.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 = 1024
dcr_path = /dev/raw/raw1 #dcr 磁盘路径, 目前不支持 asm, 只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
# inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
[DSC1]
config_path = /dm8/config/dsc1
port_num = 5236
mal_host = 10.10.1.8
mal_port = 9236
log_path = +DMLOG/log/DSC1_log01.log
log_path = +DMLOG/log/DSC1_log02.log
#inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
[DSC2]
config_path = /dm8/config/dsc2
port_num = 5236
mal_host = 10.10.1.9
mal_port = 9236
log_path = +DMLOG/log/DSC2_log01.log
log_path = +DMLOG/log/DSC2_log02.log
[dmdba@itsdata1 bin]$ ./dminit control=/dm8/config/dminit.ini
[dmdba@itsdata1 bin]$ scp -r /dm8/config/dsc2 100.63.1.9:/dm8/config/
1、节点一
[root@itsdata1 root]# ./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /dm8/config/dmdcr.ini
2、节点二
[root@itsdata2 root]# ./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /dm8/config/dmdcr.ini
1、节点一
[root@itsdata1 ~]# /etc/init.d/DmCSSServicecss1 start
Starting DmCSSServicecss1: [ OK ]
[root@itsdata1 ~]#
2、节点二
[root@itsdata2 root]# /etc/init.d/DmCSSServicecss2 start
Starting DmCSSServicecss2: [ OK ]
[root@itsdata2 root]#
[dmdba@itsdata1 bin]$ vi /dm8/config/dmcssm.ini
CSSM_OGUID = 63635
CSSM_CSS_IP = 10.10.1.8:9341
CSSM_CSS_IP = 10.10.1.9:9341
CSSM_LOG_PATH =/dm8/log
CSSM_LOG_FILE_SIZE = 1024
CSSM_LOG_SPACE_LIMIT = 0
[dmdba@itsdata1 bin]$ ./dmcssm ini_path=/dm8/config/dmcssm.ini
show -- 输入命令
monitor current time:2022-06-14 15:01:17, n_group:3
=================== group[name = CSS, seq = 0, type = CSS, Control Node = 0] ========================================
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC1] auto restart = TRUE
[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[DSC2] auto restart = TRUE
-- CSS集群
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:01:16 CSS1 0 9341 Control Node OPEN WORKING OK TRUE 2106423 2106633
2022-06-14 15:01:16 CSS2 1 9341 Normal Node OPEN WORKING OK TRUE 2108780 2108985
=================== group[name = ASM, seq = 1, type = ASM, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
-- ASM 集群
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:01:16 ASM1 0 9351 Control Node OPEN WORKING OK TRUE 2114352 2114538
2022-06-14 15:01:16 ASM2 1 9351 Normal Node OPEN WORKING OK TRUE 2116074 2116256
=================== group[name = DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
-- DSC 集群
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:01:16 DSC1 0 5236 Control Node OPEN WORKING OK TRUE 2190357 2190484
2022-06-14 15:01:16 DSC2 1 5236 Normal Node OPEN WORKING OK TRUE 2191321 2191447
==================================================================================================================
[root@itsdata1 ~]# vi /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(en)
dmdsc=(100.63.1.8:5236,100.63.1.9:5236)
[dmdba@itsdata1 bin]$ ./disql SYSDBA/SYSDBA@dmdsc
SQL> SELECT * FROM V$DSC_EP_INFO;
LINEID EP_NAME EP_SEQNO EP_GUID EP_TIMESTAMP EP_MODE EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1 DSC1 0 2190357 2190635 Control Node OK
2 DSC2 1 2191321 2191598 Normal Node OK
1、关闭节点一
[root@itsdata1 root]# /etc/init.d/DmCSSServicecss1 stop
2、客户端可以正常连接并且不受限制
[dmdba@itsdata2 bin]$ ./disql SYSDBA/SYSDBA@dmdsc
SQL> select * from t1;
LINEID ID
---------- -----------
1 0
SQL> INSERT INTO T1 VALUES(1);
SQL> COMMIT;
SQL> select * from t1;
LINEID ID
---------- -----------
1 0
2 1
show
monitor current time:2022-06-14 15:33:47, n_group:3
=================== group[name = CSS, seq = 0, type = CSS, Control Node = 1] ========================================
[CSS1] auto check = FALSE, global info:
Connect to [CSS1] failed, please check the network or the CSSM_CSS_IP config in [/dm8/config/dmcssm.ini] .
[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[DSC2] auto restart = TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:33:46 CSS1 0 9341 Normal Node OPEN SYSHALT OK FALSE 2106423 2108332
2022-06-14 15:33:46 CSS2 1 9341 Control Node OPEN WORKING OK TRUE 2108780 2110910
=================== group[name = ASM, seq = 1, type = ASM, Control Node = 1] ========================================
n_ok_ep = 1
ok_ep_arr(index, seqno):
(0, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:33:46 ASM1 0 9351 Normal Node OPEN SYSHALT ERROR FALSE 2114352 2116250
2022-06-14 15:33:46 ASM2 1 9351 Control Node OPEN WORKING OK TRUE 2116074 2118185
=================== group[name = DSC, seq = 2, type = DB, Control Node = 1] ========================================
n_ok_ep = 1
ok_ep_arr(index, seqno):
(0, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:33:46 DSC1 0 5236 Normal Node OPEN SYSHALT ERROR FALSE 2190357 2192196
2022-06-14 15:33:46 DSC2 1 5236 Control Node OPEN WORKING OK TRUE 2191321 2193377
==================================================================================================================
[root@itsdata1 root]# /etc/init.d/DmCSSServicecss1 start
show
monitor current time:2022-06-14 15:36:57, n_group:3
=================== group[name = CSS, seq = 0, type = CSS, Control Node = 1] ========================================
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC1] auto restart = TRUE
[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[DSC2] auto restart = TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:36:57 CSS1 0 9341 Normal Node OPEN WORKING OK TRUE 2796560 2796706
2022-06-14 15:36:57 CSS2 1 9341 Control Node OPEN WORKING OK TRUE 2108780 2111098
=================== group[name = ASM, seq = 1, type = ASM, Control Node = 1] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:36:57 ASM1 0 9351 Normal Node OPEN WORKING OK TRUE 2803462 2803584
2022-06-14 15:36:57 ASM2 1 9351 Control Node OPEN WORKING OK TRUE 2116074 2118374
=================== group[name = DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)
sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2022-06-14 15:36:57 DSC1 0 5236 Control Node OPEN WORKING OK TRUE 2898145 2898210
2022-06-14 15:36:57 DSC2 1 5236 Normal Node OPEN WORKING OK TRUE 2191321 2193565
==================================================================================================================
V$DSC_EP_INFO 显示实例信息, 登录任意节点查询得到的结果一致
V$DSC_GBS_POOL 显示 GBS 控制结构的信息, 仅显示登录节点的信息
V$DSC_GBS_POOLS_DETAIL 显示分片的 GBS_POOL 详细信息, 仅显示登录节点的信息
V$DSC_GBS_CTL 显示 GBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_DETAIL 显示 GBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_FIRST 显示 GBS 控制块 LRU 链表首页信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_FIRST_DETAIL 显示 GBS 控制块 LRU 链表首页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_LAST 显示 GBS 控制块 LRU 链表尾页信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_LAST_DETAIL 显示 GBS 控制块 LRU 链表尾页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_REQUEST_CTL 显示等待 GBS 控制块的请求信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_POOL 显示 LBS 控制结构的信息, 仅显示登录节点的信息
V$DSC_LBS_POOLS_DETAIL 显示分片的 LBS_POOL 详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL 显示 LBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_FIRST 显示 LBS 的 LRU_FIRST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_LAST 显示 LBS 的 LRU_LAST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_DETAIL 显示 LBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_FIRST_DETAIL 显示 LBS 的 LRU_FIRST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_LAST_DETAIL 显示 LBS 的 LRU_LAST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GTV_SYS 显示 GTV 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据无效
V$DSC_GTV_TINFO 显示 TINFO 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
V$DSC_GTV_ACTIVE_TRX 显示全局活动事务信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
V$DSC_LOCK 显示全局活动的事务锁信息, 登录任意节点查询得到的结果一致
V$DSC_TRX 显示所有活动事务的信息通过该视图可以查看所有系统中所有的事务以及相关信息, 如锁信息等, 登录任意节点查询得到的结果一致
V$DSC_TRXWAIT 显示事务等待信息, 登录任意节点查询得到的结果一致
V$DSC_TRX_VIEW 显示当前事务可见的所有活动事务视图信息根据达梦多版本规则, 通过该视图可以查询系统中自己所见的事务信息;可以通过与 v$dsc_trx 表的连接查询它所见事务的具体信息, 登录任意节点查询得到的结果一致
V$ASMATTR 如果使用有 ASM 文件系统, 可通过此视图查看 ASM 文件系统相关属性, 登录任意节点查询得到的结果一致
V$ASMGROUP 如果使用有 ASM 文件系统, 可通过此视图查看 ASM 磁盘组信息, 登录任意节点查询得到的结果一致
V$ASMDISK 如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 磁盘信息, 登录任意节点查询得到的结果一致
V$ASMFILE 如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 文件信息, 登录任意节点查询得到的结果一致
V$DCR_INFO 查看 DCR 配置的全局信息, 登录任意节点查询得到的结果一致
V$DCR_GROUP 查看 DCR 配置的组信息, 登录任意节点查询得到的结果一致
V$DCR_EP 查看 DCR 配置的节点信息, 登录任意节点查询得到的结果一致
V$DSC_REQUEST_STATISTIC 统计 DSC 环境内 TYPE 类型请求时间, 仅显示登录节点的信息
V$DSC_REQUEST_PAGE_STATISTIC 统计 lbs_XX 类型最耗时的前 100 页地址信息, 仅显示登录节点的信息
V$DSC_CRASH_OVER_INFO 显示 DSC 环境各节点数据页最小first_modified_lsn, 以及故障节点 file_lsn如果活动节点 buffer 中不存在更新页则 min_first_modified_lsn 为 NULL;节点故障后, 只有在所有 OK 节点 min_first_modified_lsn 都大于或等于故障节点file_lsn 之后, 才允许故障节点重加入;满足所有 OK 节点 min_first_modified_lsn都大于 crash_lsn 之后, crash_lsn 会清零
V$DSC_GLS_SYS 显示 DSC 环境下的系统全局封锁相关信息
详细内容请参考官方文档:https://eco.dameng.com
更多详情请访问达梦在线服务平台 https://eco.dameng.com/