格式化后的结果:
bd_jobmngfil where
pk_jobmngfil in ( select pk from
DBCache_bd_jobmngfil ) < / SQL >
<数据库连接id>5623780数据库连接id> <数据源>njpz数据源>
<执行状态>执行完毕执行状态> <执行耗时>3执行耗时> <读取记录数>0读取记录数>
? 调式模式
一个线程如果是调试状态,则这个线程的所有的数据库操作都会将线程信息映射到数据库,大部分情况默认即可。
? 全局调试开:除服务线程外的所有的线程默认都是调试模式; ? 全局调试关:所有的线程都不是调试模式.
? 选择调试用户:将选择的用户的远程调用设置为调试模式,此时全局模式自动为关闭状
态.
? 取消用户调试:取消用户调试模式.
? 服务线程调试开:在全局模式为开的情况下,服务线程处于调试状态. ? 服务线程调试关:服务线程设置为非调试状态.
? 汇总显示
将当前视图的所有线程信息显示在一个对话框内。 ? 显示过滤
设置当前视图的显示过滤条件,如图:
图5-3显示过滤的设置
注意,显示服务指的是是否显示后台服务(不同于远程调用)。 ? 垃圾线程
垃圾线程是指在服务器端运行的对客户没有意义的线程。比如客户正在做一个查询,但
没等查询出 结果就直接关掉IE, 此时的线程就是垃圾线程。可以通过垃圾线程这个功能将垃圾线程查出来,进一步可以kill掉此线程。 ? 联查数据库
如果线程是DEBUG模式,则可以穿透到数据库端看这个线程在数据库执行什么事件,比如执行什么SQL,这个SQL为什么慢,进一步可以查看锁或者执行计划等信息。 ? 联查操作员
联查所选线程的操作员的详细信息,比如电话号码,邮件等等,可以直接与这个操作员联系。 ? kill
杀掉所选线程,但这个线程必须满足如下条件: ? 线程是DEBUG模式; ? 该线程正在执行SQL。 ? 联查业务
联查当前线程打开哪些业务节点,方便业务方面的定位。 ? 单个线程
右键单个线程仅仅针对这个线程的对话框,这个对话框聚集了这个线程相关的所有信息,可以随时刷新这个线程。
图5-4单个线程
第六章:数据库监控
图6-1数据库监控
功能概述
? 提供一组数据库健康检查的服务,当发现数据库有性能问题时,发送快照或者报警消
息;
? 提供客户端可以调用的数据库操作方法; ? 预置了监控脚本。
参数
? DB_RUNTIMECHECK_DURATION
数据库健康检查时间间隔,单位为秒,-1不监控,只是供客户端操纵,检查失败会发送快照消息。默认为10秒。 ? HEALTH_RUNTIME_CHECK_DB__SQL_X
进行健康检查时执行的脚本,个数最大为4个,检查失败后会发送快照消息。数据库健康检查目前只是支持ORACLE.如果是RAC环境,则将v$session 改为gv$session
默认HEALTH_RUNTIME_CHECK_DB__SQL_1=select sid,serial#,client_identifier,machine from v$session where username=upper('[user]') and status='ACTIVE' and last_call_et>60 order by last_call_et desc ? DB_DUMP_SQL_X
生成数据库快照时的执行脚本,个数最大为8个,如果是RAC环境,需要将脚本中的视图转为GV视图,要注意测试一下这些脚本的效率! 默认为DB_DUMP_SQL_1==select t.*,'dba_waiters' tablename from dba_waiters t; DB_DUMP_SQL_2=select s.client_identifier, s.sid, s.serial#,SQL.SQL_fulltext, s.last_call_et, s.event, SQL.SQL_ID, child_number,s.SQL_hash_value from v$session s, v$SQL SQL where s.SQL_address = SQL.ADDRESS and s.username = upper('[user]') and s.status = 'ACTIVE' and s.last_call_et>10 order by sid
DB_DUMP_SQL_3=select * from (select hash_value||'***'||rpad('|'||substr(lpad(' ',1*(depth-1))||operation||decode(options, null,'',' '||options), 1, 32), 33, ' ')||'|'|| rpad(decode(id, 0, '----- '||to_char(hash_value)||' -----' ,
substr(decode(substr(object_name, 1, 7), 'SYS_LE_', null, object_name) ||' ',1, 20)), 21, ' ')||'|'|| lpad(decode(cardinality,null,' ', decode(sign(cardinality-1000), -1, cardinality||' ',
decode(sign(cardinality-1000000), -1, trunc(cardinality/1000)||'K', decode(sign(cardinality-1000000000), -1, trunc(cardinality/1000000)||'M', trunc(cardinality/1000000000)||'G')))), 7, ' ') || '|' || lpad(decode(bytes,null,' ', decode(sign(bytes-1024), -1, bytes||' ', decode(sign(bytes-1048576), -1, trunc(bytes/1024)||'K', decode(sign(bytes-1073741824), -1,
trunc(bytes/1048576)||'M', trunc(bytes/1073741824)||'G')))), 6, ' ') || '|' || lpad(decode(cost,null,' ', decode(sign(cost-10000000), -1, cost||' ', decode(sign(cost-1000000000), -1, trunc(cost/1000000)||'M',
trunc(cost/1000000000)||'G'))), 8, ' ') || '|' as \where hash_value in (select s.SQL_hash_value from v$session s where s.username = upper('[user]') and s.status = 'ACTIVE' and s.last_call_et>10 )) 进行健康检查的脚本,检查失败后会发送WARNING消息。