注册
DM8日常运维高频 SQL 盘点
培训园地/ 文章详情 /

DM8日常运维高频 SQL 盘点

钟一 2025/11/03 251 1 0

前言

对于 DM8 数据库运维人员而言,日常工作常面临系统状态核查、故障应急响应、数据精准提取等多重需求,而高频 SQL 正是应对这些场景的 “核心利器”。本文总结了 DM8 运维中使用高频率的 SQL 语句,并解析其功能价值。掌握这些实用SQL,可助力运维人员,快速获取目标信息,应对基础的运维挑战,显著提升工作效率与应急处置能力。

相关查询和操作

  1. 查看数据库版本
select * from v$version;

image.png

在日常运维中,需要记录好数据库版本信息,以便于维护和管理。

  1. 查看数据库名和实例名
select * from v$database; --数据库名 select * from v$instance; --实例名

在多实例或者集群中,通过实例名和数据库名快速判断数据库信息。

  1. 查看表空间使用情况
SELECT a.tablespace_name, round(total/(1024*1024),2) Total_M, round(free/(1024*1024),2) Free_M, round((total - free)/(1024*1024),2) Used_M, round((total - free)/total, 4)*100 "Used_%" FROM (SELECT tablespace_name,SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name,SUM(bytes) total,MAXBYTES FROM dba_data_files GROUP BY tablespace_name,MAXBYTES) b WHERE a.tablespace_name = b.tablespace_name order by 5 desc;

image.png

在日常运维中,定期检查表空间的使用率能有效避免空间不足带来的问题。

  1. 查看数据库对象大小
SELECT OWNER AS "模式名", SEGMENT_NAME AS "对象名", SEGMENT_TYPE AS "对象类型", TABLESPACE_NAME AS "表空间", ROUND(BYTES / 1024 / 1024, 2) AS "大小(MB)" -- 转换为MB并保留两位小数 FROM DBA_SEGMENTS ORDER BY "大小(MB)" DESC;

image.png

在日常运维中,查看对象大小有助于判断是否需要对大表进行转储或者瘦身。

  1. 查看数据库的基本信息
select * from v$option;

image.png

通过该命令可以查看到数据库的一些基本信息,如实例名、IP、是否大小写、字符集等。

  1. 查看数据库许可过期时间
select * from v$license;

image.png

需要关注EXPIRED_DATE(过期时间)的值,在过期前需要联系达梦工程师更换许可。

  1. 查看当前连接的会话信息
SELECT SESS_ID AS "会话ID", USER_NAME AS "登录用户", CLNT_IP AS "客户端机器名", CLNT_TYPE AS "客户端程序", STATE AS "会话状态", CREATE_TIME AS "登录时间", SQL_TEXT AS "执行的SQL" FROM V$SESSIONS ORDER BY CREATE_TIME DESC;

image.png

在日常运维中,可以通过监控工具和数据库命令定期检查连接情况,有助于了解数据的负载情况并对数据库优化提供方向。

  1. 查看某个参数的值
SQL> show parameter buffer; SQL> select * from V$parameter where name ='BUFFER'; SQL> select * from v$dm_ini where PARA_NAME='BUFFER'; SQL> SF_GET_PARA_VALUE(2,'COMPATIBLE_MODE');

达梦数据库提供了多个方式查看参数的当前值。

  1. 查看阻塞
select * from v$lock where blocked=1;

在日常生产中,有阻塞会造成资源的占用,需要排查并解决。

  1. 查看慢SQL
SELECT * FROM ( SELECT sess_id, sql_text, datediff (ss, last_recv_time, SYSDATE) Y_EXETIME, SF_GET_SESSION_SQL (SESS_ID) fullsql, clnt_ip FROM V$SESSIONS WHERE STATE = 'ACTIVE' ) WHERE Y_EXETIME >= 2;

image.png

通过命令可以查看运行时间大于2s的会话,可以按照实际情况修改时间,用于判断数据库是否存在慢SQL。

  1. 杀会话
sp_close_session(326322120);
  1. 查看用户权限
select * from DBA_SYS_PRIVS where GRANTEE='TEST_JOB'; select * from DBA_TAB_PRIVS where GRANTEE='TEST_JOB'; select * from DBA_ROLE_PRIVS where GRANTEE='TEST_JOB';

