我试图在oracle的每一行上执行一些计算后插入100万条记录。 15个小时过去了,它还在工作中。当我在这个表上写一个select查询时,它什么也没显示。我不知道每次插入的插入数据在哪里。
所以我的问题是,有没有办法检查在oracle表中执行长时间运行插入到目前为止插入的行数,谢谢。
答案 0 :(得分:8)
这取决于您是在SQL
还是PL/SQL
进行插入。使用PL/SQL
时,您可以通过自己的方式获取已处理的行数,但您当然可以编写自己的程序。
来SQL
,我可以想到两种方式:
大多数GUI based tools
对于长操作视图都有很好的图形表示。您可以查询 -
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;