2010-08-02 131 views
0

我從SQL Developer會話中運行SQL刪除,並且由於有大量記錄,刪除運行很長時間。由於SQL Developer客戶端存在一些Not Responding問題,因爲SQL Developer窗口關閉,所以我丟失了會話。如何查找在oracle中的表上運行的查詢

我沒有DBA訪問權限,我無法查詢像v $ session,v $ sqlarea等視圖,但SQL仍在數據庫上運行。只要我插入一些記錄,它會刪除它們。 如何在查詢DBA之前查詢/確認此查詢仍在運行?

回答

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。但希望你不會有太多的點擊。

2

你應該去你的DBA,解釋你的想法正在發生,並一起分析問題。當我插入一些記錄,它會刪除它們

你的問題的這部分讓我爲難。

您啓動的刪除事務無法刪除您在啓動刪除事務後插入的記錄,這稱爲讀取一致性。