我正在尝试在Oracle上对每一行进行计算后插入100万条记录。已经过去了15个小时,插入仍在进行中。当我在此表上编写一个查询时,它什么也不显示。我不知道我的插入数据去哪里了。
所以我的问题是,在Oracle表中执行长时间运行的插入时是否有任何方法检查到目前为止插入了多少行记录,谢谢。
SQL
还是PL/SQL
中进行插入。在使用PL/SQL
时,您有自己的方法来获取已处理的行数,当然也可以编写自己的程序。SQL
,我可以想到两种方法:
GUI的工具
都会有漂亮的图形表示长时间操作视图。您可以查询 -SELECT ROUND(SOFAR*21411/TOTALWORK)
FROM V$SESSION_LONGOPS
WHERE username = '<username>'
AND TIME_REMAINING > 0
V$TRANSACTION
视图可以告诉您是否仍有任何事务未完成。如果您的 INSERT
完成并发出 COMMIT
,则该事务将完成。您可以使用 join
将其与 v$session
结合起来。您可以查询 -
SELECT ....
from v$transaction t
inner join v$session s
ON t.addr = s.taddr;