作为达梦管理员,日常的运维工作至关重要。为了确保系统的稳定性和高效运行,我们需要遵循一系列严格的运维流程和规范。
达梦管理员的任务:
运维流程规范:
分区表是优化大型数据集查询性能的有效手段之一。合理设计分区结构可以显著减少I/O开销,简化数据管理和维护工作。
分区类型:
创建与管理:
CREATE TABLE ... PARTITION BY
语句指定分区方式和条件。CREATE TABLE t_partrangetab (
logtime datetime,
userid int,
username varchar(20),
areaid int,
optype int
) PARTITION BY RANGE(logtime) (
PARTITION p2022 VALUES LESS THAN('2023-01-01') TABLESPACE tbs01,
PARTITION p202301 VALUES LESS THAN('2023-02-01') TABLESPACE tbs02
);
ALTER TABLE ... ADD PARTITION
动态增加新的分区。ALTER TABLE t_partrangetab ADD PARTITION p202304 VALUES LESS THAN ('2023-05-01') TABLESPACE tbs;
ALTER TABLE ... MERGE PARTITIONS
将其合并为一个更大的分区。ALTER TABLE T_PARTRANGETAB MERGE PARTITIONS p202301, p202302 INTO PARTITION p202302;
ALTER TABLE ... SPLIT PARTITION
将其细分为多个更小的部分。ALTER TABLE T_PARTRANGETAB SPLIT PARTITION p202302 AT ('2023-02-15') INTO (PARTITION p20230115, PARTITION p202302);
临时表和外部表在特定场景下非常有用,能够有效提高开发效率和灵活性。
临时表:
CREATE TEMPORARY TABLE t_tem02 (id int, name VARCHAR(20)) ON COMMIT PRESERVE ROWS;
CREATE TEMPORARY TABLE t_tem01 (id int, name VARCHAR(20)) ON COMMIT DELETE ROWS;
外部表:
CREATE EXTERNAL TABLE t_extemp (
"EMPLOYEE_ID" INT,
"EMPLOYEE_NAME" VARCHAR(20),
...
) FROM DATAFILE DEFAULT DIRECTORY DIR_DATA LOCATION ('DMHR_EMPLOYEE.txt')
PARAMS (fields DELIMITED by '|', records 0x0a, skip 1, character_code 'UTF-8');
dept.ctl
:options (skip=1 errors=10 log='t_extdept.log' character_code='UTF-8') load data infile 'DMHR_DEPARTMENT.txt' str X '0d0a' badfile 't_extdept.bad' into table t_extdept fields '|'
CREATE EXTERNAL TABLE t_extdept (
"DEPARTMENT_ID" INT,
"DEPARTMENT_NAME" VARCHAR(30),
...
) FROM DEFAULT DIRECTORY DIR_DATA LOCATION ('dept.ctl');
索引是优化查询性能的关键技术之一。正确地创建和维护索引可以极大程度上改善系统的整体表现。
统计信息收集:
dbms_stats
包手动收集统计信息。可以通过 gather_table_stats
等函数指定采样率和目标对象。DBMS_STATS.GATHER_TABLE_STATS('DMTEST','T_TESTTAB', ESTIMATE_PERCENT=>100);
OPTIMIZER_DYNAMIC_SAMPLING
参数实现动态采样。取值范围为0~12,其中11表示由优化器自动确定采样率。创建索引:
CREATE INDEX ix_testtab_userid ON T_TESTTAB(userid) TABLESPACE TBSIDX ONLINE;
CREATE CLUSTER INDEX ix_test_cluster_id ON t_test(id);
CREATE UNIQUE INDEX ix_TESTTAB_username ON T_TESTTAB (username);
CREATE BITMAP INDEX ix_testtab_optype ON T_TESTTAB(optype) TABLESPACE TBSIDX;
CREATE INDEX ix_TESTTAB_funusername ON T_TESTTAB (upper(username));
CREATE INDEX ix_COMBINED ON T_TESTTAB (userid, username);
维护索引:
ALTER INDEX ... UNUSABLE
和 ALTER INDEX ... REBUILD
控制索引的状态。ALTER INDEX ... INVISIBLE
让优化器忽略它。V$OBJECT_USAGE
视图查看索引的使用频率。ALTER INDEX ix_TESTTAB_username MONITORING USAGE;
SELECT * FROM SYS."V$OBJECT_USAGE";
保障数据库的安全性是至关重要的。除了设置复杂的密码策略外,还需要启用强制访问控制机制,并定期审查审计日志以发现潜在风险。
用户资源限制:
CREATE PROFILE pro1 LIMIT PASSWORD_LIFE_TIME 180;
SELECT a.name username, c.name profilename
FROM sysobjects a, SYSUSERPROFILES b, sysobjects c
WHERE a.id = b.uid AND b.pid = c.id;
操作系统认证:
[root@localhost ~]# groupadd dmdba
[root@localhost ~]# usermod -G dmdba dmdba
dmusers
用户组。[root@localhost ~]# useradd dmtest
[root@localhost ~]# usermod -G dmusers dmtest
[dmtest@localhost bin]$ ./disql / as dmusers
数据库审计:
AUDIT TABLE
将审计所有 DDL 操作。SP_AUDIT_STMT('TABLE','NULL','ALL');
SP_AUDIT_OBJECT('INSERT','DMTEST','DMTEST','T_PARTRANGETAB','SUCCESSFUL');
随着业务的发展,有时需要将现有数据迁移到新的平台。DTS 工具提供了图形化的界面,使得整个过程变得简单直观。
迁移准备:
注意事项:
enable_monitor
和 pk_with_cluster
参数,以减少额外开销。当面对大量数据时,传统的插入方法显然不够高效。这时可以借助 dmfldr 工具实现批量装载。
控制文件编写:
[OPTIONS( skip=1 errors=10 log='t_extdept.log' character_code='UTF-8' )] LOAD DATA INFILE 'DMHR_DEPARTMENT.txt' str X '0d0a' BADFILE 't_extdept.bad' INTO TABLE t_dept FIELDS '|'
实际应用:
[dmdba@localhost dmfldr]$ dmfldr userid=dmtest/Dameng123 control=\'dept.ctl\' mode=\'IN\'
[dmdba@localhost dmfldr]$ dmfldr userid=dmtest/Dameng123 control=\'emp.ctl\' mode=\'OUT\'
感谢老师的耐心讲解!
文章
阅读量
获赞