劍破冰山—Oracle開發藝術 前言

bq_wang發表於2010-11-10
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 前言

 

長久以來,Oracle管理類的書籍遍地開花,並湧現出了一批優秀的實戰作品,但在Oracle開發方面,卻多數都是基礎性的語法書籍,很少有較為深入的實戰性的作品問世。久而久之,大多數人認為Oracle開發就是selectinsert之類的DML語句最多再有點集合操作外加觸發器、函式之類的儲存過程,但這就好像冰山一樣,粗略的一看,只是看到冰山露出水面的尖角而已。而我們知道,冰山在水面下的部分,遠比其水面上的部分要巨大得多。要想探究水面下的冰山,其中之一的方法就是分而治之深入研究,跟隨七位有多年豐富Oracle開發經驗的作者的指引,欣賞他們各自的拿手好戲,學習他們的思路與方法,破開冰山深入其中,從而提升自己的Oracle開發水平。

 

本書是一本透過講解Oracle資料庫開發案例來說明Oracle資料庫功能特性以及程式設計思路和設計方法的書籍。透過對每個案例的詳細分析和講解,使讀者瞭解對同一類開發任務應如何做並能夠領會為何這麼做,達到融會貫通的目的。

 

本書主要面向中、高階使用者,所以讀者最好具有一定的Oracle資料庫使用基礎和程式設計基礎(例如,熟悉基本SQL語句和任何一種過程語言),最好有一定的程式設計經驗。但初級使用者也能從中學到很多有用的東西,包括設計思想和技巧等。透過本書的學習,相信讀者的Oracle開發水平會上一個新的臺階。

 

本書的案例內容涉及面比較廣泛,包括程式設計規範、表結構設計、表壓縮、分析函式以及高階查詢,從常規資料處理的設計到各類行列轉換技巧,從Oracle的各種實用工具的用法到問題診斷、最佳化等步驟都進行了講解。另外,還針對Oracle某些容易錯的陷阱作了介紹,並提出了相應的解決辦法,對某些操作提出了提高效率的措施並進行了驗證。

 

在眾多內容中,本書也有所側重,力求將作者理解最深入的部分介紹給讀者。例如動態SQL,PL/SQL塊的使用、影響執行計劃的因素、減少日誌生成以及並行技術等。選擇這些作為側重點的原因有4個方面:第一,目前市面上類似書籍對這些方面的內容涉及不多,而且不夠深入;第二,這些內容在通常的程式設計中使用非常頻繁;第三,這些內容能使讀者更加了解Oracle系統的工作機制;第四,消除很多讀者的認識誤區,例如,認為Oracle資料庫的SQL只是在資料查詢方面很強大,並因此將SQL僅僅定位在查詢語言上。事實上,透過閱讀本書,讀者將會發現 OracleSQL功能是如此強大。在開發中,很多過去必須依靠過程語言實現的功能,比如迴圈、行間運算,透過分析函式、遞迴子查詢等,SQL基本上都能實現。而且,利用SQL能使開發工作事半功倍,極大地提高開發效率和效率。

 

本書精選了10多個有獨特的設計思想和編寫技巧的案例來進行分析講解。出版社網站提供包含所有案例的源程式下載,讀者可複製這些程式碼到自己的系統中,隨時檢視程式的執行結果,以加深對程式碼的理解。

 

我們7Oracle技術專家來自北京、加拿大、上海、福建、海南、河北等地,在電信、製造、統計、航空、金融、證券等行業工作多年,工作領域包括專案管理、系統架構、資料庫、資料倉儲和資料探勘等。

 

本書共分20章。

蘇旭暉(newkid)是一名定居境外的資深程式設計師,也是ITPUB上最為活躍的熱心網友之一,非常關注國內Oracle資料庫領域,在百忙之際還為我們送來了大禮:第18章“11gR2的新特性:遞迴子查詢”,讓讀者有機會使用Oracle提供的最新的技術開發專案。他更認真稽核了我們每個人的文章,指出了很多錯誤和不完善的地方,為本書的完成發揮了重要的作用。

王保強(bq_wang)編著了第1章、第10章、第11章和第20章。丁俊(dingjun123)編著了第4章、第5章、第6章和第7章。梁敬彬(wabjtam123)編著了第2章、第3章、第13章、第14章、第15章、第16章和第17章。懷曉明(lastwinner)編著了第12章。賈書民編著了第7章。盧濤(〇〇)編著了第8章、第19章,並對第2章、第7章的部分內容作了補充。

各章的主要內容如下:

 

1章“大話資料庫程式設計規範”透過風趣的語言講解了Oracle開發過程中的書寫規範、命名規範、變數命名、註釋規範、語法規範、指令碼規範的一些規則和建議。

2“Oracle開發常用工具及使用“AWR工具與效能最佳化一節描述了AWR的基本功能和使用步驟,並透過幾個經典案例的演示讓讀者加深了印象,同時證實該工具的強大。“SQL_TRACE/10046事件一節描述瞭如何透過該工具瞭解SQL的解析過程、執行計劃、繫結變數、遞迴呼叫等詳細資訊。最後透過系列10046事件跟蹤的成功案例來闡述該如何一步一步開啟各扇SQL困惑大門。計時和剖析工具一節主要介紹了利用DBMS_PROFILER包分析PL/SQL程式碼的方法和步驟,並根據剖析結果對程式碼進行精細地調整。

3探索MERGE方法介紹了MERGE存在的原因、具備的特性及那些注意點,透過例項講述了MERGE用於複雜更新時的優勢所在,希望讀者能記住這些經典的方法,給自己的專案開發帶來便利。

