1
我有一個非常簡單的SQL語句,它在Oracle 10g數據庫上執行。它的一些數據移動從一個模式到另一個:Oracle聲明掛起
CREATE TABLE TARGET.BIG_TABLE AS SELECT * FROM SOURCE.BIG_TABLE
WHERE (COLUMN1, COLUMN2) IN (SELECT COLUMN1, COLUMN2 FROM TARGET.HELP_TABLE);
有一個在TARGET.HELP_TABLE爲COLUMN1和COLUMN2的唯一約束。在SOURCE.BIG_TABLE中只有一個組合的主鍵(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5)。
該語句本身沒有問題,因爲它已經在類似的測試環境中進行了多次測試。
但是,在真實環境下,該聲明在大約3小時後沒有任何I/O活動。 8小時後,我們中止了執行。
這種行爲的原因是什麼?我能做些什麼來解決問題的根源?我絕對沒有線索!
它是否被未提交的事務鎖定? – 2014-10-06 08:07:19
理論上,這是不可能的。在執行語句之前,所有將事務寫入源模式的進程都將關閉。但是,是否有可能知道爲什麼聲明掛起或爲何等待? – user3783827 2014-10-06 08:16:35
查詢可能需要很長時間。您是否在生產環境中檢查了'EXPLAIN PLAN' [您的選擇查詢的結果](http://www.orafaq.com/wiki/Explain_Plan) – 2014-10-06 08:26:12