DM MPP主要针对海量数据的OLAP应用;具有高性价比、高可靠性、功能强大、可动态扩容等优点。
环境准备
初始化数据库
分别在两台主机上初始化数据库。具体方法参考Linux下DM8安装及创建数据库实例
本例初始化后数据库路径为: /home/dmdba/dmdbms/cd
cd1配置
修改dm.ini
vim /home/dmdba/dmdbms/cd/dm.ini
INSTANCE_NAME = cd1 #实例名称
PORT_NUM = 5236 #服务监听端口
MAL_INI = 1 #MAL配置 0为不启用1为启用
MPP_INI = 1 #MPP配置 0为不启用1为启用
配置dmmal.ini
vim /home/dmdba/dmdbms/cd/dmmal.ini 添加如下内容并保存
[MAL_INST1]
MAL_INST_NAME = cd1
MAL_HOST = 192.168.24.220 #MAL地址
MAL_PORT = 5336 #MAL监听端口
MAL_INST_HOST = 141.169.24.220
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = cd2
MAL_HOST = 192.168.24.221
MAL_PORT = 5336
MAL_INST_HOST = 141.169.24.221
MAL_INST_PORT = 5236
配置dmmpp.ctl
vim /home/dmdba/dmdbms/cd/dmmpp.ini 添加如下内容并保存
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = cd1
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = cd2
使用dmctlcvt工具将dmmpp.ini转换成dmmpp.ctl
cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/cd/dmmpp.ini DEST=/home/dmdba/dmdbms/cd/dmmpp.ctl
cd2配置
修改dm.ini
Vim /home/dmdba/dmdbms/cd/dm.ini
INSTANCE_NAME = cd2 #实例名称
PORT_NUM = 5236 #服务监听端口
MAL_INI = 1 #MAL配置 0为不启用1为启用
MPP_INI = 1 #MPP配置 0为不启用1为启用
配置dmmal.ini #直接拷贝主机1的配置文件
scp dmdba@141.169.24.220:/home/dmdba/dmdbms/cd/dmmal.ini /home/dmdba/dmdbms/cd/dmmal.ini
配置dmmpp.ctl #直接拷贝主机1的配置文件
scp dmdba@141.169.24.220:/home/dmdba/dmdbms/cd/dmmpp.ctl /home/dmdba/dmdbms/cd/dmmpp.ctl
至此MPP集群配置完成
参考Linux下DM8安装及创建数据库实例分别对数据库实例注册系统服务并启动。
MPP集群的常用视图
SELECT SF_GET_SELF_EP_SEQNO(); # 获取会话连接的节点序号
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(); #获取当前会话连接的实例名
SELECT * FROM V$SESSIONS; #获取所有会话
SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO(); #获取当前连接的实例上的所有会话
SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='cd1'); #获取实例cd1上的所有会话
SELECT TABLE_USED_PAGES('SYSDBA','TABLES'), NAME FROM V$INSTANCE; #获取每个实例上tables的使用空间
SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','TABLES') TOTAL_SIZE, NAME FROM V$INSTANCE); #获取所有实例上tables的总使用空间