Oracle 11g实时SQL监控:
前面提到,在OracleDatabase11g中,v$session视图增加了一些新的字段,这其中包括SQL_EXEC_START和SQL_EXEC_ID,
这两个字段实际上代表了Oracle 11g的一个新特性:实时的SQL监控(RealTime SQL Monitoring)。
在Oracle 11g之前的版本,长时间运行的SQL可以通过监控v$session_longops来观察,当某个操作执行时间超过6秒,
就会被记录在v$session_longops 中,通常可以监控到全表扫描、全索引扫描、哈希联接、并行查询等操作;
而在Oracle 11g中,当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,如果消耗超过5秒的CPU或I/O时间,它也会被监控到。
监控数据被记录在v$sql_monitor视图中,当然也可以通过Oracle 11g新增的 package DBMS_MONITOR 来主动对SQL执行监控部署。
来看一下主要视图v$sql_monitor的结构:
Name Type NullableDefaultComments————————- ————– ——– ——- ——–
KEY NUMBERY
STATUSVARCHAR2(19) YUSER# NUMBERY
USERNAMEVARCHAR2(30) Y
MODULEVARCHAR2(64) Y
ACTIONVARCHAR2(64) Y
SERVICE_NAMEVARCHAR2(64) Y
CLIENT_IDENTIFIERVARCHAR2(64) Y
CLIENT_INFOVARCHAR2(64) Y
PROGRAMVARCHAR2(48) Y
PLSQL_ENTRY_OBJECT_IDNUMBERY
PLSQL_ENTRY_SUBPROGRAM_IDNUMBERY
PLSQL_OBJECT_IDNUMBERY
PLSQL_SUBPROGRAM_IDNUMBERY
FIRST_REFRESH_TIME DATE Y
LAST_REFRESH_TIME DATE Y
REFRESH_COUNTNUMBERY
SIDNUMBERY
PROCESS_NAMEVARCHAR2(5) Y
SQL_IDVARCHAR2(13) Y
SQL_TEXTVARCHAR2(2000) Y
IS_FULL_SQLTEXTVARCHAR2(1) Y
SQL_EXEC_START DATE Y
SQL_EXEC_IDNUMBERY
SQL_PLAN_HASH_VALUENUMBERY
EXACT_MATCHING_SIGNATURENUMBERY
FORCE_MATCHING_SIGNATURENUMBERY
SQL_CHILD_ADDRESSRAW(8) Y
SESSION_SERIAL#NUMBERY
<