Sql-Server
Oracle 12c 客戶端到 10g 伺服器(OPENQUERY)
**場景:**我們目前有一個 SQL 2008 R2 伺服器(帶有 Oracle 10g 客戶端)使用 OPENQUERY 從 Oracle 10g 數據庫返回數據。
問題:我們想升級到 SQL Server 2014 SP1(帶有 Oracle 12c 客戶端)並且仍然從 Oracle 10g 伺服器中提取數據。我們已經對使用 OPENQUERY 返回數據進行了一些測試,結果並不令人滿意。一個簡單的 select * from a table 從 9 秒縮短到 54 秒!
**測試:**我們創建了一個測試 SQL Server 2008 R2 伺服器,但這次將 Oracle 12c 客戶端放在上面。這次 select * 查詢執行了 26 秒,但仍然比原始伺服器的 9 長得多。
**問題:**會不會有新伺服器上沒有設置的設置會影響速度這麼大?如果是這樣,有人有什麼建議嗎?
注意:我相信使用 12c 客戶端連接到 10g 伺服器是否支持正確?
提前致謝。
因此,出於某種原因,設置處理器親和性會產生重大影響。解決此問題的步驟如下。
- 使用 SSMS,轉到實例屬性,選擇“處理器”頁面
- 您會注意到“自動設置所有處理器的處理器關聯遮罩”和“自動設置所有處理器的 I/O 關聯遮罩”都將預設選中
- 取消選中這兩個設置
- 然後在下面的網格中為所有處理器複選框選擇“處理器關聯”(不要檢查 I/O 關聯)並測試查詢。
- 如果問題仍然存在,請重新啟動 SQL 服務並再次測試查詢
它解決了我們在 SQL Server 2014 上使用 Oracle 查詢時遇到的速度問題。我們還發現,如果沒有SP1 ,它們會執行得更快
希望這可以幫助
正如 Oracle 支持說明“不同 Oracle 版本的客戶端/伺服器互操作性支持矩陣”(文件 ID 207303.1),Oracle 客戶端 12.1 不支持與 Oracle DB 伺服器 10.1 及更低版本的連接。
仍然支持與 Oracle DB 10.2 的連接,但不推薦。
推薦的選項是使用 Oracle 10.2 客戶端。