oracle 用戶端版本較低導致 BAD SQL,oraclebad
環境:
生產系統是一個線上使用者10K的OLAP系統(11g的RAC雙節點),某一天使用者單位發現掃描程式很慢。
查看監控,Node1,IO很高,心跳流量也很高
立即著手分析:
1.本來生產用戶端全部連結Node1,此時發現部分用戶端做了Failover,Node2出現生產用戶端,很不正常;
2.在Node1上,kill 掉引起IO較高的session用戶端,通知使用者單位暫時不要開啟;
3.Kill Node2上的使用者,建議其重新開啟程式,異常消失。
分析原因:整個事件,Node1 的Bad Sql引起資源緊張,一些無法被Node1響應的使用者,Failover到Node2,此時DRM起作用了,掃描更慢了!
最終解決辦法:問題肯定出在用戶端,類比正常用戶端發現該用戶端為9i,隨後現場工程師升級用戶端到11g問題解決;
root case:用戶端程式封裝的SQL,在9i用戶端出現BAD SQL
事件總結:11g的企業版軟體最好用10g及以上的用戶端軟體去訪問!
安裝了oracle用戶端,安裝選擇類型是instantclientpl/sql開啟時,報錯如,問怎解決?
雖然你的不一定是64位的,但是可以參考這個:
使用PL/SQL Developer串連OracleX64版本:
•1. 下載32位Oracle InstantClient,並展開到某目錄,例如C:\instantclient-basic-nt-11.2.0.2.0;
•2. 將系統的tnsnames.ora拷貝到該目錄下;
•3. 在PLSQL Developer中設定Oracle_Home和OCI Library:
ToolsPreferencesOracleConnection:
Oracle_Home:C:\instantclient-basic-nt-11.2.0.2.0
OCI Library:C:\instantclient-basic-nt-11.2.0.2.0\oci.dll
•4. 在PLSQL Developer目錄下編輯如下bat檔案,替換其捷徑,啟動PLSQL Developer:
@echo off
set path=C:\instantclient-basic-nt-11.2.0.2.0
set ORACLE_HOME=C:\instantclient-basic-nt-11.2.0.2.0
set TNS_ADMIN=C:\instantclient-basic-nt-11.2.0.2.0
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
start plsqldev.exe
以下oracle用戶端工具哪個執法SQL語句更快一些
這些工具速度上都是一樣的,執行的效率、速度取決於你的代碼品質以及資料庫最佳化的情況。另外你要是在sqlplus上寫一個預存程序和在PL/SQL Dev上寫一個預存程序 你看那個快?
退一萬步講,即便sqlplus是oracle內建的資料庫連接工具,假定執行起來會略微快千分之幾秒,你要用多長時間來把這時間攢夠一天,然後休息啊?