DCP考试心得
引言
我的时间线是这样的:6月12号考的DCA,七月中上旬考的DCP。中间隔了一个月左右。考DCA的时候,感觉大部分时间在练操作,建库、建表空间、用户管理、备份还原这些。考完之后回头看,这些基本都属于“会用”的范畴——你知道怎么操作,但不太清楚为什么这么设计,出了稀奇古怪的问题怎么排查。DCP的定位不一样。它侧重的是管理和优化。DCP内容主要分六块:体系结构,数据迁移、对象管理、安全审计、备份恢复、SQL优化。
体系结构
相比DCA阶段对达梦架构的初步认识,DCP的体系结构部分要求理解得更深一层。重点集中在内存分配机制、参数修改方式、控制文件管理以及DEM的定位。内容本身不算难,但考点比较零散。
内存结构
达梦的内存结构主要分为数据缓冲区、字典缓冲区、日志缓冲区、SQL缓冲区等几大块。其中数据缓冲区占比最大,对查询性能有直接影响。字典缓冲区用于缓存元数据,如表定义、用户权限等,设置过小会导致频繁访问系统表,拖慢响应速度。这两项是做实例级内存优化时最常调整的参数。
参数修改
DCP需要掌握四种参数修改方式,各有不同的生效范围和持久性:
alter system set:修改系统级参数,部分参数需重启生效,部分可动态生效,需结合具体参数类型判断。
alter session set:仅对当前会话有效,断开即失效,适用于临时测试场景。
直接修改dm.ini文件:最底层的修改方式,需重启数据库方能生效。
系统过程调用:如SP_SET_PARA_VALUE,支持在线修改部分参数,灵活度较高。
此外还有隐藏参数,正常视图查询不到,只能在数据库启动后查看和修改。笔试可能会涉及其查询条件或修改限制,知道其存在即可。
控制文件
控制文件是数据库物理结构的元数据记录,包含数据文件路径、日志文件路径、表空间映射等关键信息。一旦丢失或损坏,数据库将无法启动。
两个操作要点:
查看:控制文件为二进制格式,无法直接读取,需使用dmcvt工具将其转换为文本文件后再进行查看。
备份:标准流程是先对当前控制文件做备份,再进行修改操作,修改完成后删除旧备份。若有必要,再对新文件单独备份。这个顺序在笔试和机试中都可能出现。
DEM
DEM是达梦提供的Web端集中管理平台,用于多库监控和运维管理。体系结构中会涉及它的角色定位,机试不考,笔试可能有一两道概念题。安装时需注意Java环境版本匹配,32位与64位不兼容时会导致安装失败,后面讲DMDIS时会详细展开。
表空间与数据文件
这一块与DCA的内容衔接较紧,但DCP更侧重设计层面的考量,如表空间规划、表类型选择、分区与表空间的对应关系等。具体内容会在后面的对象管理和优化章节中结合实例展开。
体系结构这部分以概念和配置为主,整体难度不高。建议重点掌握参数修改的四种方式及其生效规则、控制文件的备份流程,这两处机试和笔试都可能涉及。下一节写数据迁移。
数据迁移
数据迁移是DCP区别于DCA的一大块新内容,主要三个工具:
DTS:图形化工具,适合常规异构数据库迁移(Oracle到DM、MySQL到DM),支持对象和数据迁移,自动处理部分数据类型映射。
dmfldr:命令行快速装载工具,适合大数据量场景,需要通过配置文件指定字段映射、分隔符等,效率高但使用门槛也高。
DMDIS:数据集成平台,侧重ETL场景,支持数据清洗转换脱敏。Oracle到DM迁移。
注意事项:PDB问题:Oracle多租户架构下用户数据在PDB里,用DTS连接时要确认连的是CDB还是PDB,连错了可能只看到系统表。数据类型映射:NUMBER、VARCHAR2、日期类型等,迁移前做一轮测试确认映射结果。数据迁移机试考实际操作,DTS&DIS做Oracle到DM迁移,给文件用dmfldr导入并自己写控制文件。
对象管理
对象管理是DCP的核心模块之一,重点在分区表的设计与管理、索引的高级特性,以及外部表、临时表、HUGE表等特殊表类型的适用场景。
分区表
分区表是这部分的重头戏。达梦支持范围分区、哈希分区、列表分区,以及三者的多级组合,比如先按时间做范围分区,再在子分区里做哈希分区,实际生产中用得比较多。
几个关键机制:
间隔分区:通过函数定义分区粒度,当插入的数据超出已有范围时自动创建新分区,不需要手动维护。适合按时间持续增长的数据表。
默认分区:可以指定一个默认分区,不满足其他分区条件的数据会落入其中,相当于兜底逻辑。
行移动开关:更新数据导致行需要从当前分区移动到另一分区时,必须开启ROW_MOVEMENT,否则操作直接报错。建完分区表建议确认这个开关状态。
分区管理操作:增加、删除、拆分、交换分区都属于常规的ALTER TABLE操作,语法需要掌握。
非分区表转分区表:实际工作中常见的需求,比如一张大表跑了一段时间后查询变慢,需要改造成分区表。具体实现方式有几种,需要根据是否有停机窗口、数据量大小来选择。
索引高级管理
索引在DCP里不再只是加速查询的工具,需要理解几种常见索引结构的原理和适用场景。
B树是默认索引结构,达梦实际实现的是B+树变体。LSM树将随机写转化为顺序写,适合写入密集的场景。全文索引用于文本检索,核心在于分词器的选择:最少分词索引空间小但可能漏词,最多分词查全率高但索引体积大,默认分词结合了最少分词和英文分词。需要注意全文索引创建后需要手动填充才能正常使用,否则查询无结果。
索引状态管理有几个常用操作:设置为失效后优化器会忽略该索引,可用于临时测试索引对执行计划的影响。从失效改回有效需要重建,因为失效期间索引数据不再同步。重建索引时REBUILD ONLINE可以在线执行,不阻塞DML操作,生产环境优先选用。日常运维中还需要定期监控索引碎片化程度,决定是否重建。
其他表类型
外部表的数据存在数据库外部的文件系统中,建表时指定文件路径即可查询,但不检查文件是否真实存在,只有在实际查询时才会报错。临时表分事务级和会话级,分别在不同生命周期结束时自动清空数据,适用于存放中间计算结果。HUGE表面向列存储场景,分事务型和非事务型,在大数据量分析场景下使用较多。
对象管理整体上与运维实战结合紧密,理解每种对象类型的设计意图和管理方式,比单纯记语法更有价值。
安全审计、备份恢复与SQL优化
安全审计
安全审计在DCP里主要涉及审计策略的配置和加密技术的分层。审计分为三个级别:系统级审计针对数据库启停、连接等操作;语句级审计针对特定类型的SQL语句;对象级审计针对具体表或视图的访问操作。审计策略可以指定审计的用户、操作类型、执行时间条件,以及成功或失败时是否记录。配置审计时需要注意顺序,先开启审计功能,再应用审计策略脚本,否则策略可能不生效。审计结果通过分析工具查看,达梦提供了analyzer进行审计日志分析。
加密技术分为三层。透明加密在存储层实现,数据写入磁盘时自动加密,对应用完全无感。半透明加密在数据库层实现,通过加密函数和密钥管理,应用需要少量改造。非透明加密在应用层实现,由应用程序自行控制加密逻辑,灵活性最高但开发成本也最大。三种方式各有适用场景,需要根据安全等级和改造成本权衡。
备份恢复
备份恢复的核心概念是RPO和RTO。RPO是恢复点目标,决定能容忍丢失多少数据。RTO是恢复时间目标,决定能容忍多长时间恢复业务。根据这两个指标来选择备份策略:全量备份频率、是否开归档、用物理备份还是逻辑备份。
冷备是在数据库关闭状态下对数据文件做完整复制,工具是DMRMAN,同时负责各种级别的表空间还原。开归档是实现不完全恢复的前提,归档日志记录了所有数据变更,可以在全量备份的基础上恢复到指定时间点,而不是只能恢复到备份时刻。
热备则是可以用dmrman也可以用逻辑备份,但一个重要区别在于,在数据库损坏的情况下,逻辑备份无法恢复数据。
SQL优化
SQL优化部分重点是统计信息收集、执行计划解读和HINT使用。
统计信息是优化器生成执行计划的依据。收集方式有三种:动态采样每次执行都采样,开销大不推荐;自动收集由系统定时触发;手工收集用DBMS_STATS包或STAT ON语句,灵活可控。直方图分频率直方图和等高直方图,影响优化器对数据分布的判断。
执行计划解读遵循自下而上、从右向左的顺序。达梦优化器分RBO和CBO两种,RBO基于固定规则,CBO基于统计信息的成本估算,可以用HINT指定使用哪种。
HINT是优化器提示,可以手动干预执行计划,仅影响当前会话。统计信息提示可以手动告知优化器估算的行数,用于矫正偏差过大的执行计划。
SQL日志追踪通过开启SVR_LOG来记录SQL执行详情,是定位慢SQL的有效手段。配置时需要指定日志目录和追踪条件,生产环境注意日志空间占用。
结语
回顾整个DCP备考过程,最大的收获是对达梦有了一个相对完整的认识。DCA阶段学的是操作,DCP阶段补的是背后的原理和运维思路,两块拼起来之后,遇到问题至少知道从哪里开始排查。
考试时,注意数据库建库要求,另外遇到报错时,根据错误信息排查,基本都能解决。
以上是对DCP六个模块的简单整理,内容有限,仅供备考参考。
文章
阅读量
获赞
