达梦数据库管理员每日数据库巡查清单
做为一名达梦数据库管理员,要总结和制定日常工作中数据库管理、监控的思路、方法和具体细节,每日对数据库进行巡查,可以及时发现存在问题。通过巡查工作清单,掌握达梦数据库的基本运行状况。依清单收集数据库运行系统环境及数据库各组件和逻辑单元信息进行分析,能够较好地防范可能出现的风险,数据库运行出现异常时能够尽快定位问题,快速解决常规数据库问题。
做为一名较强责任心的数据库管理员,每日应该完成以下工作清单:
- 1、系统运行环境监控
查看达梦数据库数据文件、归档日志、重做日志存放位置空间使用情况,即数据库数据文件所在磁盘的空间使用率。
df -h /dm8/data/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 25G 12G 14G 48% /
[root@DM8-Study ~]# du -h /dm8/data/DAMENG/*.*
检查操作系统CPU、内存、SWAP区、磁盘I/O配置状况
top -n 2 -d 2
top - 22:30:54 up 44 min, 4 users, load average: 0.04, 0.07, 0.11
Tasks: 268 total, 1 running, 267 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
KiB Mem : 1863012 total, 66976 free, 1466756 used, 329280 buff/cache
KiB Swap: 4194300 total, 3992316 free, 201984 used. 213232 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4442 root 20 0 162228 2404 1608 R 1.0 0.1 0:00.04 top
620 dmdba 20 0 1918508 230620 828 S 0.5 12.4 0:10.65 dmserver
643 root 20 0 324784 1816 1436 S 0.5 0.1 0:04.31 vmtoolsd
991 root 20 0 574304 7944 1100 S 0.5 0.4 0:00.72 tuned
2680 root 20 0 640080 7764 1696 S 0.5 0.4 0:04.51 vmtoolsd
还可以用mpstat -P ALL sar –P ALL 查看多核CPU
mpstat -P ALL
Linux 3.10.0-1127.el7.x86_64 (DM8-Study) 2020年11月19日 _x86_64_ (1 CPU)
22时34分10秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
22时34分10秒 all 1.36 0.22 1.74 1.55 0.00 0.06 0.00 0.00 0.00 95.06
22时34分10秒 0 1.36 0.22 1.74 1.55 0.00 0.06 0.00 0.00 0.00 95.06
查看内存使用情况
[root@DM8-Study ~]# free -mh
total used free shared buff/cache available
Mem: 1.8G 1.4G 65M 34M 321M 208M
Swap: 4.0G 197M 3.8G
磁盘IO情况
[root@DM8-Study ~]# iostat -x -k 1 3
Linux 3.10.0-1127.el7.x86_64 (DM8-Study) 2020年11月19日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.10 0.33 1.62 1.20 0.00 95.74
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.10 22.87 14.27 1.22 1116.91 132.53 161.36 0.10 6.53 6.33 8.92 2.06 3.19
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 1.03 0.00 0.00 98.97
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2.数据库运行状况监控
检查达梦实例进程是否都存在、状态是否正常
[
root@DM8-Study ~]# ps -ef |grep dmserver
dmdba 620 1 0 21:46 ? 00:00:15 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsole
root 4937 4142 0 22:52 pts/2 00:00:00 grep --color=auto dmserver
查看达梦数据库进程号
[root@DM8-Study ~]# ps -ef | grep dmserver | grep -v "grep" | awk '{print $2}'
620
查看达梦数据库进程下的线程
[root@DM8-Study ~]# ps -eLf | grep 620 | grep -v "grep"
[root@DM8-Study ~]# pstree -p 620
dmserver(620)─┬─{dmserver}(862)
├─{dmserver}(971)
├─{dmserver}(972)
├─{dmserver}(973)
├─{dmserver}(974)
├─{dmserver}(1131)
├─{dmserver}(1132)
├─{dmserver}(1133)
├─{dmserver}(1159)
├─{dmserver}(1160)
├─{dmserver}(1413)
├─{dmserver}(1414)
├─{dmserver}(1415)
├─{dmserver}(1416)
├─{dmserver}(1686)
├─{dmserver}(1729)
├─{dmserver}(1763)
├─{dmserver}(1769)
├─{dmserver}(1770)
├─{dmserver}(1771)
├─{dmserver}(1772)
├─{dmserver}(1773)
├─{dmserver}(1774)
├─{dmserver}(1775)
├─{dmserver}(1776)
├─{dmserver}(1777)
├─{dmserver}(1778)
├─{dmserver}(1779)
├─{dmserver}(1780)
├─{dmserver}(1781)
├─{dmserver}(1782)
├─{dmserver}(1783)
├─{dmserver}(1784)
├─{dmserver}(1785)
├─{dmserver}(1786)
├─{dmserver}(1787)
├─{dmserver}(1788)
├─{dmserver}(1789)
├─{dmserver}(1790)
├─{dmserver}(1791)
├─{dmserver}(1792)
├─{dmserver}(1793)
├─{dmserver}(1794)
├─{dmserver}(1795)
├─{dmserver}(1796)
├─{dmserver}(1797)
├─{dmserver}(1798)
├─{dmserver}(1799)
├─{dmserver}(1800)
├─{dmserver}(1801)
├─{dmserver}(1802)
├─{dmserver}(1829)
└─{dmserver}(1830)
在数据库内部查询状态
SQL> select name, instance_name, host_name, status$ from v$instance;
LINEID NAME INSTANCE_NAME HOST_NAME STATUS$
---------- -------- ------------- --------- -------
1 DMSERVER DMSERVER DM8-Study OPEN
used time: 1.162(ms). Execute id is 6.
SQL> select * from v$process;
各表空间状态是否正常
SQL> select tablespace_name, status from dba_tablespaces;
LINEID TABLESPACE_NAME STATUS
---------- --------------- -----------
1 SYSTEM 0
2 ROLL 0
3 TEMP 0
4 MAIN 0
5 HMAIN NULL
used time: 126.459(ms). Execute id is 9.
日志文件是否正常
SQL> select * from v$rlog;
SQL> select * from v$rlogfile;
LINEID GROUP_ID FILE_ID PATH
---------- ----------- ----------- -----------------------------
CLIENT_PATH
------------
CREATE_TIME
----------------------------------------------------------------------------------------------------
RLOG_SIZE MIN_EXEC_VER MIN_DCT_VER
-------------------- ------------ -----------
1 2 0 /dm8/data/DAMENG/DAMENG01.log
DAMENG01.log
2020-11-18 11:22:29.000000
268435456 V8.1.1.1 4
LINEID GROUP_ID FILE_ID PATH
---------- ----------- ----------- -----------------------------
CLIENT_PATH
------------
CREATE_TIME
----------------------------------------------------------------------------------------------------
RLOG_SIZE MIN_EXEC_VER MIN_DCT_VER
-------------------- ------------ -----------
2 2 1 /dm8/data/DAMENG/DAMENG02.log
DAMENG02.log
2020-11-18 11:22:29.000000
268435456 V8.1.1.1 4
used time: 0.893(ms). Execute id is 11.
SQL> select * from v$arch_file;
数据库性能监控
查询当前主要影响性能SQL语句
通过查询以下动态视图:
V$SQL_HISTORY,V$SQL_NODE_HISTORY,V$LONG_EXEC_SQLS,V$SYSTEM_LONG_EXEC_SQLS,V$PRE_RETURN_HISTORY,V$SORT_HISTORY,V$DMSQL_EXEC_TIME,可以了解执行SQL语句的具体情况,找出对性能影响最大的一些语句进行观察。
用户进程跟踪
SQL> select * from v$sessions;
LINEID SESS_ID SESS_SEQ
---------- -------------------- -----------
SQL_TEXT
----------------------------------------------------------
STATE N_STMT N_USED_STMT SEQ_NO CURR_SCH
------ ----------- ----------- ----------- --------
USER_NAME TRX_ID
--------- --------------------
CREATE_TIME
----------------------------------------------------------------------------------------------------
CLNT_TYPE TIME_ZONE CHK_CONS CHK_IDENT RDONLY INS_NULL
--------- --------- -------- --------- ------ --------
COMPILE_FLAG AUTO_CMT DDL_AUTOCMT RS_FOR_QRY CHK_NET
------------ -------- ----------- ---------- -------
ISO_LEVEL CLNT_HOST APPNAME CLNT_IP OSNAME
----------- --------- ------- ---------------- ------
CONN_TYPE VPOOLADDR RUN_STATUS MSG_STATUS
------------ -------------------- ---------- ----------
LAST_RECV_TIME
----------------------------------------------------------------------------------------------------
LAST_SEND_TIME
----------------------------------------------------------------------------------------------------
DCP_FLAG THRD_ID CONNECTED PORT_TYPE SRC_SITE
-------- ----------- ----------- ----------- -----------
MAL_ID CONCURRENT_FLAG CUR_LINENO
-------------------- --------------- -----------
CUR_MTDNAME CUR_SQLSTR CLNT_VER
----------- ---------- --------
1 140453953476216 4
select * from v$sessions;
ACTIVE 64 1 23 SYSDBA
SYSDBA 6593
2020-11-19 23:00:58.000000
SQL3 +08:00 N N N Y
N N Y N N
1 DM8-Study disql ::1 Linux
HOMOGENEOUS 140453953408592 RUNNING RECIEVE
2020-11-19 23:37:23.000000
2020-11-19 23:37:08.000000
N 5274 1 0 65535
NULL 0 NULL
NULL NULL 7.1.7.78
LINEID SESS_ID SESS_SEQ
---------- -------------------- -----------
SQL_TEXT
----------------------------------------------------------
STATE N_STMT N_USED_STMT SEQ_NO CURR_SCH
------ ----------- ----------- ----------- --------
USER_NAME TRX_ID
--------- --------------------
CREATE_TIME
----------------------------------------------------------------------------------------------------
CLNT_TYPE TIME_ZONE CHK_CONS CHK_IDENT RDONLY INS_NULL
--------- --------- -------- --------- ------ --------
COMPILE_FLAG AUTO_CMT DDL_AUTOCMT RS_FOR_QRY CHK_NET
------------ -------- ----------- ---------- -------
ISO_LEVEL CLNT_HOST APPNAME CLNT_IP OSNAME
----------- --------- ------- ---------------- ------
CONN_TYPE VPOOLADDR RUN_STATUS MSG_STATUS
------------ -------------------- ---------- ----------
LAST_RECV_TIME
----------------------------------------------------------------------------------------------------
LAST_SEND_TIME
----------------------------------------------------------------------------------------------------
DCP_FLAG THRD_ID CONNECTED PORT_TYPE SRC_SITE
-------- ----------- ----------- ----------- -----------
MAL_ID CONCURRENT_FLAG CUR_LINENO
-------------------- --------------- -----------
CUR_MTDNAME CUR_SQLSTR CLNT_VER
----------- ---------- --------
2 95433720 5
select /*+optimizer_version(70032)*/ SF_GET_EP_SEQNO(A.rowid),A.SEQ_NO,A.SESS_ID,A.TRX_ID,A.TOP_SQL_TEXT,A.SEC_SQL_TEXT,A.THRD_SQL_TEXT,A.START_TIME,A.TIME_USED,A.IS_OVER,A.EXEC_ID,A.VM,A.STKFRM,A.STK_LEVEL,A.CUR_SQL_NODE,B.USER_NAME,B.CLNT_IP,B.APPNAME FROM SYS.V$SQL_HISTORY A,SYS.V$SESSION_HISTORY B WHERE A.Sess_seq=B.SESS_seq and CAST(A.START_TIME AS DATETIME) >= '2020-11-19 23:24:01' and A.Top_sql_text not like '/***Manager***/%' and A.Top_sql_text not like '/***Monitor***/%' and A.Top_sql_text not like '/***Analyzer***/%' and A.Top_sql_text not like '/***DTS***/%' ORDER BY SF_GET_EP_SEQNO(A.rowid),A.Time_used DESC
IDLE 64 1 131 SYSDBA
SYSDBA 0
2020-11-19 23:23:49.000000
JDBC +08:00 N N N Y
N N Y N N
1 DM8-Study monitor ::ffff:127.0.0.1 Linux
HOMOGENEOUS 97737408 IDLE SEND
2020-11-19 23:37:16.000000
2020-11-19 23:37:16.000000
N 5727 1 0 65535
NULL 0 NULL
NULL NULL 8.1.1.78
used time: 1.318(ms). Execute id is 149.
检查数据库各日志文件中存在的错误信息及警告。
结语:上文中介绍是在命令行工具中快速监控数据库运行时的各个状态,适用于数据库运行在未开启图形化界面的服务器中,如果数据库运行环境中存在图形化界面,则可以利用达梦数据库的监控工具或DEM工具对数据库进行更加便捷和直观的监控,大家可以根据生产环境实际情况进行灵活选择。