千家信息网

oracle 查询执行慢的sql,使用V$SESSION_LONGOPS分析

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,/*OPNAME:指长时间执行的操作名.如:Table ScanTARGET:被操作的object_name. 如:tableA TARGET_DESC:描述target的内容 SOFAR:这个是需要
千家信息网最后更新 2024年11月26日oracle 查询执行慢的sql,使用V$SESSION_LONGOPS分析
/*OPNAME:指长时间执行的操作名.如:Table ScanTARGET:被操作的object_name. 如:tableA TARGET_DESC:描述target的内容 SOFAR:这个是需要着重去关注的,表示已要完成的工作数,如扫描了多少个块。TOTALWORK:指目标对象一共有多少数量(预计)。如块的数量。UNITS: START_TIME:进程的开始时间LAST_UPDATE_TIM:最后一次调用set_session_longops的时间TIME_REMAINING: 估计还需要多少时间完成,单位为秒ELAPSED_SECONDS:指从开始操作时间到最后更新时间CONTEXT:MESSAGE:对于操作的完整描述,包括进度和操作内容。 USERNAME:与v$session中的一样。SQL_ADDRESS:关联v$sqlSQL_HASH_VALUE:关联v$sqlQCSID:主要是并行查询一起使用。*/SELECT V.SQL_ID,       USERNAME,       SID,       OPNAME,       ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS "执行进度百分比",       TIME_REMAINING "估计剩余时间(秒)",       SQL_TEXT,       A.ELAPSED_SECONDS "执行时间(秒)",       A.START_TIME "执行开始时间",       A.TOTALWORK "总数(块block)",       A.SOFAR "已完成数(块block)",       A.SOFAR / A.ELAPSED_SECONDS "每秒扫描数(块block)"  FROM V$SESSION_LONGOPS A, V$SQL V WHERE 1 = 1      --AND TIME_REMAINING <> 0   AND SQL_ADDRESS = ADDRESS   AND SQL_HASH_VALUE = HASH_VALUE ORDER BY A.ELAPSED_SECONDS DESC; SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(                                       SQL_ID => '85tpcyjsu9mx6',                                        REPORT_LEVEL => 'ALL') AS REPORT  FROM DUAL;
0