在PL/SQL中,可以使用以下方法來查看正在運行的進程:
DECLARE
v_ses_status VARCHAR2(64);
v_opname VARCHAR2(64);
v_target NUMBER;
v_sofar NUMBER;
v_totalwork NUMBER;
v_elapsed_time NUMBER;
v_est_time NUMBER;
BEGIN
DBMS_APPLICATION_INFO.READ_SESSION_INFO(v_ses_status, v_opname, v_target,
v_sofar, v_totalwork, v_elapsed_time);
IF v_ses_status = 'ACTIVE' THEN
DBMS_OUTPUT.PUT_LINE('操作名稱:' || v_opname);
DBMS_OUTPUT.PUT_LINE('目標 :' || v_target);
DBMS_OUTPUT.PUT_LINE('已完成 :' || v_sofar);
DBMS_OUTPUT.PUT_LINE('總工作量 :' || v_totalwork);
DBMS_OUTPUT.PUT_LINE('已用時間 :' || v_elapsed_time);
v_est_time := v_elapsed_time * (v_totalwork / v_sofar);
DBMS_OUTPUT.PUT_LINE('估計剩余時間 :' || v_est_time);
ELSE
DBMS_OUTPUT.PUT_LINE('沒有正在運行的進程。');
END IF;
END;
/
SELECT sid, serial#, opname, target, sofar, totalwork, elapsed_seconds
FROM v$session_longops
WHERE sofar < totalwork;
以上兩種方法都可以用來查看正在運行的進程,根據具體需求選擇合適的方法。