2011-05-17 113 views
2

我正在寫一個相當大的查詢,我有2個表,內連接和15個表左外加入。當我添加16時,我得到ORA-03113:通訊通道上的文件結束。如果我刪除一個表來添加新的表,查詢工作正常。Oracle中可以加入的表的數量是否有限制?

該查詢對SQL Server運行正常,它只是似乎在掙扎的Oracle。

+2

您可能會考慮在http://dba.stackexchange.com/ – Gabe 2011-05-17 07:06:31

+0

處提問您的問題。Oracle絕對沒有問題,只能連接17個表。你是否在使用任何可能觸發ORA-600的奇特數據類型?或者新表中是否存在任何塊級別的損壞? – Gaius 2011-05-17 09:26:30

回答

7

ORA-3113錯誤,當客戶端之間的連接並且數據庫意外中斷。這兩個主要原因是:

  1. 發生網絡問題。
  2. 處理您的請求的服務器進程已被終止

如果你能可靠地產生ORA-3113與語句,你是在第二種情況下,最有可能從Oracle的錯誤。當Oracle進程意外死機時,它會在USER_DUMP_DEST中留下一個跟蹤文件(在SQL * Plus show parameter user_dump_dest中)。使用編輯器打開跟蹤文件並查找其他更重要的錯誤消息(搜索ORA-)。

很可能你會發現像ORA-7445或ORA-600這樣的服務器錯誤。在這種情況下,您將需要打開Oracle支持note ID 153788.1以進一步確定問題及其解決方案。

2

我也遇到過這樣的問題,它們與Oracle中的錯誤有關。 最近我還沒有這些,可能是由於僱傭的DBA將很多補丁應用到我們的數據庫。

由於連接了15個表,因此不會發生此問題。我已經構建了更多的查詢。我相信我寫的最大的查詢約爲450行,以許多不同的方式連接至少50個表格。

有時它可以以不同方式編寫查詢。你可能會發布你的查詢?我可能會認識到某種模式也會給我帶來麻煩,並提出一個替代方案。

我想補充一點,查詢的運行時間幾乎不是原因。我看到查詢運行幾分鐘沒有任何問題,而其他人在幾秒鐘內就發出了這個問題。

2

Oracle的各種限制可在其數據庫文檔的Appendix A中找到。我找不到任何專門針對查詢中允許的連接數量,但由於在查詢中允許多達255個子查詢,我不認爲16個左連接沒有超出其能力。 編輯WHERE子句中允許有255個子查詢。顯然,它的FROM子句中的unlimited

但是,你所列出的錯誤信息會傾向於認爲它是查詢的實際總長度:

上的SQL語句可以持續多久的限制取決於在許多因素上,包括數據庫配置,磁盤空間和內存

1

ORA-03113意味着您的客戶端應用程序與Oracle影子進程失去了通信。所以你可能會先嚐試一個不同的客戶端工具。

ORA-03113也會在Oracle可執行文件被終止或崩潰並且客戶端連接沒有按順序關閉時出現。之後你沒有提到你必須重新啓動Oracle,所以我認爲它與客戶端或網絡相關。否則,你就必須檢查日誌文件alert.ora等等

請放心,甲骨文處理15+表相當不錯......遇到

相關問題