image.png

在日常运维中通过查看用户的系统权限、对象权限和角色权限,方便管理用户,达到用户权限最小化。

  1. 查看每个会话的内存使用情况
SELECT M.CREATOR , S.USER_NAME, S.SQL_TEXT , S.CUR_SQLSTR, M.NAME MEM_NAME , M.TOTAL_SIZE/1024/1024 TOTAL_M, M.DATA_SIZE /1024/1024 DATA_SIZE_M, S.STATE, S.CLNT_IP, S.CLNT_VER, S.CLNT_HOST, S.APPNAME, S.OSNAME, S.RUN_STATUS, S.MSG_STATUS, S.CREATE_TIME, S.LAST_RECV_TIME, S.LAST_SEND_TIME, DATEDIFF(S, LAST_RECV_TIME, SYSDATE) EXECTIME_S, SYSDATE() INS_SYSDATE FROM V$MEM_POOL M, V$SESSIONS S WHERE M.CREATOR = S.THRD_ID ORDER BY TOTAL_M DESC;

image.png

在日常运维中,使用内存太大的SQL需要考虑优化,避免SQL在执行过程中占用大量系统资源。

  1. 开启数据库归档
alter database mount; alter database archivelog; alter database add archivelog 'dest=/dmarch ,TYPE=local,FILE_SIZE=2048,SPACE_LIMIT=102400'; alter database open;

数据库归档是备份的基础,建议磁盘空间充足的开启归档。

  1. 检查归档
select * from V$ARCH_STATUS;

image.png
16. 设置某个参数的值

alter system set'BUFFER'=500 spfile; or sp_set_para_value(2,'BUFFER',500);

达梦数据库提供了多种修改数据参数的方式

  1. 查看索引碎片率
SELECT OBJNAME AS OBJNAME, OBJTYPE AS OBJTYPE, TO_CHAR(FRAGPCT) AS FRAGPCT FROM (SELECT * FROM (SELECT OWNER||'.'||INDEX_NAME AS OBJNAME, 'INDEX/INDEX PART' AS OBJTYPE, ROUND(100.0*(1-INDEX_USED_PAGES(OWNER,INDEX_NAME)/1.0/INDEX_USED_SPACE(OWNER,INDEX_NAME)),2) FRAGPCT FROM DBA_INDEXES WHERE TABLESPACE_NAME NOT IN ('TEMP', 'ROLL', 'SYSTEM') AND OWNER NOT IN ('SYS', 'SYSAUDITOR', 'SYSSSO', 'SYSJOB', 'SCHEDULER') AND TEMPORARY='N' AND INDEX_TYPE != 'CLUSTER' AND INDEX_USED_SPACE(OWNER,INDEX_NAME)>(SELECT SUM(TOTAL_SIZE)* 0.0001 FROM V$DATAFILE) ORDER BY INDEX_USED_SPACE(OWNER,INDEX_NAME) DESC) ORDER BY FRAGPCT DESC LIMIT 10);

image.png

在日常运维中,需要关注索引的碎片情况,防止碎片率过高影响索引的效率

  1. 重建索引:
SP_REBUILD_INDEX('SYSDBA', 123456); SYSDBA为模式名字,123456为索引id

在日常运维中,可以使用重建索引来对索引的数据进行重组,使数据更加紧凑,并释放不需要的空间,从而提高访问效率和空间效率。

  1. 快速备份并恢复
全库备份: sql> backup database full backupset '/data/dmbak/'; bash> dmrman 1、数据库还原:restore database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/dmbak/full_bak'; 2、数据库恢复: 从归档:recover database '/data/dmdata/DAMENG/dm.ini' with archivedir '/data/dmarch'; or 从备份集:RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/full_bak'; --首选 3、更新:recover database '/data/dmdata/DAMENG/dm.ini' update db_magic;

在生产过程中,可能需要用到一些生产数据或者优化SQL,直接在生产环境上操作风险太高,可选通过快速备份然后还原到测试环境在进行操作

总结

在日常运维中,SQL优化、资源监控、锁检查、表瘦身、用户权限管理等工作尤为常见,需要熟悉这些操作的相关命令,便于应对日常运维的突发情况。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服