DBA手記 - optimizer_mode影響一個SQL語句是否可以執行
今天現場人員報告說:同樣的資料,同樣的SQL,在一個產品資料庫中可以執行,但是在測試資料庫中總是報錯。
檢查步驟如下:
1。在兩個資料庫中分別執行SQL,驗證是否如現場人員報告的情況,結果屬實。
2。檢視SQL語句,瞭解SQL的含義,此時發現該SQL編寫不太理想,改寫以後在兩個資料庫中都執行正常,不過這是其它的問題,此處不表
3。檢查在兩個庫中,該SQL的執行計劃是否相同,結果不同。
4。檢查兩個庫的版本是否相同,結果相同。
5。檢查兩個庫中的最佳化模式是否相同,結果不同,此時用alter session修改執行報錯的那個資料庫的最佳化模式,再次檢視執行計劃,發現已經相同了,再次執行SQL,發現可以正常執行。
6。對於此案例,到上面第5步已經可以結束了,如果第5步中發現最佳化模式相同,那麼這步就繼續可以檢視兩個庫中兩張表的統計資訊是否不同
7。如果第6步中還是相同,那麼繼續檢查其它最佳化相關的引數,比如optimizer_index_cost_adj等
8。如果還相同,那麼去查metalink,google,通常可以發現這是一個oracle的bug,確認自己的情況是否屬於這個bug。。。
上面是發現一個問題時候我個人的大致處理方法,也許可以給newbies一些幫助。
連結:http://blog.csdn.net/kamus/archive/2005/02/01/276535.aspx
連結:http://blog.csdn.net/kamus/archive/2005/02/01/276535.aspx
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23650854/viewspace-691627/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 同一個語句在plsql的sql視窗可以執行命令視窗不能執行SQL
- Linux判斷上一個語句是否執行成功Linux
- DBA常用SQL語句SQL
- sql語句批量執行SQL
- DBA常用SQL語句系列SQL
- 一條sql語句的執行過程SQL
- 查詢orcale執行的SQL語句記錄SQL
- sql語句如何執行的SQL
- SQL語句執行順序SQL
- 執行大的sql語句SQL
- toad執行sql語句SQL
- 一個 MySQL sql 語句執行順序帶來的 bugMySql
- DBA常用SQL語句[sql server] 2SQLServer
- SQL Server SQL語句執行順序SQLServer
- sqlserver dba常用的sql語句SQLServer
- 一條update SQL語句是如何執行的SQL
- 一條SQL更新語句是如何執行的SQL
- 一條SQL更新語句是如何執行的?SQL
- MyBatis 一次執行多條SQL語句MyBatisSQL
- 給隔壁的妹子講『一個SQL語句是如何執行的?』SQL
- 執行SQL語句查詢時出現一個SQLException異常SQLException
- mysql執行sql語句過程MySql
- Mybatis 動態執行SQL語句MyBatisSQL
- mysql的sql語句執行流程MySql
- sql語句執行緩慢分析SQL
- SQL 語句的執行順序SQL
- 後臺執行SQL語句(oracle)SQLOracle
- Hibernate 執行原始SQL語句SQL
- Oracle SQL語句執行步驟OracleSQL
- c# 實現定義一套中間SQL可以跨庫執行的SQL語句C#SQL
- 調整oracle的一個pga引數,讓一個sql語句執行飛快OracleSQL
- 查詢正在執行的sql語句及該語句執行的時間SQL
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- 一條 SQL 查詢語句是如何執行的?SQL
- 一條更新的SQL語句是如何執行的?SQL
- 一條SQL語句在MySQL中如何執行的MySql
- 記一個實用的sql查詢語句SQL
- postgresql dba常用sql查詢語句SQL