Oracle PL/SQL實(shí)戰(zhàn)

出版時(shí)間:2012-11  出版社:人民郵電出版社  作者:[美] John Beresniewicz,[英] Adrian Billington,[瑞士] Martin Büchi,[美] Melanie Caffrey,[美] Ron Crisco,[美] Cunningham,[美] Dominic Delmolino,[印度] Sue Harper,[丹] Torben Holm,[美] Connor McDonald,[美] Arup Nanda,[瑞士] Stephan Petit,[烏克蘭] Michael Rosenblum,[美] Robyn S  頁數(shù):166  字?jǐn)?shù):650000  譯者:盧 濤  
Tag標(biāo)簽:無  

前言

序作為圖書編輯,我一般滿足于在幕后做好自己的編輯工作,很少站到前臺來為我負(fù)責(zé)編輯的圖書作序。但是,這次我卻破例了。因?yàn)槲乙苍鲞^開發(fā),這本書的內(nèi)容勾起了我的很多回憶。本書旨在教你如何有效地使用PL/SQL。它不是描述語法的書,而是介紹如何把語法及其特性與良好的開發(fā)實(shí)踐相結(jié)合,創(chuàng)建更具有可靠性、可擴(kuò)展性的應(yīng)用,并使之具備長期可維護(hù)性。不管使用什么工具,首先需要明白的是在什么情況下使用它比較合適。在本書的開篇章節(jié)“避免誤用”中,Riyaj Shamsudeen巧妙地回答了何時(shí)使用PL/SQL這一問題。我把這一章放在本書的開始,也是因?yàn)槲覀€(gè)人的經(jīng)歷:那是在20世紀(jì)90年代末,我進(jìn)行了最成功的一次性能優(yōu)化,那次我把客戶端PC上的一堆過程代碼改寫為一個(gè)SQL語句以后,一個(gè)作業(yè)的運(yùn)行時(shí)間從超過36小時(shí)縮短到僅僅幾分鐘。雖然PL/SQL不是導(dǎo)致性能問題的罪魁禍?zhǔn)?,但是我得到了一條經(jīng)驗(yàn)——基于集合的方法(如果有可能)通常優(yōu)于過程性代碼。Michael Rosenblum緊接著寫了動(dòng)態(tài)SQL那一章,其內(nèi)容相當(dāng)精彩。他說明了如果只有到最終運(yùn)行時(shí)才知道所要運(yùn)行的SQL語句到底是什么,那么該如何編寫代碼。這使我想起20世紀(jì)90年代初的一段經(jīng)歷,那時(shí)我在陶氏化學(xué)公司利用Rdb的擴(kuò)展動(dòng)態(tài)游標(biāo)功能集,為一個(gè)醫(yī)療記錄系統(tǒng)寫數(shù)據(jù)裝載應(yīng)用程序。我感覺那是我開發(fā)過的最有趣的應(yīng)用程序之一。Dominic Delmolino介紹了用PL/SQL 進(jìn)行并行處理的方法,以及這樣能獲得的益處和產(chǎn)生的額外負(fù)擔(dān)。謹(jǐn)小慎微,永不為過!我在當(dāng)數(shù)據(jù)庫管理員時(shí)犯下的最大錯(cuò)誤之一就是,有一次頭腦一熱,在一個(gè)關(guān)鍵的應(yīng)用表上設(shè)置了一個(gè)并行度,其目的是為了想讓其中的一個(gè)報(bào)表程序運(yùn)行得更快??墒?,事與愿違。好像鍵盤上的回車鍵連著我的電話似的,修改后大約不到一分鐘,我的電話鈴就響了,電話線另一端的主管對我的修改非常不滿。無須多言,從此我就決定在實(shí)施并行前一定要深思熟慮。Dominic寫的那章可以幫助我們避免陷入這樣的窘境。本書的多章內(nèi)容涵蓋了代碼規(guī)范和極其實(shí)用的編程經(jīng)驗(yàn)。Stephan Petit向我們介紹了一套實(shí)用的命名和編碼規(guī)范。Torben Holm講述了PL/SQL警告和條件編譯。Lewis Cunningham闡述了代碼分析,使我們認(rèn)識到真正理解自己所寫的代碼及其工作原理的重要性,發(fā)人深思。Robyn Sands的“漸進(jìn)式數(shù)據(jù)建模”一章,令我們對漸進(jìn)式數(shù)據(jù)模型的良好設(shè)計(jì)及靈活性有了更多的思考。Melanie Caffrey介紹了經(jīng)常使用的各種游標(biāo)類型,幫助我們在不同條件下正確地選擇游標(biāo)。其他章節(jié)介紹如何進(jìn)行調(diào)試和故障排除。Sue Harper介紹了PL/SQL單元測試,特別是一些如今已經(jīng)集成在SQL Developer中的功能集(這使我想起了在紙上寫單元測試腳本的日子),它可以幫助避免犯回歸錯(cuò)誤。利用自動(dòng)化單元測試,能夠容易且方便地驗(yàn)證程序,以確保自己不會在修復(fù)一個(gè)錯(cuò)誤的同時(shí)制造了更多的錯(cuò)誤。還有John Beresniewicz介紹“合同導(dǎo)向編程”那一章。John給出的方法的一個(gè)關(guān)鍵部分是,在代碼的各種特定地方使用斷言來驗(yàn)證條件。記得我首次了解斷言技術(shù)是在做PowerBuilder編程時(shí),那已經(jīng)是很久很久以前的事了。我很高興看到John把這項(xiàng)技術(shù)和PL/SQL聯(lián)系起來,將其發(fā)揚(yáng)光大。Arup Nanda的論述能夠幫助我們控制依存和失效問題。依存問題可能會導(dǎo)致發(fā)生類似隨機(jī)的、難以重現(xiàn)的應(yīng)用程序錯(cuò)誤。Arup展示了如何完全掌控那些必將發(fā)生的事情,這樣你才不會落入意外錯(cuò)誤的陷阱。一般情況下,我們不得不考慮性能和擴(kuò)展性。Ron Crisco告訴我們通過剖析代碼,找到盡可能優(yōu)化代碼的方法。Adrian Billington討論了從SQL語句中調(diào)用PL/SQL的性能問題。Connor McDonald論述了批量SQL操作驚人的性能優(yōu)勢。關(guān)于可擴(kuò)展性,通常會被遺漏的一面是應(yīng)用程序的規(guī)模和參與開發(fā)的人數(shù)。PL/SQL是否適合數(shù)十到數(shù)百位程序員的大規(guī)模開發(fā)?Martin Büchi在“大規(guī)模PL/SQL開發(fā)”那章,描述了他在管理由170多位開發(fā)者維護(hù)的具有1100萬行代碼的應(yīng)用中的成功經(jīng)驗(yàn),說明了PL/SQL是非常適合于這種任務(wù)的。不難看出我為這本書感到興奮。作者都是頂級專家,分別介紹了自己熱衷的并且特別在行的PL/SQL的某個(gè)方面。如果你已經(jīng)學(xué)習(xí)了語法,那么坐下來讀一讀這本書,充分利用PL/SQL和Oracle數(shù)據(jù)庫的強(qiáng)大功能,投身到開發(fā)應(yīng)用程序的事業(yè)中來吧!Jonathan GennickApress編輯主任助理

