亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

出處:墨天輪(https://www.modb.pro/db/7055,復制至瀏覽器,即可查看)

本文為原創文章,如有轉載,請標明出處從。

導讀:懷曉明先生(網名lastwinner),是具有多年數據庫開發與項目管理經驗的數據庫專家。曾獲得第一屆ITPUB較佳建議獎,在多個大型IT企業多年的工作歷練中,積累了豐富的系統架構設計經驗。合著作品有《劍破冰山——ORACLE開發藝術》、《Oracle DBA手記2》。

 

我們知道在平時的Oracle開發工作中我們有時候會遇到些BUG,我曾經碰到過的BUG大致分為三類:

1. 出現ora-00600,ora-03113,ora-07445等錯誤,導致程序無法執行

2. 執行計劃錯誤,導致很長時間才出結果

3. 由于執行計劃錯誤而給出了錯誤的結果

第一類很讓人無語,明明寫的代碼沒有任何問題,但Oracle就是報這幾個錯誤中的一個。這一般是Oracle的bug導致的,少部分是執行計劃錯誤導致的。一般在生產環境中碰到這樣的問題,只能認栽,通常只能換個方式來實現同樣的功能,要不然就得換開發方案,但這樣的開發成本就會很高了。如果在開發環境中碰到,還可以通過給數據庫打補丁來解決這類問題(如果Oracle發布了的話,不過在生產環境上,補丁不是隨便就可以打上的,一定要打的話,必須先做充分的測試)。

 

第二類很使人無奈,不過還好,為什么說“還好”?因為,這至少還能出來正確的結果嘛!這一般可以通過給數據庫打補丁、修改參數、添加強制提示等方法來解決這類問題。比如我曾經碰到過Oracle10.2.0.5在linux 64bit下出的full outer join的bug(類似于官方給出的bug2927071),一個full outerjoin出來結果需要兩三分鐘,而通過修改參數

后,改變了原先不正確的執行計劃,結果一秒內就嘩嘩嘩的出來了,經驗證結果也是正確的。

alter session set "_optimizer_native_full_outer_join"=force;

 

第三類是最悲催的,可以說直叫人生不如死。為什么這么說?第一類bug碰到的話,Oracle會報錯,起碼能提醒你此路不通;第二類bug碰到的話,起碼你本能的可以感覺到這里有問題,就算你沒意識到,結果也是正確的,對吧?但這第三類bug,我從9i到10g都碰到過,明明寫的SQL沒任何問題,但Oracle偏偏就給你錯誤的結果,還好每次都因細心發現了,及時調整了技術方案,才沒導致更大的問題發生。

 

碰到這些bug并不就意味著你很倒霉,事實上,換個角度看,首先要恭喜你,因為這說明你的sql水平已經達到了一個較高的程度了;倘若你能意識到不對勁,那說明你足夠敏銳;再若你還能找到解決辦法,那你就很厲害啦!

至于如何識別、解決開發過程中碰到的這類bug,這個話題比較大比較深,以后有機會我再和大家分享。但在這里我需要指明的是,其實很多最終結果不正確的程序,多數都是因為代碼本身的問題導致的,而因為Oracle Bug導致的問題只占極少的部分。

關于Oracle的優化,俗話說“樹挪死,人挪活”,咱不能因為一塊石頭堵在前面就非得把它炸開才能前行,繞過去往前走也是一種方法,對吧?

做系統優化其實也一樣。系統的性能提升是涉及到方方面面的,從網絡、操作系統、數據庫、應用服務器到程序,都有提升的空間。現在很多人都知道,最該優化的部分是攻城獅們開發的程序,比如拿數據庫的性能問題占比舉例,有可靠的統計數據指出,70%的問題出在攻城獅編寫的SQL上。而在這現象背后更根本的還在于,沒有可勝任數據庫開發工作的攻城獅!一旦出現系統性能問題,大家第一反應就是去找調優高手來優化SQL,久而久之,這就成了一個習慣。就好像平常不注意預防疾病,反正病了就找大夫治療,而你也許不知道在未來某一天,面對焦急的親屬,白衣天使也會無奈的搖搖頭,摘下口罩,嘆了口氣輕聲道:“我們已經盡力了,你們準備后事吧……”

 

很多公司,包括專門做IT的公司在內,的確是沒有意識到提高開發技術可以有效的提高系統性能,這個現象的本質關鍵是老板們沒意識到提高開發技術其實是可以降低開發和后期運營維護成本的,這筆賬算清楚了,老板自然愿意投入資源來提高工程師們的開發技能。通常不是技術出身的老板是意識不到的,這就需要技術管理者“曉之以理,動之以情”說服老板投入資源。當然,老板投入資源后,技術管理者必須hold得住,要將事情漂亮得完成,看到效果的老板自然就不會存疑了。

 

對于意識到了但是沒技術資源去做的情況,只能用其他資源來換取技術資源了,比如內部培養人才、找外包、從外部請和尚等等。

 

老外也有句諺語——“一天一個蘋果,你就不需要醫生了”,這說的也是預防為主。我們轉換下思路,如果提高了攻城獅們的開發水平,甚至是配備了專職的數據庫開發工程師,那寫出較高質量的SQL就不是什么難事兒。這樣就提前消除了多數性能方面的隱患,自然就降低了后期出現性能問題的概率,也免去了大量的請人做調優的成本,而提高攻城獅們的開發水平成本并不是特別高,何樂而不為?ISO-9000告訴我們,質量是生產出來的,不是檢測出來的,同樣,高質量的SQL應該是開發寫出來的,而不應總是通過DBA去調優出來。無論公司是否意識到、是否有資源去做,提高開發技術尤其是數據庫端的開發技術都是大勢所趨,不去迎面解決問題而裝鴕鳥是不可取的。

Oracle的開發和運維是一個系統性的工作。簡單說就是理論與實踐充分結合,只懂理論和只會實踐同樣是不可取的,要學會用理論指導實踐,通過實踐驗證理論,在實踐過程中不斷豐富理論知識,在理論指引下不斷的提高實踐能力。

 

就數據庫開發而言,最好具備如下能力與素質:

 

1. 掌握SQL基礎知識和數據庫基本理論,這會有助于你理解SQL是如何運作的,什么樣的SQL會跑得更快。這可以通過學習相關白皮書或者技術文檔獲得

2. 學會提問。提問是一門藝術,無論學什么都需要掌握這門藝術。

3. SQL中高級知識,這能讓SQL成為你的有力工具。這可以通過閱讀官方文檔,經常來itpub的數據庫開發版塊學習學習,來提高自己的水平。學習時不要想當然,就像trim并不等于rtrim+ltrim,認真讀文檔的人都知道。

4. 掌握至少一門相關的開發語言,JAVA、php等等都行,這有助于你從另一個視角來認識數據庫開發。

5.一定的數學能力,最好具備高中以上的數學知識。良好的數學素養可以為你帶來新的思路和方法,有助于提高開發能力,并能幫助你理解。

6.一定的科學素養。類似于“某月有5個周五、周六和周日,這種現象823年才出現一次”的論調,一眼就要能看穿是假的(或者會通過程序去證偽),要知道1582年10月5日—14日這十天是不存在的等等。

總之,捷徑是沒有的,腳踏實地才能學得真知,做到以上幾點,假以時日,成為高手并不是夢。

想了解更多關于數據庫、云技術的內容嗎?

快來關注“數據和云"、"云和恩墨"公眾號及"云和恩墨"官方網站,我們期待大家一同學習與進步!

開發中常見的Oracle三大故障與調優方法

 

墨天輪小程序”DBASK“在線問答,隨時解惑,歡迎了解和關注!

開發中常見的Oracle三大故障與調優方法

 


 

分享到:
標簽:Oracle
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定