作为一名数据库爱好者或从业者,我刚刚完成了达梦数据库(DM8)的DCP实训考核。当最后一道数据守护集群的题目验证通过时,回顾这一路从安装配置到高可用搭建的全过程,心中充满的不只是完成任务的轻松,更是对国产数据库技术体系一次深刻认知后的充实与兴奋。这不仅仅是一次考试,更是一次从理论到实践、从陌生到熟练的蜕变之旅。
一、体系的构建:不再是零散的知识点
在接触本次实训之前,我对数据库的理解可能更多停留在简单的CRUD操作和基础维护上。而这次实训像一根线,将散落的珍珠串成了完整的项链。
认知的起点:安装与初始化
实训从最基础的安装开始。通过命令行和图形化两种安装方式,我不仅学会了如何部署DM8,更理解了dmdba用户和dinstall用户组的设计初衷——权限分离与安全规范,这是企业级应用的基石。初始化实例时,对页大小、簇大小、大小写敏感、端口号等参数的配置,让我第一次真正思考这些参数对后续性能和运维产生的深远影响。
核心技能进阶:存储管理与对象创建
创建表空间、用户、授权这一套流程,巩固了我对数据库资源隔离和权限控制的理解。而分区表的实战则是本次实训的一大亮点。无论是按业务逻辑(ProdID)进行的范围分区,还是为了均匀散列数据的HASH分区,都让我深刻体会到分区技术对于管理海量数据、提升查询性能的巨大价值。配合dmfldr工具进行高效数据导入,一套完整的数据管理链路在我手中跑通,这种成就感无以言表。
#创建表空间
create tablespace DM01 datafile '/dm8/data/DM01.DBF' size 1024 autoextend on next 2;
create tablespace DM02 datafile '/dm8/data/DM02.DBF' size 1024 autoextend on next 2;
create tablespace DM03 datafile '/dm8/data/DM03.DBF' size 1024 autoextend on next 2;
create tablespace DM04 datafile '/dm8/data/DM04.DBF' size 1024 autoextend on next 2;
#创建范围分区
CREATE TABLE "T_test"
(
ID INT,
Name VARCHAR2(100),
Date DATE
)
PARTITION BY RANGE (ID)
(
PARTITION P1 VALUES LESS THAN (10) TABLESPACE DM01,
PARTITION P2 VALUES LESS THAN (20) TABLESPACE DM02,
PARTITION P3 VALUES LESS THAN (30) TABLESPACE DM03,
PARTITION P4 VALUES LESS THAN (MAXVALUE) TABLESPACE DM04
);
创建控制文件
options
(skip=1
errors=10
log='testdept.log'
character_code='UTF-8')
load data
infile '/opt/test.dat' str X '0a'
badfile 'testdept.bad'
into table "T_test"
fields ','
#执行数据导入
/dm8/dmdbms/bin/dmfldr USERID=用户/密码 CONTROL=\'/opt/test.ctl\' mode=\'IN\'
#创建HASH分区
CREATE TABLE T_HASH
(
HID INTEGER,
HDATE DATE,
HCONTENTS VARCHAR(40)
)
PARTITION BY HASH(HID)
PARTITIONS 10;
#插入测试数据并验证
INSERT INTO T_HASH
(ID, HDATE, HCONTENTS)
SELECT
ROWNUM,
TO_DATE(TO_CHAR(SYSDATE - 365, 'J') + TRUNC(DBMS_RANDOM.VALUE(0, 365)), 'J'),
LPAD('TEST', 20, '*')
FROM DUAL
CONNECT BY ROWNUM <= 100000;
COMMIT;
触及高级特性:外部表与审计
CREATE EXTERNAL TABLE让我看到了数据库与外部文件系统便捷交互的能力,为数据仓库和ETL流程提供了新思路。而审计功能的配置则让我眼前一亮。通过SP_AUDIT_OBJECT过程对特定表的UPDATE、DELETE、INSERT、CREATE操作进行审计,无论成功与否都记录在案,这为数据库的安全合规性提供了强有力的保障,这是以前在学习和使用中很少触及的“高级”领域。
#sysdba下授权给test
CREATE DIRECTORY ext_DIR as '/opt/';
GRANT READ,WRITE ON ext_DIR TO TEST;
#TEST下创建外部表
create EXTERNAL TABLE TEST.EMP
(
"WID" INT,
"WNAME" VARCHAR(50),
"WBIRTHDAY" DATE
)
from DATAFILE DEFAULT DIRECTORY ext_DIR LOCATION ('emp.txt')
parms (
fields DELIMITED by ',',
records 0x0a,
skip 1,
character_code 'UTF-8'
);
#使用SYSAUDITOR用户开启数据库审计
SELECT * FROM SYS.V$PARAMETER t WHERE name = 'ENABLE_AUDIT';
SP_SET_ENABLE_AUDIT(1);
SELECT * FROM SYS.V$PARAMETER t WHERE name = 'ENABLE_AUDIT';
#开启审计
SP_AUDIT_OBJECT('INSERT', 'NULL', 'TEST', 'EMP', 'ALL');
SP_AUDIT_OBJECT('INSERT', 'NULL', 'TEST', 'EMP', 'SUCCESSFUL');
SP_AUDIT_OBJECT('INSERT', 'NULL', 'TEST', 'EMP', 'FAIL');
二、运维的视角:备份、作业与优化
实训的后半部分,将我从一个开发者的视角,拉到了一个运维者的角色。
容灾的基石:备份与恢复
“备份重于一切”这句话在实训中得到了完美诠释。开启归档日志、进行完全备份,不仅仅是为了完成题目,更是构建数据库高可用性的第一步。我明白了只有开启了归档,才能实现基于时间点的恢复,才能为后面的数据守护打下基础。
#数据完全备份
cd /dm8/dmdbms/bin/
./disql SYSDBA/XXXXX@localhost:5236
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full';
#数据恢复
cd /dm8/dmdbms/bin/
./dmrman
(1)在目标库上还原
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/full';
(2)还原至指定目录(二选一):
RMAN> restore database to '/dm8/data/DAMENG' from backupset '/dm8/backup/full';
还原之后要更新数据库魔数:
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
#开启归档
自动化的魅力:作业调度
使用作业代理(Job Agent)创建定期备份(JOB_BAK)和清理旧备份(JOB_REMOVE)的任务,让我第一次在达梦数据库中体验到了自动化运维的便捷性。这极大地减少了DBA的重复性劳动,降低了因人为疏忽导致故障的风险。
性能调优的初探:参数与统计信息
调整BUFFER和DICT_BUF_SIZE等内存参数,并使用dbms_stats包收集统计信息,让我直观地感受到数据库性能调优是一个“牵一发而动全身”的精细活。优化不是盲目的,必须基于对系统运行状态的清晰认知。
#性能优化
(1)调整buffer
SELECT * FROM V$PARAMETER WHERE NAME = 'BUFFER';
-- 调整 BUFFER 大小为 800MB
ALTER SYSTEM SET 'BUFFER' = 800 SPFILE;
#导出收集统计信息
(1).表的统计信息
spool '/opt/test.txt'
dbms_stats.gather_table_stats('TEST','T_test',ESTIMATE_PERCENT=>100);
dbms_stats.table_stats_show('TEST','T_test');
spool off
(2).列的统计信息
spool '/opt/test.txt'
dbms_stats.gather_table_stats('TEST','T_test',ESTIMATE_PERCENT=>100, METHOD_OPT=>'FOR COLUMNS SIZE AUTO PRODID');
dbms_stats.column_stats_show('TEST','T_test','ID');
more
spool off
三、高可用的震撼:数据守护集群
如果说前面的内容是“基本功”,那么数据守护(Data Watch) 的搭建无疑是本次实训的“高光时刻”。这是最具挑战性也最让我收获最大的一部分。
从配置dmmal.ini(MAL系统)、dmarch.ini(归档)、dmwatcher.ini(守护进程)到dmmonitor.ini(监视器),我理解了达梦是如何通过守护进程(dmwatcher)、监视器(dmmonitor) 和MAL(Messaging Archive Log) 系统这三个核心组件来构建主备同步和自动故障切换的。
通过oguid的统一配置、主备库的mount状态启动、模式切换,最终看到在主库插入的数据,瞬间在备库可以查询到的那一刻,我真正感受到了高可用架构的魅力。将服务注册到系统,实现开机自启,更是让整个集群方案变得完整和产品化。这不仅仅是搭建了一套环境,更是在我脑海中建立起一套完整的容灾解决方案蓝图。
四、总结与展望
回顾整个DCP实训,我的收获是立体且多维的:
技能上,我系统掌握了达梦DM8从安装、配置、开发到运维、优化的全链路技能。
思想上,我建立了数据库安全、性能、高可用三位一体的整体架构思维。
信心上,通过亲手搭建出复杂的数据守护集群,我对驾驭国产大型数据库产品充满了信心。
这次实训让我看到,达梦数据库作为国产数据库的领军者,其产品功能的完备性、企业级特性的丰富性以及架构的健壮性,完全有能力承载核心业务系统的重任。
学习之路永无止境,DCP实训是一个完美的起点,而不是终点。接下来,我将继续探索达梦的读写分离、MPP集群、数据库安全等更深入的领域,期待能将所学真正应用到未来的项目实践中,为国产数据库的生态发展贡献自己的一份力量。
文章
阅读量
获赞