內(nèi)容概要

  本書由15位知名技術(shù)專家聯(lián)手打造,每位作者分別用一章的篇幅介紹他們最擅長的PL/SQL相關(guān)主題,涵蓋了PL/SQL開發(fā)的方方面面。本書作者要么是Oracle社區(qū)中堅(jiān)分子,要么是大名鼎鼎的OakTable成員,而且經(jīng)常活躍在Oracle技術(shù)培訓(xùn)第一線,對PL/SQL均有著深入透徹的理解,對解釋復(fù)雜問題有著簡單獨(dú)到的方法。一冊在手,眾多PL/SQL牛人的真知灼見盡收眼底,你還等什么?
  本書著重介紹了PL/SQL最新、最實(shí)用的特性,從什么該做和什么不該做、怎么做對,以及怎么做更有效率、效果更好等三個(gè)部分全面闡釋了PL/SQL相關(guān)的各個(gè)主題。而且,每一章都配有非常貼切的示例代碼、跟蹤圖以及輸出結(jié)果,輔以深入淺出的講解,令人在恍然大悟之后不禁拍案叫絕。各章內(nèi)容均涵蓋了PL/SQL實(shí)際開發(fā)中的最佳實(shí)踐,反映了作者多年積累的經(jīng)驗(yàn)和教訓(xùn),其價(jià)值非同一般。
  本書適合具有一定PL/SQL經(jīng)驗(yàn)的讀者學(xué)習(xí)參考。

