有时候我们在执行一个大的动作时,想知道进度怎么样,还需要多长时间来完成,而不是干等
这个时候我们就可以借助V$SESSION_LONGOPS视图,比较详细的记录了些sql语句运行信息
但只记录超过六秒钟的操作,前提条件是:
1) Oracle优化器使用 CBO;
2) 数据对象已经收集了统计信息;
3) 初始化参数 TIMED_STATISTICS 或是 SQL_TRACE parameter 设定为 TRUE 例子:
V$SESSION_LONGOPS列说明
l SID:Session标识
l SERIAL#:Session串号
l OPNAME:操作简要说明
l TARGET:操作运行所在的对象
l TARGET_DESC:目标对象说明
l SOFAR:至今为止完成的工作量
l TOTALWORK:总工作量
l UNITS:工作量单位
l START_TIME:操作开始时间
l LAST_UPDATE_TIME:统计项最后更新时间
l TIME_REMAINING:预计完成操作的剩余时间(秒)
l ELAPSED_SECONDS:从操作开始总花费时间(秒)
l CONTEXT:前后关系
l MESSAGE:统计项的完整描述
l USERNAME:执行操作的用户ID
l SQL_ADDRESS:用于连接查询的列
l SQL_HASH_VALUE:用于连接查询的列
l QCSID:
这个视图的来源大概是以下这个样子
这个视图的来源大致是这样的:
SELECT inst_id, ksulosno, ksulosrn, ksulopna, ksulotna, ksulotde, ksulosfr,
ksulotot, ksulouni,
TO_DATE (ksulostm, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'),
TO_DATE (ksulolut, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'),
DECODE (SIGN (ksulotot - ksulosfr),
-1, TO_NUMBER (NULL),
DECODE (ksulosfr,
0, TO_NUMBER (NULL),
ROUND (ksuloetm * ((ksulotot - ksulosfr) / ksulosfr))
)
),
ksuloetm, ksuloctx, ksulomsg, ksulounm, ksulosql, ksulosqh, ksuloqid
FROM x$ksulop;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7199859/viewspace-587009/ ,如需转载,请注明出处,否则将追究法律责任。