我从SQL Developer会话中运行了SQL Delete,并且由于存在大量记录,因此删除运行了很长时间。由于SQL Developer客户端存在一些无响应问题,我在SQL Developer窗口关闭时丢失了会话。
我没有DBA访问权限,我无法查询v $ session,v $ sqlarea等视图。但SQL仍在数据库上运行。一旦我插入一些记录,它就会删除它们。 在要求DBA终止此查询之前,如何查找/确认此查询仍在运行。
答案 0 :(得分:3)
“但SQL仍然在运行 数据库。我一插入一些 记录,删除它们。“
有点难以相信这一点。如果您的“SQL删除”是一个简单的DELETE FROM your_table
,那么它就不能删除您的新记录。 Oracle的读一致性模型不允许这样做。所以,要么你错了,要么你做了更复杂的事情。
如果您已发出长时间运行的DELETE,它可能会在视图V $ SESSION_LONGOPS中显示长时间操作。并非一切都包括在内。 Find out more。
select sid
, serial#
, opname
, sofar
, totalwork
, start_time
, last_update_time
, time_remaining
, elapsed_seconds
, sql_address
, sql_hash_value
, sql_id
from v$session_longops
where username = &your_username
and time_remaining != 0 ;
如果没有DBA访问权限,您将无法使用SQL_ADDRESS等信息来查找在V $ SQL中运行的精确SQL。但希望你不会有太多的点击。
答案 1 :(得分:2)
你应该去你的DBA,解释你的想法,并一起分析问题。
这部分问题让我感到困惑:
只要我插入一些记录,它就会删除它们。
您启动的删除事务无法删除在启动删除事务后插入的记录,这称为读取一致性。