作者簡介

  John Beresniewicz(約翰?貝雷斯尼維奇)是位于加州紅木城紅木岸(Redwood
Shores)的Oracle總部技術(shù)團(tuán)隊(duì)的一名咨詢顧問。他于2002年加入Oracle,負(fù)責(zé)企業(yè)管理器的數(shù)據(jù)庫性能領(lǐng)域,他對診斷和調(diào)優(yōu)包、實(shí)時(shí)應(yīng)用測試、支持工作臺和Exadata的設(shè)計(jì)作出了重要貢獻(xiàn)。多年以來,他經(jīng)常在Oracle全球大會和其他會議上發(fā)言,發(fā)言主題包括數(shù)據(jù)庫性能和PL/SQL編程。他與Steven
Fellerstein合著了Oracle Built-in
Packages(O’Reilly&Associates,1998年)一書,并且是OakTable網(wǎng)絡(luò)的創(chuàng)始人之一。
Adrian Billington
(阿德里安?比林頓)是應(yīng)用設(shè)計(jì)、開發(fā)和性能調(diào)優(yōu)方面的顧問。自1999年以來,一直從事Oracle數(shù)據(jù)庫方面的工作。他是www.oracle-developer.net網(wǎng)站的發(fā)起人,這個(gè)網(wǎng)站為Oracle開發(fā)人員提供各種SQL和PL/SQL功能、實(shí)用工具和技術(shù)。阿德里安還是Oracle
ACE,同時(shí)也是OakTable網(wǎng)絡(luò)的成員。現(xiàn)在,他與妻子安吉和三個(gè)孩子:格魯吉亞、奧利弗和伊莎貝拉一起居住在英國。
Martin Büchi
(馬丁?步琪)自2004年以來,任Avaloq公司首席軟件架構(gòu)師。該公司是一個(gè)標(biāo)準(zhǔn)化的銀行軟件供應(yīng)商,其產(chǎn)品基于Oracle
RDBMS構(gòu)建,包含1100萬行PL/SQL代碼。他與兩位同事一起設(shè)計(jì)了系統(tǒng)架構(gòu),并評審了170名全職PL/SQL開發(fā)人員的設(shè)計(jì)和代碼,以追求軟件的簡明、效率和健壯性。馬丁經(jīng)常在Oracle大會上發(fā)言。2009年,他被Oracle
Magazine評選為PL/SQL年度開發(fā)人員。從事Oracle數(shù)據(jù)庫工作之前,馬丁曾在面向?qū)ο蟮南到y(tǒng)、形式化方法和近似記錄匹配等領(lǐng)域工作。他擁有瑞士聯(lián)邦技術(shù)研究所的碩士學(xué)位和芬蘭土爾庫計(jì)算機(jī)科學(xué)中心的博士學(xué)位。業(yè)余時(shí)間,馬丁喜歡與他的家人一起進(jìn)行各種戶外運(yùn)動(dòng)。
Melanie Caffrey
(梅拉妮?卡弗里)是Oracle公司高級開發(fā)經(jīng)理,為不同客戶的業(yè)務(wù)需求提供前端和后端的Oracle解決方案。她是多部技術(shù)出版物的合著者,包括Oracle
Web Application Programming for PL/SQL Developers、Oracle DBA
Interactive Workbook、Oracle Database Administration: The Complete
Video Course等,這些書全部由Prentice
Hall出版。她在紐約哥倫比亞大學(xué)的計(jì)算機(jī)技術(shù)與應(yīng)用課程中指導(dǎo)學(xué)生,教授先進(jìn)的Oracle數(shù)據(jù)庫管理和PL/SQL開發(fā)。她也經(jīng)常在Oracle會議上發(fā)言。
Ron
Crisco(羅恩?克里斯科)28年來分別擔(dān)任軟件設(shè)計(jì)師、開發(fā)人員和項(xiàng)目負(fù)責(zé)人,并有21年的Oracle數(shù)據(jù)庫工作經(jīng)驗(yàn)。他在R方法(Method
R)公司從事軟件設(shè)計(jì)和開發(fā)、軟件產(chǎn)品管理(如R方法剖析器、MR工具和MR跟蹤)、咨詢、教授課程等工作。他的特長是簡化復(fù)雜的工作,這在幫助他身邊的人完成非凡工作時(shí)尤顯寶貴。
Lewis
Cunningham(劉易斯?坎寧安)在IT領(lǐng)域已經(jīng)工作了20多年。自1993年以來一直與Oracle數(shù)據(jù)庫打交道。他的專長是應(yīng)用程序設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì),以及大容量的VLDB數(shù)據(jù)庫編碼。目前他任職于佛羅里達(dá)州圣彼得堡的一家金融服務(wù)公司,擔(dān)任高級數(shù)據(jù)庫架構(gòu)師,負(fù)責(zé)超大規(guī)模、高事務(wù)率分析型數(shù)據(jù)庫和應(yīng)用程序的工作。他花了大量時(shí)間來與最新的技術(shù)和趨勢保持同步,并在用戶組發(fā)表演講,舉辦網(wǎng)絡(luò)研討會。劉易斯也是一位Oracle
ACE總監(jiān)和Oracle認(rèn)證專家。他在Oracle技術(shù)網(wǎng)發(fā)表了數(shù)篇文章,并在http://it.toolbox.com/
blogs/oracle-guide維護(hù)一個(gè)Oracle技術(shù)博客。劉易斯寫了兩本書:EnterpriseDB: The
Definitive Reference(Rampant Tech press,2007年)和SQL DML: The SQL
Starter
Series(CreateSpace,2008年)。他與他的妻子及兩個(gè)兒子起住在佛羅里達(dá)州。可以通過電子郵件lewisc@databasewisdom.com與他聯(lián)系。
Dominic Delmolino
(多米尼克?德莫里諾)是Agilex技術(shù)公司首席Oracle和數(shù)據(jù)庫技術(shù)專家,這是一家專門協(xié)助政府和私營企業(yè)實(shí)現(xiàn)信息價(jià)值的咨詢公司。多米尼克擁有24年以上的數(shù)據(jù)庫經(jīng)驗(yàn),其中擔(dān)任過20多年的Oracle數(shù)據(jù)庫工程和開發(fā)專家。他是OakTable網(wǎng)絡(luò)的成員,并定期出席各種學(xué)術(shù)會議、研討會,以及歐洲和美國的用戶組會議。他還維護(hù)www.oraclemusings.com網(wǎng)站,該網(wǎng)站專注于與數(shù)據(jù)庫應(yīng)用程序開發(fā)相關(guān)的數(shù)據(jù)庫編碼和設(shè)計(jì)實(shí)踐。多米尼克擁有紐約州伊薩卡康奈爾大學(xué)的計(jì)算機(jī)科學(xué)學(xué)士學(xué)位。
Sue Harper (蘇?哈珀)是數(shù)據(jù)庫開發(fā)工具組中的Oracle SQL Developer和SQL
Developer數(shù)據(jù)建模器的產(chǎn)品經(jīng)理。她自1992年以來一直在Oracle公司工作,目前在倫敦辦事處工作。蘇是一些雜志的特約撰稿人,維護(hù)著一個(gè)技術(shù)博客,并在世界各地的許多會議上發(fā)言。她撰寫了技術(shù)書籍Oracle
SQL Developer
2.1(Packt,2009),業(yè)余時(shí)間,蘇喜歡步行和攝影。同時(shí),她還花時(shí)間到新德里的貧民區(qū)做慈善工作,幫助那里的婦女和兒童。
Torben Holm
(托爾?霍爾姆)自1987年以來一直從事開發(fā)工作。自1992年以來,他一直致力于與Oracle相關(guān)的工作,前四年擔(dān)任系統(tǒng)分析師和應(yīng)用程序開發(fā)人員(Oracle
7、Forms 4.0/Reports 2.0和DBA),然后做了兩年開發(fā)(ORACLE6/7、Forms
3.0和RPT以及DBA)。他在Oracle丹麥公司的高級服務(wù)組工作了數(shù)年,擔(dān)任首席高級顧問,執(zhí)行應(yīng)用程序開發(fā)和DBA任務(wù)。他還擔(dān)任過PL/SQL、SQL和DBA課程的講師?,F(xiàn)在,托爾在Miracle
A/S(www.miracleas.dk)工作,擔(dān)任顧問,負(fù)責(zé)應(yīng)用開發(fā)(PLSQL、mod_plsql、Forms、ADF)和數(shù)據(jù)庫管理。10年來他一直在
Miracle A/S公司工作。他是Oracle認(rèn)證開發(fā)人員,并且也是OakTable網(wǎng)絡(luò)成員。
Connor McDonald (康納?麥當(dāng)勞)自20世紀(jì)90年代初一直從事Oracle相關(guān)工作,他非常熟悉Oracle
6.0.36和Oracle
7.0.12。在過去11年中,康納曾為位于西歐、東南亞、澳大利亞、英國和美國的公司開發(fā)過系統(tǒng)。他已經(jīng)認(rèn)識到,雖然世界各地的系統(tǒng)及方法非常多樣,但開發(fā)在Oracle上運(yùn)行的系統(tǒng)往往有兩個(gè)共同的問題:要么避免使用Oracle特定的功能,要么就是采取不太理想的用法或隨意亂用它們。正是這種觀察,促使他創(chuàng)建了一個(gè)提示和技巧的個(gè)人網(wǎng)站(www.oracledba.co.uk),并努力在Oracle演講者組織中發(fā)表更多演講,以提高PL/SQL的業(yè)內(nèi)認(rèn)知度和普及度。
Arup Nanda (奧雅納?南大)自1993年以來,一直是Oracle
DBA,他熟悉數(shù)據(jù)庫管理的所有方面,從建模到災(zāi)難恢復(fù)。目前,他在紐約州白原市的喜達(dá)屋酒店(即喜來登、威斯汀等連鎖酒店的母公司)領(lǐng)導(dǎo)全球DBA團(tuán)隊(duì)。他是獨(dú)立Oracle用戶協(xié)會(IOUG)旗下出版物SELECT
Journal的特約編輯,在許多Oracle技術(shù)盛會,如Oracle全球和本地用戶組(如紐約Oracle用戶組)中發(fā)表演講,并為印刷出版物如Oracle
Magazine和網(wǎng)絡(luò)出版物如Oracle Techndogy Network撰寫了許多文章。奧雅納與他人合著了兩本書:Oracle
Privacy Security Auditing(Rampant,2003年)和Oracle PL/SQL for
DBAs(O’Reilly,2005年)。由于他的專業(yè)成就和對用戶社區(qū)的貢獻(xiàn),Oracle評選他為2003年年度DBA。奧雅納與他的妻子Anindita和兒子阿尼什住在康涅狄格州的丹伯里??梢酝ㄟ^arup@proligence.com聯(lián)系他。
Stephan Petit
(斯蒂芬?佩蒂特)于1995年在位于瑞士日內(nèi)瓦的歐洲粒子物理實(shí)驗(yàn)室(CERN)開始了他的職業(yè)生涯。他現(xiàn)在是一個(gè)軟件工程師和學(xué)生團(tuán)隊(duì)的負(fù)責(zé)人,負(fù)責(zé)為實(shí)驗(yàn)室和其他部門提供應(yīng)用程序和工具。工程和設(shè)備數(shù)據(jù)管理系統(tǒng)是這些工具之一,也稱為CERN
EDMS。像CERN的大型強(qiáng)子對撞機(jī)(LHC)項(xiàng)目有40年或以上的生命周期。
EDMS是實(shí)驗(yàn)室的數(shù)字化工程的內(nèi)存/記憶體。電子文件管理系統(tǒng)中存儲了與一百多萬件設(shè)備有關(guān)的一百多萬份文件,EDMS也供CERN的產(chǎn)品生命周期管理(PLM)和資產(chǎn)跟蹤系統(tǒng)使用。
EDMS幾乎完全是基于PL/SQL的,并旨在擁有一個(gè)至少與LHC一樣長的生命周期。
斯蒂芬和他的團(tuán)隊(duì)一直在完善PL/SQL編碼規(guī)范和最佳實(shí)踐,以滿足他們非常有趣的各種挑戰(zhàn)的組合:幾十年的可維護(hù)性、可靠性、高效的錯(cuò)誤處理、可擴(kuò)展性、模塊的可重用性。團(tuán)隊(duì)成員的頻繁輪換,其中大部分只是暫時(shí)在CERN實(shí)習(xí)的學(xué)生,加劇了這些挑戰(zhàn)。最古老的一段代碼是在1995年寫的,現(xiàn)在仍然在使用——并且成功地運(yùn)行!除了完善PL/SQL,斯蒂芬還喜歡不時(shí)登臺表演,比如擔(dān)任CERN搖滾夏季音樂節(jié)的搖滾樂隊(duì)歌手,以及在多部戲中出演角色。
Michael Rosenblum
(邁克爾?羅森布魯姆)是Dulcian公司的軟件架構(gòu)師/開發(fā)DBA,他負(fù)責(zé)系統(tǒng)調(diào)優(yōu)和應(yīng)用程序架構(gòu)。邁克爾通過編寫復(fù)雜的PL/SQL例程和研究新功能支持Dulcian開發(fā)人員。他是PL/SQL
for Dummies(Wiley,2006年)一書的作者之一,并在IOUG Select Journal和ODTUG Tech
Journal發(fā)表了許多篇與數(shù)據(jù)庫相關(guān)的文章。邁克爾是一位Oracle
ACE,也經(jīng)常出席不同地區(qū)和國家的Oracle用戶組大會(Oracle OpenWorld大會、ODTUG、IOUG
Collaborate、RMOUG、NYOUG等),他是ODTUG萬花筒2009年“最佳演講獎(jiǎng)”得主。在他的家鄉(xiāng)烏克蘭,他獲得了烏克蘭總統(tǒng)獎(jiǎng)學(xué)金,并擁有信息系統(tǒng)理學(xué)碩士學(xué)位并以優(yōu)異成績獲得基輔國立經(jīng)濟(jì)大學(xué)畢業(yè)證書。
Robyn Sands
(羅賓?桑茲)是思科系統(tǒng)公司的軟件工程師,她為思科的客戶設(shè)計(jì)和開發(fā)嵌入式Oracle數(shù)據(jù)庫產(chǎn)品。自1996年以來,她一直使用Oracle軟件,并在應(yīng)用開發(fā)、大型系統(tǒng)實(shí)現(xiàn)和性能測量方面具有豐富經(jīng)驗(yàn)。羅賓的職業(yè)生涯始于工業(yè)工程和質(zhì)量工程,她將自己對數(shù)據(jù)的摯愛結(jié)合到以前接受的教育和工作經(jīng)驗(yàn)中,尋找新方法來建立性能穩(wěn)定、易于維護(hù)的數(shù)據(jù)庫系統(tǒng)。她是OakTable網(wǎng)絡(luò)成員,并是下面兩本Oracle書籍的作者之一:Expert
Oracle Practices和Pro Oracle
SQL(都由Apress出版,2010)。羅賓偶爾在http://adhdocddba.
blogspot.com發(fā)表一些博客。
Riyaj
Shamsudeen是OraInternals公司首席數(shù)據(jù)庫管理員和主席,這是一家從事性能調(diào)優(yōu)/數(shù)據(jù)庫恢復(fù)/EBS11i等領(lǐng)域的咨詢公司。他專門研究真正的應(yīng)用集群(RAC)、性能調(diào)優(yōu)和數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)。他還經(jīng)常在其博客http://orainternals.wordpress.com上發(fā)表這些技術(shù)領(lǐng)域的文章。他也經(jīng)常出席許多國際會議,如HOTSOS、COLLABORATE、RMOUG、SIOUG、UKOUG等,他是OakTable網(wǎng)絡(luò)的驕傲一員。他擁有16年以上使用Oracle技術(shù)產(chǎn)品的經(jīng)驗(yàn),并擔(dān)任了15年以上的Oracle/Oracle應(yīng)用程序數(shù)據(jù)庫管理員。
譯者簡介:
盧濤
1995年參加工作,高級程序員、系統(tǒng)分析師、高級工程師。2004年起接觸Oracle數(shù)據(jù)庫,獲得Oracle數(shù)據(jù)庫管理9i至11g、PL/SQL開發(fā)、性能優(yōu)化、RAC管理、數(shù)據(jù)倉庫等多個(gè)OCP、OCE、OCS認(rèn)證。ITPUB社區(qū)Oracle開發(fā)版版主,《劍破冰山——Oracle開發(fā)藝術(shù)》一書合著者。做過需求分析、系統(tǒng)分析、架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫和應(yīng)用程序性能優(yōu)化等工作。參與數(shù)次全國性普查數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)、開發(fā)和運(yùn)維。
校審
蘇旭暉
在IT行業(yè)摸爬滾打20多年,1997年至今一直致力于Oracle開發(fā),擅長用SQL、PL/SQL。ITPUB社區(qū)Oracle開發(fā)版版主,以及《劍破冰山——Oracle開發(fā)藝術(shù)》一書合著者?,F(xiàn)居加拿大多倫多,從事數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā)工作。出國前任職于廈門巨龍軟件公司。多年來致力于金融、公安、醫(yī)療、社保等行業(yè)軟件的研發(fā)。
李穎
2006年畢業(yè)于渤海大學(xué)英語系,主修英語教育專業(yè)。英語愛好者
  
