我的兩個客戶最近升級到Oracle 12c 12.1.0.2
。自從升級以來,我在使用具有外部聯接的視圖的查詢中經歷了顯着的性能下降。以下是一個簡單查詢的示例,該查詢在舊的Oracle 11g 11.2.0.2
數據庫上以秒爲單位運行,但在新的12c
數據庫上需要幾分鐘時間。更令人困惑的是,這個查詢在12c
數據庫之一上運行得相當快(但速度不是很快),但是完全沒有。在一個12c
數據庫上,性能非常糟糕,我開發的報告無法使用。外連接在Oracle 12c中查看的性能問題
我已經比較了11g
和兩個12c
數據庫之間的索引和系統參數,但沒有發現任何顯着差異。然而,Execution Plans
之間有區別。在11g
外部聯接表示爲VIEW PUSHED PREDICATE
,但在12c
上表示爲HASH JOIN
而沒有PUSHED PREDICATE
。
當我將提示/*+ NO_MERGE(pt) PUSH_PRED(pt) */
添加到12c
數據庫的查詢中時,性能在幾秒鐘內。
在我們的Crystal Reports
(至少我不這麼認爲,也有幾個報告)中不提供給SQL添加提示,所以我希望我們能夠找出爲什麼性能在一個12c數據庫上可以接受但不是另一方面。
我和我的團隊對於接下來要做什麼感到困惑,特別是爲什麼兩個12c
數據庫之間的響應會如此不同。我們已經在12c
中研究了幾篇關於性能下降的文章,但沒有任何文章特別適用於這個特定的問題。作爲補充說明,使用表格而不是視圖的查詢會在可接受的時間範圍內返回結果。任何見解或建議將不勝感激。
查詢:
select pi.*
, pt.*
from policyissuance_oasis pi
, policytransaction_oasis pt
where
pi.newTranKeyJoin = pt.polTranKeyJoin(+)
and pi.policyNumber = '1-H000133'
and pi.DateChars='08/10/2017 09:24:51' -- 2016 data
--and pi.DateChars = '09/26/2016 14:29:37' --2013 data
order by pi.followup_time
這些圖像是不可讀的。請使用簡單的文本格式**從問題中刪除位圖並追加查詢**。請將有問題的視圖**的定義附加爲文本,而不是位圖**。請附上解釋計劃,**作爲文本而不是位圖**。要以文本格式生成解釋計劃,請使用以下順序的步驟:'EXPLAIN PLAN FORM select .... your query' then'SELECT * FROM table(DBMS_XLAN.display)',然後將最後一個查詢**的結果複製爲一個文本**,只是粘貼到問題。 – krokodilko
感謝您的評論,@ krokodilko。只要我能找出正確的格式,我就會添加請求的文本對象!對不起,我是新來的! – lstebbins
你收集統計數據嗎?我知道這個問題聽起來很愚蠢,但只是爲了檢查... – are