2016-02-22 51 views
1

我有一個12.5 TOAD針對多個Oracle SID。在其中一個連接上,第一個連接使用4個即時並行從進程打開一個會話(在v $會話中顯示爲額外的會話,嚇跑了本地DBA)。然後每個下一個SQL編輯器添加另一個5.如何在Oracle中禁用TOAD並行從進程?

在其他SID上,這不會發生。

有沒有一種已知的方法來禁用TOAD? (到目前爲止沒有任何工作)

編輯#1:好吧,這原來不是關係到TOAD。針對該實例打開的每個會話(只是一個空白的conn)也會自動創建4個額外的slave進程,這些進程只會在gv $ session中爲自己的連接創建(這就是爲什麼它看起來像其他TOAD連接沒有它)。 我會保持這個線程打開一段時間,直到我找出交易與工作進程有什麼關係。

FINAL EDIT:最後發現,他們強制實例級別上的每個語句的多個線程,所以這與TOAD或客戶端無關。

+0

轉到Toad中的會話瀏覽器,看看每個會話正在做什麼。也許這是因爲可以禁用的「選項」。如果這是一個錯誤,我會說要檢查Toad支持。 – ruudvan

+0

看起來他們都運行各種TOAD查詢,3對gv $ session,一個空 - 沒有打開遊標,主要會話 - 從gv $ open_cursors中選擇 - 所有這些都是應用程序調用。 –

回答

0

要最大限度減少會話數量,請在「選項」的「Oracle事務處理」頁面上設置以下選項。

  1. 禁用「執行中的線程查詢」
  2. 啓用「執行蟾蜍會話腳本」
  3. 集「會話解釋計劃」到「主蟾蜍會議」
+0

禁用/啓用/設置爲主要Toad會話=>相同的行爲,並且僅對於一個SID,其他SID使用單個會話,而不是從屬。 –

+0

甚至更​​偉大的 - 來自其他用戶的TOAD會話不會出現這種情況。從我的,只有一個SID。 –

+0

我不知道還有什麼會造成這種情況。我會問。 –

1

這不是「真正的」並行。 Oracle對Real Application Cluster(RAC)上的GV $動態性能視圖使用小型並行查詢。 Oracle目前是所有數據駐留在每個節點上的共享體系結構。除了動態性能視圖外,因爲大多數活動只發生在特定節點上並在該節點上進行跟蹤。

此行爲只會發生在某些SID上,因爲如果數據庫是羣集,GV $只使用並行查詢。查詢可能會消耗並行進程,但每個節點只有一個,這些查詢通常不會佔用太多資源。

這些查詢通常不應該是一個問題。我能想到的幾種情況中,他們看起來像一個問題,但不會是根本的問題:

  1. PARALLEL_MAX_SERVERS太低。平行會議不應該是稀缺資源。 DBA對於失控並行性的擔憂是正確的。但是,當組織擔心這樣的少數平行會話時,通常是因爲他們通過縮小PARALLEL_MAX_SERVERS而造成了人爲的稀缺性。 parallel_max_servers的默認值通常是「PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 5」。 如果您的服務器是在本世紀購買的,則無需擔心幾個額外的會話。

  2. 錯誤的互連 RAC需要節點之間非常好的網絡連接。 100Mbps以太網不會削減它,節點將花費大量時間進行通信。

  3. 壞字典或固定對象統計信息。如果字典或固定對象統計信息從未收集過,數據字典查詢可能會很慢。如果這些查詢長時間運行,請嘗試收集統計信息:exec dbms_stats.gather_dictionary_stats;exec dbms_stats.gather_fixed_object_stats;

下面是使用並行查詢的GV $演示。這隻適用於RAC數據庫。

> explain plan for select * from v$process; 

Explained. 

> select * from table(dbms_xplan.display(format => 'basic')); 

PLAN_TABLE_OUTPUT 
-------------------------------------------------- 
Plan hash value: 4113158240 

------------------------------------ 
| Id | Operation  | Name | 
------------------------------------ 
| 0 | SELECT STATEMENT |   | 
| 1 | FIXED TABLE FULL| X$KSUPR | 
------------------------------------ 

8 rows selected. 

> explain plan for select * from gv$process; 

Explained. 

> select * from table(dbms_xplan.display(format => 'basic')); 

PLAN_TABLE_OUTPUT 
-------------------------------------------------- 
Plan hash value: 3900509504 

------------------------------------------- 
| Id | Operation   | Name  | 
------------------------------------------- 
| 0 | SELECT STATEMENT  |   | 
| 1 | PX COORDINATOR  |   | 
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 
| 3 | VIEW    | GV$PROCESS | 
| 4 |  FIXED TABLE FULL | X$KSUPR | 
------------------------------------------- 

11 rows selected. 

> 
+0

謝謝你的解釋。我終於發現,他們強迫每個語句的多個線程。所以這實際上是在實例級別設置的,而不是在TOAD或客戶端。 –

+0

@Access_granted你是什麼意思的「強制多個線程」? –

+0

我相信使用的參數parallel_degree_policy設置爲AUTO,在4個實例中,它們具有該SID,會引發4個從屬,如果我理解正確 –