賈書民
河北省統(tǒng)計(jì)局?jǐn)?shù)據(jù)管理中心調(diào)研員,高級程序員、高級工程師。有多年Unix系統(tǒng)管理、數(shù)據(jù)庫系統(tǒng)管理與設(shè)計(jì)、數(shù)據(jù)處理軟件開發(fā)經(jīng)驗(yàn)。1993年起開始使用Oracle開發(fā)了《河北省綜合數(shù)據(jù)庫系統(tǒng)》等多個(gè)大型應(yīng)用系統(tǒng)。參與過《第五次全國人口普查數(shù)據(jù)處理系統(tǒng)》等多個(gè)國家級項(xiàng)目的設(shè)計(jì)和開發(fā)。擅長使用SQL、PL/SQL進(jìn)行高效數(shù)據(jù)分析處理。所開發(fā)項(xiàng)目獲第四屆全國統(tǒng)計(jì)科學(xué)技術(shù)進(jìn)步一等獎(jiǎng)。此外,他還參與編寫《劍破冰山——Oracle開發(fā)藝術(shù)》一書。

書籍目錄

第1章  避免誤用  
1.1  逐行處理  
1.2  嵌套的逐行處理  
1.3  查找式查詢  
1.4  對DUAL的過度訪問  
1.4.1  日期的算術(shù)運(yùn)算  
1.4.2  訪問序列  
1.4.3  填充主—從行  
1.5  過多的函數(shù)調(diào)用  
1.5.1  不必要的函數(shù)調(diào)用  
1.5.2  代價(jià)高昂的函數(shù)調(diào)用  
1.6  數(shù)據(jù)庫鏈接調(diào)用  
1.7  過度使用觸發(fā)器  
1.8  過度提交  
1.9  過度解析  
1.10  小結(jié)  
第2章  動(dòng)態(tài)SQL:處理未知  
2.1  動(dòng)態(tài)SQL的三種方式  
2.1.1  本地動(dòng)態(tài)SQL  
2.1.2  動(dòng)態(tài)游標(biāo)  
2.1.3  DBMS_SQL  
2.2  動(dòng)態(tài)思考的樣例  
2.3  安全問題  
2.4  性能和資源利用率  
2.4.1  反模式  
2.4.2  比較動(dòng)態(tài)SQL的實(shí)現(xiàn)  
2.5  對象的依賴關(guān)系  
2.5.1  負(fù)面影響  
2.5.2  正面影響  
2.6  小結(jié)  
第3章  PL/SQL和并行處理  
3.1  為什么需要并行處理  
3.2  影響并行處理的定律  
3.3  大數(shù)據(jù)的崛起  
3.4  并行與分布式處理  
3.5  并行硬件體系結(jié)構(gòu)  
3.6  確定目標(biāo)  
3.6.1  加速  
3.6.2  按比例擴(kuò)展  
3.6.3  并行度  
3.7  用于并行處理的候選工作負(fù)載  
3.7.1  并行和OLTP  
3.7.2  并行和非OLTP工作負(fù)載  
3.8  MapReduce編程模型  
3.9  在使用PL/SQL之前  
3.10  可用于并行活動(dòng)的進(jìn)程  
3.11  使用MapReduce的并行執(zhí)行服務(wù)器  
3.11.1  管道表函數(shù)  
3.11.2  指導(dǎo)  
3.11.3  并行管道表函數(shù)小結(jié)  
3.12  小結(jié)  
第4章  警告和條件編譯  
4.1  PL/SQL 警告  
4.1.1  基礎(chǔ)  
4.1.2  使用警告  
4.1.3  升級警告為錯(cuò)誤  
4.1.4  忽略警告  
4.1.5  編譯和警告  
4.1.6  關(guān)于警告的結(jié)束語  
4.2  條件編譯  
4.2.1  基礎(chǔ)  
4.2.2  正在運(yùn)行代碼的哪部分  
4.2.3  預(yù)處理代碼的好處  
4.2.4  有效性驗(yàn)證  
4.2.5  控制編譯  
4.2.6  查詢變量  
4.2.7  關(guān)于條件編譯的結(jié)束語  
4.3  小結(jié)  
第5章  PL/SQL單元測試  
5.1  為什么要測試代碼  
5.2  什么是單元測試  
5.2.1  調(diào)試還是測試  
5.2.2  建立測試的時(shí)機(jī)  
5.3  單元測試構(gòu)建工具  
5.3.1  utPLSQL:使用命令行代碼  
5.3.2  Quest Code Tester for Oracle  
5.3.3  Oracle SQL Developer  
5.4  準(zhǔn)備和維護(hù)單元測試環(huán)境  
5.4.1  創(chuàng)建單元測試資料檔案庫  
5.4.2  維護(hù)單元測試資料檔案庫  
5.4.3  導(dǎo)入測試  
5.5  構(gòu)建單元測試  
5.5.1  使用單元測試向?qū)А ?br />5.5.2  創(chuàng)建第一個(gè)測試實(shí)施  
5.5.3  添加啟動(dòng)和拆除進(jìn)程  
5.5.4  收集代碼覆蓋率統(tǒng)計(jì)信息  
5.5.5  指定參數(shù)  
5.5.6  添加進(jìn)程驗(yàn)證  
5.5.7  保存測試  
5.5.8  調(diào)試和運(yùn)行測試  
5.6  擴(kuò)大測試的范圍  
5.6.1  創(chuàng)建查找值  
5.6.2  植入測試實(shí)施  
5.6.3  創(chuàng)建動(dòng)態(tài)查詢  
5.7  支持單元測試功能  
5.7.1  運(yùn)行報(bào)告  
5.7.2  創(chuàng)建組件庫  
5.7.3  導(dǎo)出、導(dǎo)入和同步測試  
5.7.4  構(gòu)建套件  
5.8  從命令行運(yùn)行測試  
5.9  小結(jié)  
第6章  批量SQL操作  
6.1  五金商店  
6.2  設(shè)置本章的例子  
6.3  在PL/SQL中執(zhí)行批量操作  
6.3.1  批量獲取入門  
6.3.2  三種集合風(fēng)格的數(shù)據(jù)類型  
6.3.3  為什么要自找麻煩  
6.3.4  監(jiān)控批量收集的開銷  
6.3.5  重構(gòu)代碼以使用批量收集  
6.4  批量綁定  
6.4.1  批量綁定入門  
6.4.2  度量批量綁定性能  
6.4.3  監(jiān)視內(nèi)存的使用  
6.4.4  11g中的改進(jìn)  
6.5  批量綁定的錯(cuò)誤處理  
6.5.1  SAVE EXCEPTIONS和分批操作  
6.5.2  LOG ERRORS子句  
6.5.3  健壯的批量綁定  
6.6  大規(guī)模集合的正當(dāng)理由  
6.7  真正的好處:客戶端批量處理  
6.8  小結(jié)  
第7章  透識你的代碼  
7.1  本章內(nèi)容取舍  
7.2  自動(dòng)代碼分析  
7.2.1  靜態(tài)分析  
7.2.2  動(dòng)態(tài)分析  
7.3  執(zhí)行分析的時(shí)機(jī)  
7.4  執(zhí)行靜態(tài)分析  
7.4.1  數(shù)據(jù)字典  
7.4.2  PL/Scope  
7.5  執(zhí)行動(dòng)態(tài)分析  
7.5.1  DBMS_PROFILER和DBMS_TRACE  
7.5.2  DBMS_HPROF  
7.6  小結(jié)  
第8章  合同導(dǎo)向編程  
8.1  契約式設(shè)計(jì)  
8.1.1  軟件合同  
8.1.2  基本合同要素  
8.1.3  斷言  
8.1.4  參考文獻(xiàn)  
8.2  實(shí)現(xiàn)PL/SQL合同  
8.2.1  基本的ASSERT程序  
8.2.2  標(biāo)準(zhǔn)的包本地?cái)嘌浴 ?br />8.2.3  使用ASSERT執(zhí)行合同  
8.2.4  其他改進(jìn)  
8.2.5  合同導(dǎo)向函數(shù)原型  
8.3  示例:測試奇數(shù)和偶數(shù)  
8.4  有用的合同模式  
8.4.1  用NOT NULL輸入且輸出NOT NULL  
8.4.2  函數(shù)返回NOT NULL  
8.4.3  布爾型函數(shù)返回NOT NULL  
8.4.4  檢查函數(shù):返回TRUE或ASSERTFAIL  
8.5  無錯(cuò)代碼的原則  
8.5.1  嚴(yán)格地?cái)嘌韵葲Q條件  
8.5.2  一絲不茍地模塊化  
8.5.3  采用基于函數(shù)的接口  
8.5.4  在ASSERTFAIL處崩潰  
8.5.5  對后置條件進(jìn)行回歸測試  
8.5.6  避免在正確性和性能之間取舍  
8.5.7  采用Oracle 11g優(yōu)化編譯  
8.6  小結(jié)  
第9章  從SQL調(diào)用PL/SQL  
9.1  在SQL中使用PL/SQL函數(shù)的開銷  
9.1.1  上下文切換  
9.1.2  執(zhí)行  
9.1.3  欠理想的數(shù)據(jù)訪問  
9.1.4  優(yōu)化器的難點(diǎn)  
9.1.5  讀一致性陷阱  
9.1.6  其他問題  
9.2  降低PL/SQL函數(shù)的開銷  
9.2.1  大局觀  
9.2.2  使用SQL的替代品  
9.2.3  減少執(zhí)行  
9.2.4  協(xié)助CBO  
9.2.5  調(diào)優(yōu)PL/SQL  
9.3  小結(jié)  
第10章  選擇正確的游標(biāo)  
10.1  顯式游標(biāo)  
10.1.1  解剖顯式游標(biāo)  
10.1.2  顯式游標(biāo)和批量處理  
10.1.3  REF游標(biāo)簡介  
10.2  隱式游標(biāo)  
10.2.1  解剖隱式游標(biāo)  
10.2.2  隱式游標(biāo)和額外獲取的理論  
10.3  靜態(tài)REF游標(biāo)  
10.3.1  詳細(xì)的游標(biāo)變量限制清單  
10.3.2  客戶端和REF游標(biāo)  
10.3.3  有關(guān)解析的話題  
10.4  動(dòng)態(tài)REF游標(biāo)  
10.4.1  例子和最佳用法  
10.4.2  SQL注入的威脅  
10.4.3  描述REF游標(biāo)中的列  
10.5  小結(jié)  
第11章  大規(guī)模PL/SQL編程  
11.1  將數(shù)據(jù)庫作為基于PL/SQL的應(yīng)用服務(wù)器  
11.1.1  案例研究:Avaloq銀行系統(tǒng)  
11.1.2  在數(shù)據(jù)庫中使用PL/SQL實(shí)現(xiàn)業(yè)務(wù)邏輯的優(yōu)勢  
11.1.3  用數(shù)據(jù)庫作為基于PL/SQL的應(yīng)用程序服務(wù)器的限制  
11.1.4  軟因素  
11.2  大規(guī)模編程的要求  
11.3  通過規(guī)范實(shí)現(xiàn)一致性  
11.3.1  縮寫詞  
11.3.2  PL/SQL標(biāo)識符的前綴和后綴  
11.4  代碼和數(shù)據(jù)的模塊化  
11.4.1  包和相關(guān)的表作為模塊  
11.4.2  含有多個(gè)包或子模塊的模塊  
11.4.3  模式作為模塊  
11.4.4  在模式內(nèi)部模塊化  
11.4.5  用模式模塊化與在模式內(nèi)模塊化的比較  
11.5  使用PL/SQL面向?qū)ο缶幊獭 ?br />11.5.1  使用用戶定義類型的面向?qū)ο缶幊獭 ?br />11.5.2  使用PL/SQL記錄面向?qū)ο缶幊獭 ?br />11.5.3  評估  
11.6  內(nèi)存管理  
11.6.1  測量內(nèi)存使用  
11.6.2  集合  
11.7  小結(jié)  
第12章  漸進(jìn)式數(shù)據(jù)建?! ?br />12.1  從二十年的系統(tǒng)開發(fā)中總結(jié)的經(jīng)驗(yàn)  
12.2  數(shù)據(jù)庫和敏捷開發(fā)  
12.3  漸進(jìn)式數(shù)據(jù)建?! ?br />12.4  重構(gòu)數(shù)據(jù)庫  
12.5  通過PL/SQL創(chuàng)建訪問層  
12.6  敏捷宣言  
12.7  用PL/SQL進(jìn)行漸進(jìn)式數(shù)據(jù)建模  
12.7.1  定義接口  
12.7.2  思考可擴(kuò)展性  
12.7.3  測試驅(qū)動(dòng)開發(fā)  
12.7.4  明智地使用模式和用戶  
12.8  小結(jié)  
第13章  性能剖析  
13.1  何謂性能  
13.1.1  功能需求  
13.1.2  響應(yīng)時(shí)間  
13.1.3  吞吐量  
13.1.4  資源利用率  
13.1.5  性能是功能的一種  
13.2  什么是剖析  
13.2.1  順序圖  
13.2.2  概要文件之神奇  
13.2.3  性能剖析的好處  
13.3  性能測量  
13.3.1  這個(gè)程序?yàn)槭裁绰 ?br />13.3.2  測量嵌入  
13.3.3  識別  
13.3.4  條件編譯  
13.3.5  內(nèi)建的剖析器  
13.3.6  擴(kuò)展的SQL跟蹤數(shù)據(jù)(事件10046)  
13.3.7  針對Oracle的測量工具庫(ILO)  
13.4  問題診斷  
13.4.1  R方法  
13.4.2  ILO示例  
13.4.3  剖析示例  
13.5  小結(jié)  
第14章  編碼規(guī)范和錯(cuò)誤處理  
14.1  為什么要制訂編碼規(guī)范  
14.2  格式化  
14.2.1  大小寫  
14.2.2  注釋  
14.2.3  比較  
14.2.4  縮進(jìn)  
14.3  動(dòng)態(tài)代碼  
14.4  包  
14.5  存儲過程  
14.5.1  命名  
14.5.2  參數(shù)  
14.5.3  調(diào)用  
14.5.4  局部變量  
14.5.5  常量  
14.5.6  類型  
14.5.7  全局變量  
14.5.8  本地存儲過程和函數(shù)  
14.5.9  存儲過程元數(shù)據(jù)  
14.6  函數(shù)  
14.7  錯(cuò)誤處理  
14.7.1  錯(cuò)誤捕獲  
14.7.2  錯(cuò)誤報(bào)告  
14.7.3  錯(cuò)誤恢復(fù)  
14.7.4  先測試再顯示  
14.8  小結(jié)  
第15章  依賴關(guān)系和失效  
15.1  依賴鏈  
15.2  縮短依賴鏈  
15.3  數(shù)據(jù)類型引用  
15.4  用于表修改的視圖  
15.5  把組件添加到包  
15.6  依賴鏈中的同義詞  
15.7  資源鎖定  
15.8  用觸發(fā)器強(qiáng)制執(zhí)行依賴  
15.9  創(chuàng)建最初禁用的觸發(fā)器  
15.10  小結(jié)

章節(jié)摘錄

版權(quán)頁:   插圖:   如果計(jì)算機(jī)可以自動(dòng)計(jì)算出將問題劃分成更小部分的方法,并以那些更小的部分為基礎(chǔ)并行地運(yùn)行程序,事情就會很美好。關(guān)于并行的自動(dòng)識別已經(jīng)有大量的研究,但事實(shí)證明,計(jì)算機(jī)真的很難理解在哪里有機(jī)會使用并行。雖然已經(jīng)有人嘗試編寫新的編譯器,使它可以讀取高層次的編程語言,并為CPU產(chǎn)生顯式并行指令流,但沒有太多在這方面很成功的例子,結(jié)果是我們?nèi)孕枰謩?dòng)設(shè)計(jì)我們自己的并行處理策略。 好消息是,正確實(shí)施并行處理技術(shù),除簡單加速之外,還有以下幾個(gè)好處。 更好的系統(tǒng)利用率,在多處理器系統(tǒng)中,所有處理器都可以應(yīng)用于任務(wù)。 消除一個(gè)全有或全無(all—or—nothing)的過程,允許部分完成以防一些子任務(wù)失敗。 能夠在一個(gè)固定的時(shí)間處理越來越大的數(shù)據(jù)集,而不是簡單地加快速度,以便在一個(gè)更短的時(shí)間內(nèi)完成一個(gè)固定的數(shù)據(jù)集。 結(jié)果證明,雖然設(shè)計(jì)和實(shí)現(xiàn)并行程序會產(chǎn)生一些開銷并需要辛勤的工作,但這些付出同它帶來的好處相比往往是值得的。 3.2影響并行處理的定律 用計(jì)算機(jī)解決問題的技術(shù)(或算法)是由計(jì)算機(jī)科學(xué)家研究和編纂的,往往導(dǎo)致所謂的計(jì)算定律。這些定律與計(jì)算機(jī)體系結(jié)構(gòu)的趨勢和過去幾年的數(shù)據(jù)增長互相作用,影響了我們對并行處理的思考。 摩爾定律(Moore's Law,1965年提出)指出,集成電路上可以容納的晶體管數(shù)量每兩年增加一倍,并暗示計(jì)算機(jī)微處理器的性能和速度也每兩年增加一倍。從20世紀(jì)80年代中期到大約2004年,由于處理器頻率的同步提升,這種加速一直與這個(gè)定律吻合。然而,從那以后,功耗開始成為問題,導(dǎo)致多核處理器的出現(xiàn),它需要并行處理才能充分利用這條定律。 阿姆達(dá)爾定律(Amdahl's Law,1967年提出)指出,使用多個(gè)處理器并行計(jì)算對程序進(jìn)行加速受限于程序中的串行片段所需的執(zhí)行時(shí)間。阿姆達(dá)爾定律中存在一個(gè)并行處理的寒蟬效應(yīng),因?yàn)樗赋?,程序的?zhí)行速度不可能比它們的串行組成部分的速度更快。這意味著利用并行處理,你的程序的速度增加量有一個(gè)限制,往往使得并行程序最多只能比與它等價(jià)的串行程序快10~20倍。 古斯塔夫森法則(Gustafson's Law,1988年提出)指出,具有非常大的重復(fù)數(shù)據(jù)集的問題可以有效地并行化,幾乎是高度并行化(因此,擁有非常小的串行部分并很容易分解為小型獨(dú)立單位的問題,被正式命名為高度并行)。 這些法則之間的矛盾關(guān)系符合21世紀(jì)前十年另一個(gè)行業(yè)的發(fā)展趨勢,即所謂“大數(shù)據(jù)”的崛起。

媒體關(guān)注與評論

“本書作者陣容強(qiáng)大,內(nèi)容全面實(shí)用,期待更多這種形式的技術(shù)書?!薄x者評論

編輯推薦

匯集Oracle專家集體智慧的結(jié)晶,包羅PL/SQL的方方面面介紹語法的同時(shí)展示良好的編程實(shí)踐內(nèi)容貼近實(shí)戰(zhàn)、講解透徹精彩,每章一個(gè)作者,獨(dú)立成篇,易于理解結(jié)合PL/SQL語法特性與良好的開發(fā)實(shí)踐,DBA修煉內(nèi)力必讀秘籍

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    Oracle PL/SQL實(shí)戰(zhàn) PDF格式下載


用戶評論 (總計(jì)30條)

 
 

  •   PL SQL這本書比較實(shí)用,強(qiáng)烈推薦
  •   這是學(xué)習(xí)PLSQL編程不可多得的好書,此書是ITPUB上數(shù)據(jù)庫開發(fā)版的版主之一的OO大師所譯!特別推薦!?。。。。。。。。。?/li>
  •   很不錯(cuò)的一本書,實(shí)戰(zhàn)性很強(qiáng),沒有那么多的廢話,當(dāng)然這本書不是給初學(xué)者看的,而是給有一定工作經(jīng)驗(yàn)的人看的。簡介中說270多頁,結(jié)果收到貨竟然是400多頁的,短時(shí)間內(nèi)是看不完了。
  •   這本書是給有plsql有經(jīng)驗(yàn)的人看得,初學(xué)者不要買這本。書比較薄,價(jià)格不厚道啊
  •   本書無論是紙張質(zhì)量,還是書中內(nèi)容都是飛常不錯(cuò)的。而且發(fā)速度夠快
  •   這本書寫的不錯(cuò),正是我要找的書!贊一下??!
  •   很好,講得比較細(xì),講到一些別的書沒有的東西
  •   絕對正品,書的質(zhì)量很好,內(nèi)容很好。
  •   書還可以,暫時(shí)還沒有看,等這本結(jié)束了馬上看
  •   很好的書,幫同事買的
  •   內(nèi)容很到位,很有實(shí)戰(zhàn)價(jià)值。值得學(xué)習(xí)。
  •   這個(gè)書70塊,著實(shí)有點(diǎn)貴,但內(nèi)容畢竟還可以
  •   書內(nèi)容不錯(cuò)。 送貨速度快。
  •   雖然貴些,但內(nèi)容確實(shí)值這么多銀子,精彩!
  •   這本書不錯(cuò),正在學(xué)習(xí)。
  •   這本書不錯(cuò)滴。
  •   東西不錯(cuò),以后會繼續(xù)合作
  •   配合著邁克爾唐納的《精通PLSQL》看,相得益彰。
  •   內(nèi)容不錯(cuò),就是價(jià)格稍漲了點(diǎn)兒,幾天前看是75折,買的時(shí)候變八折了
  •   還沒來的急看,應(yīng)該不會太差...
  •   不推薦新手讀
  •   書還沒時(shí)間看.看了一下目錄.暫時(shí)給滿分吧
  •   比較枯燥,可能有些東西還沒用到,不如想象中好
  •   代碼錯(cuò)誤較多,雖然有譯者指正,但是看起來還是很費(fèi)勁
  •   看過英文版,里面的內(nèi)容很詳細(xì)
  •   對搞pl/sql的人來說絕對是一本好書,里面的東西很不錯(cuò)!
  •   紙張質(zhì)量不錯(cuò),比另一本W(wǎng)CF服務(wù)編程第三版好很多,抽了幾個(gè)感興趣的章節(jié)看了,受益非淺,值得擁有!
  •   圖書內(nèi)容不錯(cuò)。。
  •   確實(shí)不錯(cuò),推薦購買
  •   一本不落
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7