4章 神秘的NULL和令人討厭的CHAR分兩部分,第1部分透過大量的例項分析NULL的理論和使用,使讀者對NULL瞭然於胸,從而更好地使用NULL。第2部分透過對CHAR型別多角度的分析,講述特殊的字元型別CHAR的使用和注意點。這兩個知識點是Oracle開發中很重要的知識點,也是出問題很多的知識點,希望透過本章的學習,讀者能夠對這兩個知識點熟練掌握。

5章 報表開發之擴充套件GROUP BY,這屬於高階SQL方面的知識,在報表開發中是很常見的,本章透過對擴充套件GROUP BY各個知識點的講解,並透過例項分析,講述如何高效地實現資料的多維分析統計,從而為決策者提供強大的報表支援。

6章 探索Oracle自動型別轉換,這是Oracle開發中很重要的知識點,往往也是Oracle開發人員容易忽視或不完全知曉的知識點,本章透過對各種規則以及例項的講述,使讀者對隱式型別轉換有更深刻的認識,從而有助於檢查錯誤和開發高效的程式。

7 Where In List問題解析,透過對一個常見應用的探討,分析如何透過多種方法解決問題,重點講解如何對問題進行多角度分析,從提出問題到解決問題的過程,希望讀者能夠從這個例項中領會到一般複雜問題的分析和解決過程。

8例說表結構設計和大資料量資料處理技術透過各種不同實現的比較講述了一些表設計應遵循的規則,並分析了開發資料載入和解除安裝、資料彙總應用時可供採用的各種方法的特點。本章側重利用資料庫本身提供的SQL功能完成資料加工,而第19章側重使用過程語言開發。二章的例子有部分重疊,讀者可鑑別閱讀。

9資料稽核講述了在Oracle中對錶中資料進行高效列間稽核和行間稽核的各種方法,包括靜態SQL,PL/SQL、動態SQL,PL/SQL的使用方法和技巧。

10章“趣談Oracle分析函式”講述了分析函式在BI場景中的一些應用以及自定義聚集函式的實現。

11章“Oracle層次查詢”介紹了基本的層次查詢語法SELECT...START WITH... CONNECT BY ...語法、以及SYS_CONNECT_BY_PATHWMSYS.WM_CONCAT函式的應用。

12章 號段選取 主要利用層次查詢和分析函式,透過對常見的號段選取的四種情況進行剖析解答,並透過 擴充套件環節擴充了這幾種情況的應用範圍,循序漸進帶你全面掌握此類問題的攻克方法。

13分析SQL執行計劃的關注點並未對各種調優知識進行特別深入的描述,而是將最實用部分提煉出告之讀者,力求讀者在讀完本章後能面對紛繁複雜的執行計劃而保持清晰的頭腦,以最敏銳的視角去關注最需瞭解的資訊,從而能迅速準確抓出主要矛盾,快速解決問題。

14“Oracle開發誤區探索來源於日常工作中開發人員所經歷的各個易錯環節,具有較強的隱蔽性和欺騙性,希望讀者在閱讀完本章後能借鑑經驗,在專案開發中少犯錯。

15“PL/SQL開發效能漫談主要從重視解析、關注呼叫、簡潔為王、細緻入微四個角度入手,結合詳細的案例說明和讀者共同探索PL/SQL開發最佳化的方法和思想。

16管道函式的學習與實戰應用結合詳細的示例描述了管道函式的特性、注意點、使用管道函式的場合等知識點。適當的使用管道函式技術將給專案開發帶來很大的便利。

17巧用鎖特性避免重複啟動同一程式來源於筆者專案中一次未考慮周全而導致系統資料錯誤的經驗教訓,文中描述的技術方案是將鎖機制和異常捕獲巧妙結合,完美的解決了筆者的問題,併成功將該技術廣泛的應用到各個專案中。

18章介紹11GR2的新功能:遞迴WITH子查詢。本章中的大部分例子看起來像是趣味數學題,似乎實用性不強,讀者們不妨視之為工作之餘放鬆腦筋的益智類遊戲,並從中得到某些啟發。也許在你解決下一個工作中的難題時,遞迴的思想就會大放異彩!

19不可能的任務,挑戰Oracle”講解了用Oracle內部和第三方過程語言實現資料立方體的方法及提高效率的最佳化方法,說明了在特定條件下,不用SQL,而採用高階語言程式設計解決高效能要求問題的必要性和可能性。

20章“動態SQL擴充套件”透過一些翔實的案例講解了動態SQL的不同應用場景。

 

書中案例的基本執行環境是Oracle 10g R2,除非有特殊說明,在Oracle 9i中也能執行。個別Oracle 11g的新特性都專門指出。

 

本書在很多案例的重要部分都有提示、注意等特殊說明。目的是為了加深讀者的印象,避免不必要的錯誤,以使讀者能夠更高效地利用Oracle強大的功能和開發工具。

 

感謝 ITPUB 網站的創始人黃志洪(tigerfish) 為本書寫序,他在推動中國Oracle 資料庫的發展上功不可沒。本書正是在他的倡議和幫助下完成的。

感謝 楊廷琨(yangtingkun)、羅海雄(rollingpig)、張涵(zhangfengh)、楊向勇(yxyup)和 侯聖文(secooler),他們都是國內頂尖的Oracle 專家,感謝他們稽核了書稿,並提出了寶貴意見。

感謝 ITPUB 的王蓓小姐(貝貝),在本書的出版過程中,她做了大量的協調工作,才保證這本書的順利出版。

感謝梁敬弘博士對梁敬彬的章節作的仔細修改。

感謝電子工業出版社的張月萍策劃和許豔編輯,是她的努力讓本書更具可讀性和完整性。

由於作者水平有限,書中難免還存在一些錯誤和不當之處,敬請批評指正。

 

編者

20108

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-677858/,如需轉載,請註明出處,否則將追究法律責任。

相關文章