概述:16号正式学习,25号考试,横跨两周,上班时间基本都是挂着,下班和周末看视频学习,时间有点紧张,考试题目有点小多,实验还差注册服务就关机了,有点可惜;
DCP比DCA里面多了部分内容,DCA更多偏向于教你认识达梦数据库,安装部署,基础操作。DCP是在此的基础上,对数据库进行了更深层次的讲解以及数据库运维应该拥有哪些技能,包含分区表、物化视图、索引、统计信息、迁移、系统字段、安全管理、性能优化(其实更多的是根据系统包的PDF,识别数据库在运行里面的那些参数怎么看,是什么含义,根据实际环境和参数进行调整)和集群,个人感觉集群是里面步骤最多的,应该是对标Oracle的RAC。
如下是我的部分笔记分区表关键词PARTITION,其中使用的较多的是范围分区表,其中values LESS than只是小于,非等于;
外部表的控制文件,和数据文件不是非要放在bin目录下,bin目录可以放在bin目录下,数据文件的路径只是dmdba用户拥有读写权限的其他文件夹也可。
关于在SQL语句使用时的大小写问题,如果在创建时不加双引号,则系统默认使用大写,如果加了双引号创建,则名字可以为小写,在查询/修改/更新的时候,如果发现报错是无效的XXX,可以用管理工具去看下名字是不是大小写异常;建议平常在调用表的识货,把模式加进去,养成好习惯。
索引优化建议多问问经验丰富的同事,免得优化了这个表,导致其他的查询变慢了,索引要考虑的东西有点多。
达梦DEM是个好东西,老版本免费,不过实在不行也可以用监视器+zabbix;就是领导看不方便,单纯的技术看看,也够用了;
数据库审计功能是把双刃剑,还是直接让数据库审计系统去做这个事情吧,能买得起正版数据库的,基本都能再买一套数据库审计系统,免得降低了数据库性能。
数据迁移吧,课程讲的不多,不过根据目前行业形式来看,使用的是比较多的,而且很吃经验,在国产化替换的过程当中,客户就想我们能给他们提供一条龙服务,既换操作系统、还把业务顺便迁过去,还是得多练练手,建议自己搭建一些数据库,多练练手。
数据快速载入,参数还需再学习,再练习,多用一些不同格式的的数据文件来做尝试;
部分tips:
1、ini配置文件需要放置在dm.ini的CONFIG_PATH路径下,不然执行会报错,建议直接把dmmal.ini,dmwatcher.ini,dmmonitor.ini.dmarch.ini这四个集群配置文件都放在dm.ini目录里面,方便调用,方便管理;
2、虚拟机要记得使用静态IP,久了容易忘;而且麒麟V10操作系统默认网卡不在开机启动,需要吧oneboot的参数改为yes;
3、全文索引和PATH配置有个坑,在有全文索引的情况下,数据库要去bin目录下启动,如果配置了PATH,习惯性开个终端就执行命令,全文索引会检索不到。
4、在集群后,如果是通过数据库systemctl命令起来的,才能用systemctl查看status,如果是监视器拉起来的,则看不了状态,只能用netstat看端口起没起来,然后尝试着执行disql;也可以直接去监视器看状态。
5、归档日志容易占磁盘,建议设置固定大小,然后让归档进行覆盖回滚。
重点内容-集群搭建步骤:
步骤梳理:
//搭建主备环境需要用物理备份与恢复,即
1、关闭数据库:shutdown immediate;
2、使用dmdba用户在bin目录下进入dmrman冷备:backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup/fullbac/DMFULLBAC01';
3、更改主库:dm.ini文件中需要开启归档和MAL:====如果记不住命令,可以在这个目录下用,版本问题,文件可能有错,不过根据手册,比手动敲更快;//ini配置文件要放在dm.ini的CONFIG_PATH路径下
在vim中,可以按esc后/输入查询单词,然后按n进行跳转;
在dm.ini中更改实例名,参数为INSTANCE_NAME =DMserver01
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
4、主机开启MAL系统在数据库目录DAMENG下配置dmmal.ini;----mal重新创建文件;
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMSERVER01 #实例名,和dm.ini 中的INSTANCE_NAME 一致
MAL_HOST = 192.168.94.135 #MAL 系统监听TCP 连接的IP 地址
MAL_PORT = 15236 #MAL 系统监听TCP 连接的端口
#MAL_INST_HOST = 192.168.94.135 #实例的对外服务IP 地址 ,这个可以注释掉,注释后就用MAL_HOST的IP
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的PORT_NUM 一致
MAL_DW_PORT = 15238 #实例本地的守护进程监听TCP 连接的端口
MAL_INST_DW_PORT = 5238 #实例监听守护进程TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.94.136
MAL_PORT = 15236
#MAL_INST_HOST = 192.168.94.136 #实例的对外服务IP 地址 ,这个可以注释掉,注释后就用MAL_HOST的IP
MAL_INST_PORT = 5236
MAL_DW_PORT = 15238
MAL_INST_DW_PORT = 5238
5、在数据库目录DAMENG下配置dmwatcher.ini;----dmwatcher重新创建文件;
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 888888 #守护系统唯一OGUID值(这里要和数据库的OGUID一致,OGUID是写入控制文件的)
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
6、归档配置在DAMENG下配置dmarch.ini(主备库的dmarch.ini文件不一致);
ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMServer02 #实时归档目标实例名(主机和备份配置不同,配置向备机同步)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
7、将备份文件拷贝去备机(利用scp远程拷贝命令);
scp -r /dm8/backup/FULLbac dmdba@192.168.94.136:/dm8/backup
scp -r /dm8/backup/dmmal.ini dmdba@192.168.94.136:/dm8/backup/INI
scp -r /dm8/backup/dmarch.ini dmdba@192.168.94.136:/dm8/backup/INI
scp -r /dm8/backup/dmwatcher.ini dmdba@192.168.94.136:/dm8/backup/INI
8、还原备库数据库restore二选一,注意要使用dmdba进行恢复,如果使用root会报错;
=================下面命令是因为使用的是冷备,所以是直接还原数据库,没有做恢复动作,直接更新魔数;
RMAN> restore database to '/dm8/data/DAMENG' from backupset '/dm8/backup/'; --没有库的情况下基于目录恢复,方便好用
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
9、将主库的dmmal.ini、dmarch.ini、dmwatcher.ini拷贝至备库;并且更新dm.imi实例名等信息
在dm.ini中更改实例名,参数为INSTANCE_NAME =DMSERVER02
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
10、备库更改dmarch.ini的配置
ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMServer01 #实时归档目标实例名(主机和备份配置不同,配置向备机同步)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
11、将主库启动到MOUNT状态:
在bin目录下./dmserver /dm8/data/DAMENG/dm.ini mount
12、新开窗口,主库设置为主机-primary
./disql sysdba/admpwd@!23
alter database primary;
Alter system set 'ALTER_MODE_STATUS'=1;
sp_set_oguid(888888); --这里同配置文件一致
Alter system set 'ALTER_MODE_STATUS'=0;
13、将备库启动到MOUNT状态:一定不能设置错了,不然就要重新还原和恢复
在bin目录下./dmserver /dm8/data/DAMENG/dm.ini mount
12、新开窗口,备库设置为备机standby
./disql sysdba/admpwd@!23
alter database standby;
Alter system set 'ALTER_MODE_STATUS'=1;
sp_set_oguid(888888); --这里同配置文件一致
Alter system set 'ALTER_MODE_STATUS'=0;
==========================================================
13、主备库关闭防火墙
14、主库的bin目录下,运行 ./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
15、备库的bin目录下,运行 ./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
16、show,在创建正常时,查看结果数据库状态为OPEN,且两边的LSN为一样的
可以在数据库中看见mal的线程信息:select * from v$THREADS t where t.name like '%mal%';
可以在数据库中看见mal的端口信息:netstat -ntlp
watcher拥有单独的进程,mal和数据库实例是一个进程;
17、单独使用一台设备开启监视器192.168.94.137(监视器可以多个)//监视器需要安装数据库服务,但是不需要数据库实例
在dm8目录下创建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 = 888888
MON_DW_IP = 192.168.94.135:15238
MON_DW_IP = 192.168.94.136:15238
非确认监视器dmmonitor_con.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 888888
MON_DW_IP = 192.168.94.135:15238
MON_DW_IP = 192.168.94.136:15238
18、在bin目录下启动监视器
./dmmonitor /路径/dmmonitor.ini
show监视器可以看见主备状态;
19、主库、备库和监控器分别使用root用户在/dm8/script/root目录下将实例和监视器注册为系统服务
[root@KylinDCA02 root]# ./dm_service_installer.sh -t dmserver -p DM01 -dm_ini /dm8/data/DAMENG/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDM01.service → /usr/lib/systemd/system/DmServiceDM01.service.
创建服务(DmServiceDM01)完成
[root@KylinDCA02 root]# ./dm_service_installer.sh -t dmwatcher -p DM02 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDM02.service → /usr/lib/systemd/system/DmWatcherServiceDM02.service.
创建服务(DmWatcherServiceDM02)完成
[root@KylinDCA02 root]# ./dm_service_installer.sh -t dmmonitor -p DM03 -monitor_ini /dm8/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceDM03.service → /usr/lib/systemd/system/DmMonitorServiceDM03.service.
创建服务(DmMonitorServiceDM03)完成
Systemctl start DmServiceDM01
Systemctl start DmWatcherServiceDM02
Systemctl start DmMonitorServiceDM03
20、监视器上可以查看集群的状态
Show命令查看集群状态
login登录
choose switchover查看选择可切换为PRIMARY库的备库列表
switchover 切换主库
help 查看用法
可以通过login登录,使用数据库口令-然后利用switchover切换主备库;
如果使用手动方式关闭数据守护系统,请严格按照以下顺序执行:
1. 先关闭确认监视器(防止自动接管)
2. 关闭备库守护进程-watcher(防止重启实例)
3. 关闭主库守护进程-watcher(防止重启实例)
4. Shutdown 主库
5. Shutdown 备库
Select * from v$arch_status;