本章节通过介绍 DM 数据库的性能监控工具 Monitor 达到数据库运维监控的目的,便于 DM 数据库管理员运维管理数据库的活动和性能情况,它允许管理员在本机或远程监视服务器的运行状况。
打开 DM 性能监视工具
安装完 DM 数据库后,在安装目录下有一个 Monitor 工具,可以对数据库进行性能监控。
- Windows 系统中直接打开 DM 性能监视工具即可。
- Linux 系统通过 dmdba 用户或 root 用户,使用命令行打开。
右键点击【连接】,在登录页面输入要连接的服务器用户密码等信息,数据库默认密码为 SYSDBA
如下图所示:
功能介绍
登录后首先展示的是数据库内存使用情况、CPU 使用情况、线程和会话数,其中刷新间隔可以自主设置,最大间隔为 60 秒,如下图所示:
性能监视
展开性能监视功能,这里针对数据库的性能监视主要展开以下几点:线程监视、会话监视、事务监视、SQL 监视、SQL 日志文件分析和 DM.INI
参数,如下图所示:
线程监视
该页面展示了数据库当前活跃的线程,内容包含 ID 号、线程名称、线程开始时间、运行状态和详细的说明,上面一排按钮可以选择筛查过滤历史线程。也可以将结果导出为文本文件和 XML 格式文件,如下图所示:
通过以下视图可以查询到相关线程信息:
V$LATCHES 记录当前正在等待的线程信息
V$THREADS 记录当前系统中活动线程的信息
V$WTHRD_HISTORY 记录自系统启动以来,所有活动过线程的相关历史信息
V$PROCESS 记录服务器进程信息
会话监控
页面中具体展示了数据库当前会话执行的详细信息,包括 SQL 语句和会话的连接状态等信息,如下图所示:
可以查看会话的执行 SQL 语句的信息,如下图所示:
在左侧的过滤条目下可以选择【过滤列名】和【过滤条件】等,过滤列名包含以下详细信息,若用户库中当前操作过多 SQL 也可快速查找到符合要求的 SQL 语句,如下图所示:
会话监控下另一页面会话统计中,可查看库中的 Active Session
,如下图所示:
会话历史中包含过去某段时间的会话详细信息,如下图所示:
在系统中直观的查看会话信息可用命令,如下图所示:
SELECT SESS_ID,SQL_TEXT,STATE,CREATE_TIME,CLNT_HOST FROM V$SESSIONS;
事务监控
事务监控中不仅可以查看当前事务的 ID 和状态等详细信息,右键还可以查看锁信息和历史命令等具体内容,如下图所示:
包括所有事务信息、当前事务可见的事务信息、事务锁信息(TID 锁、对象锁)、回滚段信息、事务等待信息;涉及的动态视图有 VTRX、VTRXWAIT、VTRX_VIEW、VLOCK、V$PURGE 等。
SQL 监视
SQL 监视页面会展示系统中执行的 SQL 语句,用户可以选择某条 SQL 语句的详细内容和执行情况并且能查看到 SQL 执行计划,如下图所示:
通过 V$SQL_HISTORY
视图可以查询执行 SQL 的历史记录信息;可以方便用户经常使用的记录进行保存。
通过 V$SQL_NODE_HISTORY
既可以查询 SQL 执行节点信息,包括 SQL 节点的类型、进入次数和使用时间等等;也可以查询所有执行的 SQL 节点执行情况,如哪些使用最频繁、耗时多少等。当 INI 参数 ENABLE_MONITOR
和 MONITOR_SQL_EXEC
都开启时,才会记录 SQL 执行节点信息。如果需要时间统计信息,还需要打开 MONITOR_TIME
。
通过 V$SQL_NODE_NAME
显示所有的 SQL 节点描述信息,包括 SQL 节点类型、名字和详细描述。
日志文件分析
页面中点击【浏览】选择【日志文件】,可以设定执行毫秒以上的 SQL 语句进行分析,也可以通过指定 SQL 内容进行更细致的筛选分析,展示 SQL 语句和详细执行计划,便于优化使用,如下图所示:
通过查询 V$RLOG
获取日志的总体信息。通过该视图可以了解系统当前日志事务号 LSN 的情况、归档日志情况、检查点的执行情况等。
通过查询 V$RLOGFILE
视图可以显示日志文件的具体信息。包括文件号、完整路径、文件的状态、文件大小等等。
DM.INI
性能工具还提供针对当前数据库的 DM.INI
文件详细内容进行查看,用户可以筛选想要查看的参数和详细描述,如下图所示:
资源监控
资源监控下内容包括内存池、缓冲池、日志包、SQL 缓存和字典缓存。
内存池
该页面可以查看到数据库功能模块运行时申请的详细内存信息,用户也可以根据需求右键筛选详细信息,如下图所示:
用户也可以通过查询 V$MEM_POOL
动态视图掌握 DM Server 的内存使用情况,如下图所示:
缓冲池
页面中展示了数据库缓冲区的情况,如下图所示:
用户也可以通过 V$SCP_CACHE
动态性能视图查看缓存池的详细信息,如下图所示:
SQL 缓存
SQL 缓存信息中包含在执行 SQL 语句过程中所需要的内存,包括计划、SQL 语句和结果集缓存的信息,可以查看缓存项的状态和时间戳,如下图所示:
在 V$SCP_CACHE
视图中 SQL_CNT
列表示 SQL 缓存总数。
字典缓存
首先可以查看到字典缓存区的具体信息,其中缓存对象的 ID、类型、状态等信息均有记录,如下图所示:
数据库中查看字典缓存的信息还可以通过查询 V$DICT_CACHE 视图,如下图所示:
存储监视
存储监视包括表空间、日志文件和数据库总体监视信息。
表空间
查看表空间存储时,可以看到库中的所有表空间信息(包括类型、状态、最大大小、文件数、总大小、空间大小和使用率),通过选定表空间可以看到表空间上的数据库文件信息,如下图所示:
通过以下命令可以查询表空间与数据文件对应关系,如下图所示:
SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;
若要检查表空间失效文件,可以通过 dm.ini
中的参数 FIL_CHECK_INTERVAL
的值指定 DM 系统检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。
也可以通过系统过程 SP_FILE_SYS_CHECK()
来手动的进行检查。系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。
日志文件
可以监控到数据库日志文件总体情况,大小、检查点等信息,通过选定日志文件会详细列出该日志文件的路径和创建时间等详细信息,如下图所示:
数据库
监控数据库总体状态、是否为归档模式、数据库版本等信息,如下图所示:
系统监视
系统监视包括运行时错误、死锁、捕获、大量数据返回结果集、数据库连接、数据库事件。
运行时错误
可以监控到用户对数据库执行操作的 SQL 语句和错误信息,如下图所示:
还可以选定错误右键查看运行错误的会话信息和事务信息,如下图所示:
死锁
当发生死锁时可以监控到发生死锁的 SQL 和会话等信息。这里我模拟一个简单的死锁,如下图所示:
通过监控页面可以查看死锁信息,且通过右键也可以查看造成死锁的会话和事务等信息,如下图所示:
通过 V$DEADLOCK_HISTORY
视图查询死锁的历史信息,如下图所示:
大量数据返回结果集
大量数据返回结果集页面展示了数据库中执行事务返回的结果集信息,包括执行 SQL 语句和会话事务信息,如下图所示:
通过查询 V$PRE_RETURN_HISTORY
视图也可以获取大量返回结果集的历史信息,如下图所示:
其他功能简介
性能监控工具还包含了针对资源、存储和系统的监控,用户平时也可以多多注意。并提供调优向导为数据库优化提供多方向的思路,包括存储、性能瓶颈和索引等多重向导。用户可以根据自身需求进行查看,如下图所示: