劍破冰山

出版時(shí)間:2011-1  出版社:電子工業(yè)  作者:盧濤  頁(yè)數(shù):520  
Tag標(biāo)簽:無(wú)  

前言

本書(shū)是ITPUB技術(shù)叢書(shū)中第一本專(zhuān)注于Oracle開(kāi)發(fā)的書(shū)籍。長(zhǎng)久以來(lái),數(shù)據(jù)庫(kù)后臺(tái)開(kāi)發(fā)一直是應(yīng)用開(kāi)發(fā)行業(yè)的一項(xiàng)核心工作,能否正確設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)的架構(gòu),并寫(xiě)出合理、高效的SQL,決定了一個(gè)應(yīng)用的效能,也在相當(dāng)大的程度上影響了項(xiàng)目的成敗。而在表象的背后,數(shù)據(jù)庫(kù)開(kāi)發(fā)又遠(yuǎn)遠(yuǎn)不止表面看到的那么簡(jiǎn)單,用作者們的話來(lái)說(shuō)只是冰山一角。除了SQL或PL/SQL以外,我們還可能面對(duì)算法、架構(gòu)、規(guī)范等問(wèn)題。作者們都曾經(jīng)在各行業(yè)的第一線戰(zhàn)斗過(guò),長(zhǎng)期從事數(shù)據(jù)庫(kù)開(kāi)發(fā)各個(gè)方面各種細(xì)節(jié)的工作,由他們?nèi)シ窒?0多年來(lái)的心得,對(duì)于讀者來(lái)說(shuō)是極好的知識(shí)共享。以前ITUB技術(shù)叢書(shū)中有許多關(guān)于數(shù)據(jù)庫(kù)管理的內(nèi)容,由于所提供的案例許多屬于極端而難以重現(xiàn),但這本書(shū)里的很多例子,讀者都可以很簡(jiǎn)單地重現(xiàn)并且自我嘗試,領(lǐng)會(huì)其中的精粹,這也是本書(shū)和以前DBA方面書(shū)籍的一大差異之處。我和本書(shū)的作者們大多在ITPUB上相識(shí)了很長(zhǎng)時(shí)間,他們都是具有豐富行業(yè)經(jīng)驗(yàn)的專(zhuān)家,也非常熱心。蘇旭暉(newkid)和盧濤Oracle是開(kāi)發(fā)方面的行家,記得當(dāng)初我在社區(qū)里推崇JoeCelko的《S0LipuzzlesandAnswers》一書(shū),結(jié)果newkid很快指出這本書(shū)里的例子的很多錯(cuò)誤或者愚笨之處,還專(zhuān)門(mén)給出一個(gè)帖子來(lái)指出書(shū)中的錯(cuò)誤,讓人嘆服。他對(duì)技術(shù)精益求精,非常關(guān)心國(guó)內(nèi)的開(kāi)發(fā)社團(tuán),解決了許多網(wǎng)友提出的疑難的實(shí)際問(wèn)題,還經(jīng)常訂購(gòu)國(guó)內(nèi)原創(chuàng)的技術(shù)書(shū)籍。有一次newkid君在論壇上出了一道用SQL去求解四皇后問(wèn)題的題,不久oo就給出了答案,我才第一次知道SQL除了可以用來(lái)查詢數(shù)據(jù)外,還可以有這樣的用途。王保強(qiáng)(bqwang)、懷曉明(1astwinner)是:[TPUB中的元老級(jí)會(huì)員,bq在項(xiàng)目管理、數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、系統(tǒng)wang架構(gòu)應(yīng)用上很有經(jīng)驗(yàn),在過(guò)去幾年中一直擔(dān)任大型開(kāi)發(fā)項(xiàng)目的manager,而lastwirmer在應(yīng)用測(cè)試和編碼上的能力讓人印象深刻,他是那種天生對(duì)問(wèn)題有靈敏嗅覺(jué)的人,解決問(wèn)題的能力非常強(qiáng),并帶隊(duì)完成了幾個(gè)大型開(kāi)發(fā)項(xiàng)目。丁?。╠ingiunl23)在電信領(lǐng)域有多年系統(tǒng)架構(gòu)設(shè)計(jì)和管理經(jīng)驗(yàn),對(duì)Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)很有研究,梁敬彬(wabit123)對(duì)數(shù)據(jù)庫(kù)管理、設(shè)計(jì)、開(kāi)發(fā)均有較為深入的研究,同時(shí)有著多年的電信行業(yè)相關(guān)經(jīng)驗(yàn)和豐富的培訓(xùn)經(jīng)驗(yàn),二人在社區(qū)中積極熱心幫助別人解決疑難問(wèn)題,并總結(jié)了很多精華內(nèi)容,得到社區(qū)大眾的認(rèn)可。賈書(shū)民則早在20年前就開(kāi)始使用Oracle數(shù)據(jù)庫(kù),參加了多個(gè)國(guó)家級(jí)項(xiàng)目的設(shè)計(jì)和開(kāi)發(fā),技術(shù)功底與行業(yè)經(jīng)驗(yàn)相當(dāng)豐厚。由這么多高手嘔心瀝血寫(xiě)出來(lái)的經(jīng)驗(yàn)之作,我相信一定能讓讀者讀后有所裨益。最后我要說(shuō)從2004年ITPUB第一本技術(shù)圖書(shū)面世以來(lái),6年過(guò)去了,叢書(shū)也出版到第10本。2001年9月ITPUB剛剛建立的時(shí)候,會(huì)員只有一萬(wàn)多人,經(jīng)過(guò)9年的發(fā)展,ITPIJB已擁有技術(shù)板塊100多個(gè),注冊(cè)會(huì)員數(shù)量超過(guò)240萬(wàn),每天更新的討論帖數(shù)以萬(wàn)計(jì)。感謝蘇旭暉、盧濤、王保強(qiáng)、懷曉明、梁敬彬、丁俊、賈書(shū)民在ITPUm即將步入第10個(gè)年頭的時(shí)候,創(chuàng)作了這本重量級(jí)的技術(shù)圖書(shū)。ITPUB的發(fā)展與這樣的專(zhuān)家、第一線技術(shù)工作者的長(zhǎng)期支持是分不開(kāi)的,真摯感謝你們對(duì)ITPUB的支持!

內(nèi)容概要

Oracle數(shù)據(jù)庫(kù)是目前市場(chǎng)占有率最高的商業(yè)數(shù)據(jù)庫(kù),功能非常強(qiáng)大,隨著Oracle管理工具的智能化,如Oracle
EM提供了強(qiáng)大的管理和調(diào)優(yōu)功能,Oracle
DBA的管理工作逐漸趨于簡(jiǎn)單化。正因?yàn)槿绱?,?dāng)前國(guó)內(nèi)Oracle開(kāi)發(fā)人員的崗位需求大幅度增加,投身Oracle開(kāi)發(fā)的人數(shù)也日益增多。
一個(gè)好的Oracle開(kāi)發(fā)人員不僅要知道一些基本語(yǔ)法和常見(jiàn)用法,還需要知道何時(shí)用、如何用、怎么避免相關(guān)誤區(qū)、寫(xiě)出高質(zhì)量的代碼。本書(shū)面向有Oracle使用經(jīng)驗(yàn)或有其他數(shù)據(jù)庫(kù)使用經(jīng)驗(yàn)的人,重點(diǎn)講述利用好Oracle的特色功能進(jìn)行高效開(kāi)發(fā)的思路和技巧,幫助讀者快速掌握中高級(jí)Oracle開(kāi)發(fā)技術(shù)。
本書(shū)主要覆蓋Oracle開(kāi)發(fā)必備的重要知識(shí)點(diǎn):數(shù)據(jù)庫(kù)編程規(guī)范、Oracle開(kāi)發(fā)常用工具及使用、MERGE方法、神秘的NULL和討厭的CHAR、擴(kuò)展GROUP
BY、Oracle自動(dòng)類(lèi)型轉(zhuǎn)換、Oracle分析函數(shù)、Oracle層次查詢、11g
R2新特性之遞歸WITH編程、動(dòng)態(tài)SQL擴(kuò)展。此外還有大量案例:Where In
List問(wèn)題解析,數(shù)據(jù)庫(kù)設(shè)計(jì)和大數(shù)據(jù)量處理、數(shù)據(jù)審核、號(hào)段選取應(yīng)用、分析SQL執(zhí)行計(jì)劃的關(guān)注點(diǎn)、Oracle開(kāi)發(fā)誤區(qū)探索、提升PL/SQL開(kāi)發(fā)性能漫談、管道函數(shù)的學(xué)習(xí)與實(shí)戰(zhàn)應(yīng)用、巧用鎖特性避免重復(fù)啟動(dòng)同一程序、不可能的任務(wù)?超越Oracle等。
本書(shū)作者均有多年Oracle開(kāi)發(fā)管理實(shí)戰(zhàn)經(jīng)驗(yàn),他們期望以自己的經(jīng)驗(yàn)和教訓(xùn),分享分析和解決問(wèn)題的方法,探討如何用相關(guān)的技術(shù)去解決特定的需求。希望讀者在看完本書(shū)后,能受到良好的啟迪,進(jìn)而能極大地提升自己在Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)方面的能力!

作者簡(jiǎn)介

盧濤,ITPUB Oracle開(kāi)發(fā)版版主,15年IT工作經(jīng),2004年任高級(jí)工程師,在某數(shù)據(jù)管理中心任職系統(tǒng)分析師;曾參與數(shù)次全國(guó)數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。在軟件開(kāi)發(fā)、數(shù)據(jù)庫(kù)開(kāi)發(fā)和優(yōu)化、系統(tǒng)架構(gòu)、項(xiàng)目管理方面有一定研究。王保強(qiáng),ITPUB數(shù)據(jù)倉(cāng)庫(kù)和MS SQL Setver版版主,曾獲1TPUB最佳博客和ITPUB數(shù)據(jù)庫(kù)大版最佳版主。11年IT工作經(jīng)驗(yàn),曾在多家國(guó)內(nèi)外IT知名企業(yè)任職,在數(shù)據(jù)庫(kù)開(kāi)發(fā)和優(yōu)化、數(shù)據(jù)倉(cāng)庫(kù)、系統(tǒng)架構(gòu)、項(xiàng)目管理、Web20方面有一定研究。懷曉明,ITPUB 0racIe開(kāi)發(fā)版等版塊版主,獲得第一屆ITPUB最佳建議獎(jiǎng)。在多個(gè)大型IT企業(yè)多年的工作歷練中,積累了大量的系統(tǒng)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),擅長(zhǎng)數(shù)據(jù)庫(kù)和Web的設(shè)計(jì)、開(kāi)發(fā),精于故障診斷與處理,具有豐富的省部級(jí)電子政務(wù)行業(yè)工作經(jīng)驗(yàn)及項(xiàng)目管理經(jīng)驗(yàn)。賈書(shū)民,1988年畢業(yè)于中國(guó)人民大學(xué)信息系,1991年獲得高級(jí)程序員資格,1998年任高級(jí)IT程師。多年來(lái),從事UNIX系統(tǒng)管理、數(shù)據(jù)庫(kù)系統(tǒng)管理與設(shè)計(jì)、統(tǒng)計(jì)數(shù)據(jù)處理軟件開(kāi)發(fā)等工作,主持了河北省多項(xiàng)大型普查的數(shù)據(jù)處理工作,曾參加了多個(gè)國(guó)家級(jí)項(xiàng)目的設(shè)計(jì)和開(kāi)發(fā)。

書(shū)籍目錄

第1章 大話數(shù)據(jù)庫(kù)編程規(guī)范 1
1.1 編程規(guī)范概述 1
1.2 書(shū)寫(xiě)規(guī)范 2
1.2.1 大小寫(xiě)風(fēng)格 2
1.2.2 縮進(jìn)風(fēng)格 2
1.2.3 空格及換行 3
1.2.4 其他 4
1.3 命名規(guī)范 4
1.3.1 表和字段命名規(guī)范 4
1.3.2 其他對(duì)象命名 5
1.4 變量命名 7
1.5 注釋規(guī)范 8
1.6 語(yǔ)法規(guī)范 9
1.7 腳本規(guī)范 12
規(guī)則1.7.1 13
規(guī)則1.7.2 13
規(guī)則1.7.3 13
第2章 Oracle開(kāi)發(fā)常用工具及使用 14
2.1 AWR工具與性能優(yōu)化 14
2.1.1 AWR介紹 14
2.1.2 AWR的安裝與配置 15
2.1.3 AWR報(bào)表使用 15
2.1.4 分析AWR報(bào)表基本思路 17
2.1.5 案例 17
2.2 SQL_TRACE/10046事件 24
2.2.1 SQL_TRACE/10046事件是什么 24
2.2.2 總體流程介紹 24
2.2.3 SQL_TRACE/10046事件具體使用方法 24
2.2.4 案例分析 28
2.2.5 小結(jié) 32
2.3 計(jì)時(shí)和剖析工具 32
2.3.1 PLSQL_PROFILER概述 34
2.3.2 剖析舉例 37
2.3.3 安全性 45
第3章 探索MERGE方法 46
3.1 MERGE是什么 46
3.2 Oracle 10g中MERGE的完善 48
3.2.1 UPDATE和INSERT動(dòng)作可只出現(xiàn)其一 48
3.2.2 可對(duì)MERGE語(yǔ)句加條件 48
3.2.3 可用DELETE子句清除行 49
3.2.4 可采用無(wú)條件方式INSERT 49
3.3 MERGE誤區(qū)探索 49
3.3.1 無(wú)法在源表中獲得一組穩(wěn)定的行 49
3.3.2 DELETE子句的WHERE順序必須在最后 51
3.3.3 DELETE 子句只可以刪除目標(biāo)表,而無(wú)法刪除源表 52
3.3.4 更新同一張表的數(shù)據(jù),需擔(dān)心USING的空值 53
3.4 MERGE的巧妙運(yùn)用 54
第4章 神秘的NULL和令人討厭的CHAR 58
4.1 神秘的NULL 59
4.1.1 NULL概述 59
4.1.2 NULL與函數(shù) 64
4.1.3 NULL與索引 79
4.1.4 NULL與SQL 87
4.1.5 NULL與PL/SQL 97
4.1.6 再談NULL和空字符串區(qū)別 101
4.1.7 NULL總結(jié) 101
4.2 令人討厭的CHAR 102
4.2.1 CHAR與VARCHAR2基礎(chǔ) 102
4.2.2 CHAR與SQL 105
4.2.3 CHAR與綁定變量 109
4.2.4 CHAR與PL/SQL 111
4.2.5 CHAR總結(jié) 112
第5章 報(bào)表開(kāi)發(fā)之?dāng)U展GROUP BY 113
5.1 擴(kuò)展GROUP BY概述 113
5.2 ROLLUP 114
5.2.1 UNION ALL實(shí)現(xiàn)ROLLUP功能 114
5.2.2 ROLLUP分組 116
5.2.3 部分ROLLUP分組 120
5.2.4 ROLLUP總結(jié) 121
5.3 CUBE 121
5.3.1 CUBE分組 121
5.3.2 部分CUBE分組 123
5.3.3 CUBE總結(jié) 124
5.4 GROUPING SETS實(shí)現(xiàn)小計(jì) 124
5.4.1 GROUPING SETS分組 124
5.4.2 部分GROUPING SETS分組 126
5.4.3 CUBE、ROLLUP作為GROUPING SETS的參數(shù) 126
5.4.4 GROUPING SETS總結(jié) 128
5.5 組合列分組、連接分組、重復(fù)列分組 128
5.5.1 組合列分組 130
5.5.2 連接分組 132
5.5.3 重復(fù)列分組 134
5.5.4 組合列分組、連接分組、重復(fù)列分組總結(jié) 134
5.6 3個(gè)擴(kuò)展分組函數(shù):GROUPING、GROUPING_ID、GROUP_ID 135
5.6.1 GROUPING函數(shù) 135
5.6.2 GROUPING_ID函數(shù) 138
5.6.3 GROUP_ID函數(shù) 142
5.6.4 擴(kuò)展GROUP BY函數(shù)總結(jié) 144
5.7 擴(kuò)展分組綜合實(shí)例 144
第6章 探索Oracle自動(dòng)類(lèi)型轉(zhuǎn)換 149
6.1 為什么不建議使用自動(dòng)類(lèi)型轉(zhuǎn)換 150
6.2 自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則 156
6.3 自動(dòng)類(lèi)型轉(zhuǎn)換常見(jiàn)錯(cuò)誤 166
第7章 Where in list問(wèn)題解析 169
7.1 問(wèn)題引入:動(dòng)態(tài)SQL構(gòu)造 170
7.2 使用正則表達(dá)式解決 172
7.3 使用常規(guī)字符串函數(shù)及動(dòng)態(tài)視圖 173
7.4 使用集合構(gòu)造偽表 176
7.5 Where in list性能問(wèn)題 178
7.6 Where in list問(wèn)題總結(jié) 188
第8章 例說(shuō)數(shù)據(jù)庫(kù)表設(shè)計(jì)和大量數(shù)據(jù)處理方法 189
8.1 根據(jù)業(yè)務(wù)需求規(guī)劃表結(jié)構(gòu) 189
8.2 主鍵的確定 195
8.3 表的拆分、合并及數(shù)據(jù)的規(guī)范和反規(guī)范化 199
8.4 數(shù)據(jù)類(lèi)型的選擇 199
8.5 表的分區(qū) 203
8.6 表的壓縮 203
8.7 抽取數(shù)據(jù) 205
8.7.1 利用SQL*PLUS的SPOOL功能 205
8.7.2 利用UTL_FILE 207
8.7.3 利用第三方工具 207
8.8 轉(zhuǎn)換數(shù)據(jù) 207
8.8.1 數(shù)據(jù)的增刪改 208
8.8.2 數(shù)據(jù)匯總 211
8.9 加載數(shù)據(jù) 227
8.9.1 利用SQLLDR加載 227
8.9.2 利用外部表加載 229
8.9.3 利用數(shù)據(jù)庫(kù)鏈接加載 233
8.9.4 利用分區(qū)交換技術(shù)加載 234
8.10 邏輯導(dǎo)入/導(dǎo)出數(shù)據(jù) 240
第9章 數(shù)據(jù)審核 242
9.1 審核的分類(lèi) 242
9.2 列審核設(shè)計(jì) 243
9.2.1 直接使用SQL語(yǔ)句 245
9.2.2 提高審核效率 248
9.2.3 管理審核關(guān)系 254
9.2.4 單個(gè)列的復(fù)雜審核 257
9.3 行審核設(shè)計(jì) 258
9.3.1 重碼的審核 259
9.3.2 直接使用SQL語(yǔ)句 260
9.3.3 管理審核關(guān)系 261
9.3.4 行間包含四則運(yùn)算的審核思路 266
9.3.5 更復(fù)雜的行間審核思路 267
9.4 小結(jié) 267
第10章 趣談Oracle分析函數(shù) 269
10.1 概述 269
10.2 函數(shù)語(yǔ)法 270
10.3 函數(shù)列表 276
10.4 函數(shù)用法 277
10.4.1 最常見(jiàn)的分析函數(shù)應(yīng)用場(chǎng)景 279
10.4.2 ROWS的具體用法 280
10.4.3 RANGE的具體用法 281
10.4.4 KEEP的用法 283
10.5 函數(shù)功能詳解 284
10.5.1 統(tǒng)計(jì)函數(shù) 284
10.5.2 排序函數(shù) 285
10.5.3 數(shù)據(jù)分布函數(shù) 287
10.5.4 統(tǒng)計(jì)分析函數(shù) 289
10.6 分析函數(shù)在BI及統(tǒng)計(jì)上的應(yīng)用 290
10.6.1 現(xiàn)狀分析 290
10.6.2 發(fā)展分析 297
10.7 自定義聚集函數(shù) 298
10.7.1 自定義聚集函數(shù)接口簡(jiǎn)介 298
10.7.2 應(yīng)用場(chǎng)景一:字符串聚集 299
10.7.3 應(yīng)用場(chǎng)景二:指數(shù)移動(dòng)平均線 301
第11章 Oracle層次查詢 305
11.1 概述 305
11.2 樣例數(shù)據(jù) 306
11.3 CONNECT BY和START WITH查詢 306
11.3.1 概述 306
11.3.2 基本語(yǔ)法 306
11.3.3 樣例 308
11.4 SYS_CONNECT_BY_PATH函數(shù) 313
11.5 WMSYS.WM_CONCAT非公開(kāi)函數(shù) 314
第12章 號(hào)段選取應(yīng)用 316
12.1 問(wèn)題的提出 316
12.2 相關(guān)基礎(chǔ)知識(shí) 317
12.2.1 偽列rownum和level 317
12.2.2 利用層次查詢構(gòu)造連續(xù)的數(shù) 317
12.2.3 用lead和lag獲得相鄰行的字段值 318
12.3 解決問(wèn)題 320
12.3.1 已知號(hào)碼求號(hào)段 320
12.3.2 根據(jù)號(hào)段求出包含的數(shù) 324
12.3.3 求缺失的號(hào) 326
12.3.4 求尚未使用的號(hào)段 330
12.4 小結(jié) 334
第13章 分析SQL執(zhí)行計(jì)劃的關(guān)注點(diǎn) 335
13.1 返回行與邏輯讀的比率 335
13.2 聚合查詢 338
13.3 返回行的數(shù)量 341
13.4 Oracle預(yù)測(cè)行準(zhǔn)確與否 342
13.5 Predicate Information 346
13.6 動(dòng)態(tài)采樣 348
13.7 誰(shuí)是主要矛盾 349
第14章 Oracle開(kāi)發(fā)誤區(qū)探索 352
14.1 避免對(duì)列運(yùn)算 352
14.2 消除隱式轉(zhuǎn)換 354
14.3 關(guān)注空格 354
14.4 存儲(chǔ)過(guò)程與權(quán)限 355
14.5 提防DDL提交事務(wù) 357
14.6 Insert into 錯(cuò)誤 359
14.7 關(guān)于or 360
14.8 sequence中的cache 361
14.9 樹(shù)形查詢易錯(cuò)處 364
14.10 小心保留字 367
14.11 函數(shù)索引陷阱 371
14.12 外連接陷阱 374
14.13 標(biāo)量子查詢 375
第15章 提升PL/SQL開(kāi)發(fā)性能漫談 378
15.1 重視解析 378
15.1.1 觸發(fā)器盡量考慮內(nèi)部代碼過(guò)程封裝 378
15.1.2 避免動(dòng)態(tài)SQL 380
15.1.3 OLTP系統(tǒng)中盡量使用綁定變量 382
15.2 關(guān)注調(diào)用 384
15.2.1 減少對(duì)sysdate的調(diào)用 384
15.2.2 避免對(duì)mod函數(shù)的調(diào)用 385
15.2.3 設(shè)法減少表掃描次數(shù) 386
15.2.4 避免SQL中的函數(shù)調(diào)用 391
15.3 簡(jiǎn)潔為王 395
15.3.1 盡量用簡(jiǎn)單SQL替代PL/SQL邏輯 395
15.3.2 避免不必要的排序 397
15.3.3 利用Oracle現(xiàn)有功能 399
15.4 細(xì)致入微 400
15.4.1 使用pls_integer類(lèi)型 400
15.4.2 避免數(shù)據(jù)類(lèi)型轉(zhuǎn)換 400
15.4.3 IF的順序有講究 402
15.4.4 設(shè)計(jì)開(kāi)發(fā)對(duì)列是否為空慎重決定 404
15.4.5 分布式應(yīng)用開(kāi)發(fā)不可不知的HINT(driving_site) 407
第16章 管道函數(shù)的學(xué)習(xí)與實(shí)戰(zhàn)應(yīng)用 410
16.1 管道函數(shù)編寫(xiě)要點(diǎn) 410
16.2 功能描述及案例 411
16.2.1 可直接用TABLE()操作符方式輸出結(jié)果集 411
16.2.2 結(jié)果集可作為表來(lái)使用,直接和其他表相關(guān)聯(lián) 411
16.2.3 實(shí)現(xiàn)實(shí)時(shí)跟蹤 412
16.3 管道函數(shù)注意點(diǎn) 414
16.3.1 清楚管道函數(shù)只是表函數(shù)的一種 414
16.3.2 管道函數(shù)與DML 415
16.3.3 管道函數(shù)集合的限制 416
16.3.4 與管道函數(shù)相關(guān)的異常NO_DATA_NEEDED 417
第17章 巧用鎖特性避免重復(fù)啟動(dòng)同一程序 420
17.1 基本技巧介紹 420
17.2 原理介紹 422
17.3 程序代碼 423
17.4 測(cè)試 426
17.5 需要注意的點(diǎn) 427
第18章 11g R2 新特性之遞歸with編程精粹 428
18.1 上下級(jí)關(guān)系 429
18.2 構(gòu)造數(shù)列 435
18.3 排列組合問(wèn)題 441
18.4 沿路徑計(jì)算 457
18.5 國(guó)際SQL挑戰(zhàn)賽 473
第19章 不可能的任務(wù)?超越Oracle 479
19.1 為何選擇cube 480
19.1.1 cube簡(jiǎn)介 480
19.1.2 cube優(yōu)勢(shì) 480
19.1.3 測(cè)試環(huán)境 481
19.2 newkid的設(shè)計(jì)思路和優(yōu)化步驟 482
19.2.1 一次掃描求出16種分組 482
19.2.2 一次掃描求出1種分組,并基于此再一次掃描求出其余分組 484
19.2.3 一次掃描求出1種分組,并基于此再多次分層累計(jì)求出其余分組 485
19.2.4 變量長(zhǎng)度和類(lèi)型的優(yōu)化 487
19.3 為何選擇OCI 488
19.3.1 匯總算法的翻譯和改進(jìn) 488
19.3.2 輸入和輸出的實(shí)現(xiàn)和改進(jìn) 489
19.3.3 不要忽視物理存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)操作的影響 490
19.3.4 不成功的優(yōu)化教訓(xùn) 490
19.4 總結(jié) 493
第20章 動(dòng)態(tài)SQL擴(kuò)展 494
20.1 動(dòng)態(tài)SQL用途和應(yīng)用場(chǎng)景 494
20.2 EXECUTE IMMEDIATE語(yǔ)法 495
20.2.1 執(zhí)行DDL、DCL語(yǔ)句 495
20.2.2 構(gòu)造通用SQL處理 496
20.2.3 執(zhí)行復(fù)雜業(yè)務(wù)邏輯查詢 498
20.2.4 綁定變量 502
20.2.5 BULK COLLECT動(dòng)態(tài)SQL 505
20.3 使用DBMS_SQL包 507
20.3.1 DBMS_SQL函數(shù)和過(guò)程說(shuō)明 507
20.3.2 DBMS_SQL執(zhí)行步驟 508
20.3.3 DBMS_SQL應(yīng)用場(chǎng)景 509
20.3.4 DBMS_SQL與EXECUTE IMMEDIATE比較 509
后記 511

章節(jié)摘錄

插圖:(1)許多開(kāi)發(fā)者在Oracle數(shù)據(jù)庫(kù)中建立后臺(tái)進(jìn)程從管道(一種數(shù)據(jù)庫(kù):IPC機(jī)制)讀消息,這些后臺(tái)進(jìn)程執(zhí)行管道消息中包含SQL,并提交工作。這樣做是為了在事務(wù)中執(zhí)行審計(jì)。即使更大的事務(wù)(父事務(wù))回滾了,這個(gè)事務(wù)(子事務(wù))也不會(huì)回滾。但是實(shí)際上Oracle自治事務(wù)的特性已經(jīng)提供了此功能。自治事務(wù)只需要一行代碼,但是那個(gè)后臺(tái)進(jìn)行為了實(shí)現(xiàn)這個(gè)功能卻寫(xiě)了大量代碼。(2)某些開(kāi)發(fā)者在插入某張表的時(shí)候,為了確保某列的順序唯一性,采用插入variable+1的方式。但是遇到了問(wèn)題,系統(tǒng)經(jīng)常出現(xiàn)主鍵沖突錯(cuò)誤。這是因?yàn)橄到y(tǒng)是高度并發(fā)的,插入的數(shù)據(jù)用varaible+l的形式經(jīng)常會(huì)出現(xiàn)重復(fù)值。為此,建議使用Oracle自帶的工具sequence,它插入的時(shí)候會(huì)自動(dòng)進(jìn)行判斷,所以不會(huì)出現(xiàn)重復(fù)值,而且sequence使用cache,還能極大地提高性能。(3)某些開(kāi)發(fā)者在過(guò)程腳本中使用了create table temp,隨后往temp表插入數(shù)據(jù),最后又執(zhí)行了tnmcate table temp。可以看出,該temp表是被用來(lái)作為中間表臨時(shí)存儲(chǔ)數(shù)據(jù)的,處理完后就被刪除了。該過(guò)程腳本中出現(xiàn)大量類(lèi)似的語(yǔ)句,由于并發(fā)問(wèn)題,經(jīng)常出現(xiàn)表沖突或數(shù)據(jù)沖突的錯(cuò)誤,執(zhí)行速度也不快。其實(shí)只要將create table temp改為create global temporary table,也就是生成Oralce真正的臨時(shí)表,就能解決該問(wèn)題。因?yàn)闊o(wú)論是基于會(huì)話還是基于事務(wù)的模式,其余會(huì)話都看不到這個(gè)表的數(shù)據(jù)存在,各個(gè)會(huì)話都可以跑這個(gè)過(guò)程,或使用同樣的臨時(shí)表名,但是絕對(duì)不會(huì)出現(xiàn)沖突。而且,在會(huì)話或事務(wù)結(jié)束后,該表數(shù)據(jù)自動(dòng)會(huì)清零,根本無(wú)須去手動(dòng)tnlncate。

后記

談OracIe開(kāi)發(fā)學(xué)習(xí)方法和學(xué)習(xí)經(jīng)歷Oracle開(kāi)發(fā)學(xué)習(xí)方法感謝大家閱讀本書(shū),如果你能中本書(shū)從獲取一些有用的知識(shí),這是對(duì)我們最大的鼓舞。在全書(shū)內(nèi)容完畢之際,還是老生常談,長(zhǎng)篇大論一番Oracle開(kāi)發(fā)的學(xué)習(xí)方法,本部分最后會(huì)精選相關(guān)作者的學(xué)習(xí)經(jīng)歷供大家參考。雖然本書(shū)主要內(nèi)容是偏向于開(kāi)發(fā)的,但是若想深入Oracle管理或開(kāi)發(fā),要經(jīng)歷的過(guò)程是很相似的,Oracle知識(shí)體系龐大,如何有選擇地學(xué)習(xí)Oracle的核心內(nèi)容是非常重要的,只有掌握了Oracle的核心內(nèi)容,才有可能更好地學(xué)習(xí)Oracle的其他內(nèi)容。下面總結(jié)一下作者們的學(xué)習(xí)方法,以及學(xué)習(xí)過(guò)程中的一些思考,與君共勉(為了表述需要,前4點(diǎn)以第一人稱“我”來(lái)敘述)。1.官方文檔是王道在學(xué)習(xí)某一門(mén)技術(shù)過(guò)程中,首要必須先強(qiáng)調(diào)其官方文檔的重要性。官方文檔對(duì)這門(mén)技術(shù)會(huì)有比較全面和權(quán)威的闡述,如果開(kāi)發(fā)人員或管理人員想當(dāng)然地認(rèn)為這門(mén)技術(shù)就應(yīng)該提供某種功能,那么是不準(zhǔn)確的。

編輯推薦

《劍破冰山:Oracle開(kāi)發(fā)藝術(shù)》:ITPUB提供的主要資源:1.速度極快的論壇,多線路。高帶寬,高穩(wěn)定,方便各種線路條件的網(wǎng)友聚集討論問(wèn)題;2為每位注冊(cè)會(huì)員提供免費(fèi)的BLOG空問(wèn),可以最大限度地支持自定義模板風(fēng)格;3定期在全國(guó)各大城市舉辦免費(fèi)技術(shù)沙龍,為網(wǎng)友提供線下交流機(jī)會(huì);4定期在全國(guó)各大城市舉辦技術(shù)培訓(xùn),為網(wǎng)友提供提升個(gè)人價(jià)值的空間;5豐富的資料、軟件、電子文檔下載資源,幫助大家快速完成各項(xiàng)工作;6ITPUB出版的電子雜志和紙介質(zhì)的技術(shù)叢書(shū)系列,匯集IT前沿的第一手經(jīng)驗(yàn)心得,是從業(yè)人員的寶貴參考資料。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    劍破冰山 PDF格式下載


用戶評(píng)論 (總計(jì)47條)

 
 

  •   目前市面上能夠買(mǎi)到的Oracle開(kāi)發(fā)類(lèi)的書(shū)籍都很初級(jí),講講SQL語(yǔ)法、數(shù)據(jù)結(jié)構(gòu)啦,而這本書(shū)包含了作者多年來(lái)對(duì)Oracle開(kāi)發(fā)技術(shù)的開(kāi)發(fā)工作經(jīng)驗(yàn),更難得的是書(shū)中很多例子都是真實(shí)的案例,閱讀的過(guò)程彷佛就是在與高手一起解決問(wèn)題的過(guò)程,值得一讀!
  •   能提升不少對(duì)oracle初級(jí)應(yīng)用的能力,對(duì)于進(jìn)階有很大的好處
  •   書(shū)拿到手,大致看了一下,不太適合初學(xué)者看,有一定的深度,從編碼規(guī)范開(kāi)始說(shuō)起,對(duì)有一定數(shù)據(jù)庫(kù)開(kāi)發(fā)經(jīng)驗(yàn)的人來(lái)說(shuō),值得入手,但是紙張有點(diǎn)。。。呵呵
  •   帶有示例的SQL開(kāi)發(fā)的經(jīng)驗(yàn)介紹,值得閱讀,推薦。
  •   講的很不錯(cuò),個(gè)人因?yàn)槠綍r(shí)接觸SQL優(yōu)化比較少,習(xí)慣差,這本書(shū)到處都 在從性能分析,對(duì)培養(yǎng)習(xí)慣有好處,也很喜歡分析函數(shù)這一部分內(nèi)容,比較新
  •   看看陣容倒是蠻強(qiáng)大
  •   因?yàn)樽髡邆兊臒o(wú)私幫助采買(mǎi)書(shū)的,書(shū)寫(xiě)的也挺好的,贊
  •   內(nèi)容大致瀏覽下,比較貼近實(shí)戰(zhàn)!送貨速度真是太快了,昨天下單,今天就收到了!
  •   很贊的書(shū),編寫(xiě)這本書(shū)的人,也都是論壇上的熱心人,很好。
  •   還沒(méi)看,朋友有一本,挺不錯(cuò)的
  •   一直在看,反復(fù)看了好幾遍。
  •   書(shū)很實(shí)踐性
  •   dadaw
  •   好書(shū),值得一看,眾多大牛經(jīng)驗(yàn)談
  •   在圖書(shū)館看了四章,回家就下訂單了。好書(shū)值得好好口味。
  •   挺不錯(cuò),樸實(shí)耐用有內(nèi)容。
  •   此書(shū)適合對(duì)oacle有一定實(shí)踐經(jīng)驗(yàn)的讀者,對(duì)開(kāi)發(fā)有一定幫助。
  •   標(biāo)準(zhǔn)高效的開(kāi)發(fā),版主經(jīng)驗(yàn)的總結(jié),值得一讀
  •   大概翻了一下,里面的知識(shí)點(diǎn)介紹的很詳細(xì),如果想多SQL了解更多的話,可以看看這本書(shū),這本書(shū)中含有作者的經(jīng)驗(yàn),受益匪淺啊。
  •   看了下,還不錯(cuò),等后續(xù)看完再詳細(xì)評(píng)論
  •   大概看了下,還挺不錯(cuò)的
  •   終于買(mǎi)到了。在論壇上是不錯(cuò)的書(shū)呢。
  •   比較實(shí)用,有啟發(fā)
  •   單位訂購(gòu)的,感覺(jué)還可以吧
  •   宣傳的有點(diǎn)虛,各個(gè)章節(jié)呼應(yīng)很少,有拼湊的嫌疑,例子不夠生動(dòng),只是代碼的堆砌。
  •   粗略的看了一下,感覺(jué)章節(jié)連接不太好??赡苁嵌鄠€(gè)作者的原因吧
  •   送貨速度很快,但是書(shū)本紙張有點(diǎn)差啦
  •   封面都有點(diǎn)爛了。。。
  •   carolchong,你就是個(gè)托兒,在**也發(fā)同樣的評(píng)論。這本書(shū)和國(guó)內(nèi)多數(shù)oracle原創(chuàng)書(shū)籍有一樣的通病,詞不達(dá)意,語(yǔ)焉不詳。本書(shū)部分作者或許技術(shù)水平不錯(cuò),但是表達(dá)能力實(shí)在不敢恭維,讀起來(lái)極其晦澀;還有經(jīng)驗(yàn)值很多,但原理描述不清甚至根本不提,結(jié)論難以讓人信服。技術(shù)人員不能只顧埋頭寫(xiě)代碼,如果要寫(xiě)文章的話,真該在文字上下下功夫。
  •   說(shuō)不是太好,原因有三 1. 例子粗制濫造,感覺(jué)就像論壇中的帖子,應(yīng)付了事,不像是寫(xiě)書(shū); 2. 相信作者的技術(shù)功力,但寫(xiě)作水平不敢恭維 3. 這本書(shū)的排版不好,如同例子一樣粗糙
  •   carolchong,你就是個(gè)托兒。這本書(shū)和國(guó)內(nèi)多數(shù)oracle原創(chuàng)書(shū)籍有一樣的通病,詞不達(dá)意,語(yǔ)焉不詳。本書(shū)部分作者或許技術(shù)水平不錯(cuò),但是表達(dá)能力實(shí)在不敢恭維,讀起來(lái)極其晦澀;還有經(jīng)驗(yàn)值很多,但原理描述不清甚至根本不提,結(jié)論難以讓人信服。技術(shù)人員不能只顧埋頭寫(xiě)代碼,如果要寫(xiě)文章的話,真該在文字上下下功夫。
  •   去年買(mǎi)的,很喜歡,也很有意義,值得購(gòu)買(mǎi)學(xué)習(xí)
  •   梁老師的書(shū)都非常棒,干貨很多,講解也非常生動(dòng),收獲很大。
  •   里面涉及的不適合初學(xué)者
  •   首次在amazon上買(mǎi)書(shū),感覺(jué)挺好!寄送時(shí)間快,書(shū)的質(zhì)量挺好,寄送包裝都挺好!唯一的缺憾就是書(shū)皮撕開(kāi)了一個(gè)小口。
  •   一直沒(méi)時(shí)間仔細(xì)看,還算是可以吧
  •   剛剛到手,還沒(méi)看,大概就如目錄所描述,蠻好的,正是需要的
  •   ITPUB的經(jīng)典圖書(shū)。非常適合開(kāi)發(fā)人員閱讀,尤其是在oracle開(kāi)發(fā)道路上需要提升和突破的人!很有指導(dǎo)意義!
  •   這本書(shū)可能不會(huì)成為經(jīng)典,但作者絕對(duì)沒(méi)有糊弄讀者的意思,反而是希望讓讀者真正了解高端開(kāi)發(fā)的價(jià)值與意義。本人僅僅讀了二、三章,但不得不對(duì)博大精深的oracle開(kāi)發(fā)心生景仰啊。
  •   看了多半吧,不是全部都能消化,但是很多內(nèi)容確實(shí)寫(xiě)的很不錯(cuò),推薦購(gòu)買(mǎi)
  •   書(shū)有價(jià),知識(shí)無(wú)價(jià),好書(shū)
  •   很不錯(cuò),大師就是大SHI
  •   很好的Oracle書(shū)
  •   直接有很多SQL語(yǔ)句的。
  •   排版真亂
  •   ITPub論壇Oracle開(kāi)發(fā)板塊的精品
  •   很好 灰常值得一看
 

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

京ICP備13047387號(hào)-7