《OraclePL/SQL實戰》是2012年人民郵電出版社出版的圖書。
基本介紹
- 書名:Oracle PL/SQL實戰
- 譯者:盧 濤
- ISBN:9787115294852
- 頁數:436
- 定價:89.00元
- 出版社:人民郵電出版社
- 出版時間:2012-11
- 裝幀:平裝
- 副標題:Oracle PL/SQL實戰
內容介紹
作者介紹
作品目錄
第1章 避免誤用 1
1.1 逐行處理 1
1.2 嵌套的逐行處理 3
1.3 查找式查詢 5
1.4 對DUAL的過度訪問 8
1.4.1 日期的算術運算 8
1.4.2 訪問序列 9
1.4.3 填充主—從行 9
1.5 過多的函式調用 10
1.5.1 不必要的函式調用 10
1.5.2 代價高昂的函式調用 12
1.6 資料庫連結調用 14
1.7 過度使用觸發器 15
1.8 過度提交 15
1.9 過度解析 16
1.10 小結 16
第2章 動態SQL:處理未知 18
2.1 動態SQL的三種方式 19
2.1.1 本地動態SQL 19
2.1.2 動態游標 21
2.1.3 DBMS_SQL 25
2.2 動態思考的樣例 26
2.3 安全問題 30
2.4 性能和資源利用率 33
2.4.1 反模式 34
2.4.2 比較動態SQL的實現 35
2.5 對象的依賴關係 37
2.5.1 負面影響 37
2.5.2 正面影響 37
2.6 小結 38
第3章 PL/SQL和並行處理 39
3.1 為什麼需要並行處理 39
3.2 影響並行處理的定律 40
3.3 大數據的崛起 40
3.4 並行與分散式處理 41
3.5 並行硬體體系結構 41
3.6 確定目標 42
3.6.1 加速 42
3.6.2 按比例擴展 43
3.6.3 並行度 43
3.7 用於並行處理的候選工作負載 43
3.7.1 並行和OLTP 43
3.7.2 並行和非OLTP工作負載 44
3.8 MapReduce編程模型 44
3.9 在使用PL/SQL之前 45
3.10 可用於並行活動的進程 45
3.11 使用MapReduce的並行執行伺服器 46
3.11.1 管道表函式 46
3.11.2 指導 60
3.11.3 並行管道表函式小結 61
3.12 小結 61
第4章 警告和條件編譯 62
4.1 PL/SQL 警告 62
4.1.1 基礎 62
4.1.2 使用警告 63
4.1.3 升級警告為錯誤 67w4.1.4 忽略警告 68
4.1.5 編譯和警告 69
4.1.6 關於警告的結束語 72
4.2 條件編譯 72
4.2.1 基礎 72
4.2.2 正在運行代碼的哪部分 75
4.2.3 預處理代碼的好處 76
4.2.4 有效性驗證 78
4.2.5 控制編譯 80
4.2.6 查詢變數 81
4.2.7 關於條件編譯的結束語 82
4.3 小結 84
第5章 PL/SQL單元測試 85
5.1 為什麼要測試代碼 85
5.2 什麼是單元測試 86
5.2.1 調試還是測試 86
5.2.2 建立測試的時機 86
5.3 單元測試構建工具 87
5.3.1 utPLSQL:使用命令行代碼 87
5.3.2 Quest Code Tester for Oracle 87
5.3.3 Oracle SQL Developer 88
5.4 準備和維護單元測試環境 88
5.4.1 創建單元測試資料檔案庫 89
5.4.2 維護單元測試資料檔案庫 90
5.4.3 導入測試 91
5.5 構建單元測試 91
5.5.1 使用單元測試嚮導 91
5.5.2 創建第一個測試實施 92
5.5.3 添加啟動和拆除進程 93
5.5.4 收集代碼覆蓋率統計信息 93
5.5.5 指定參數 93
5.5.6 添加進程驗證 94
5.5.7 保存測試 95
5.5.8 調試和運行測試 95
5.6 擴大測試的範圍 95
5.6.1 創建查找值 96
5.6.2 植入測試實施 97
5.6.3 創建動態查詢 98
5.7 支持單元測試功能 99
5.7.1 運行報告 99
5.7.2 創建組件庫 100
5.7.3 導出、導入和同步測試 103
5.7.4 構建套件 105
5.8 從命令行運行測試 105
5.9 小結 106
第6章 批量SQL操作 107
6.1 五金商店 107
6.2 設定本章的例子 108
6.3 在PL/SQL中執行批量操作 108
6.3.1 批量獲取入門 110
6.3.2 三種集合風格的數據類型 112
6.3.3 為什麼要自找麻煩 114
6.3.4 監控批量收集的開銷 116
6.3.5 重構代碼以使用批量收集 119
6.4 批量綁定 127
6.4.1 批量綁定入門 127
6.4.2 度量批量綁定性能 128
6.4.3 監視記憶體的使用 131
6.4.4 11g中的改進 133
6.5 批量綁定的錯誤處理 134
6.5.1 SAVE EXCEPTIONS和分批操作 137
6.5.2 LOG ERRORS子句 138
6.5.3 健壯的批量綁定 139
6.6 大規模集合的正當理由 143
6.7 真正的好處:客戶端批量處理 145
6.8 小結 149
第7章 透識你的代碼 151
7.1 本章內容取捨 152
7.2 自動代碼分析 153
7.2.1 靜態分析 154
7.2.2 動態分析 154
7.3 執行分析的時機 154
7.4 執行靜態分析 156
7.4.1 數據字典 156
7.4.2 PL/Scope 163
7.5 執行動態分析 175
7.5.1 DBMS_PROFILER和DBMS_TRACE 175
7.5.2 DBMS_HPROF 184
7.6 小結 189
第8章 契約導向編程 190
8.1 契約式設計 190
8.1.1 軟體契約 190
8.1.2 基本契約要素 191
8.1.3 斷言 192
8.1.4 參考文獻 192
8.2 實現PL/SQL契約 192
8.2.1 基本的ASSERT程式 192
8.2.2 標準的包本地斷言 194
8.2.3 使用ASSERT執行契約 196
8.2.4 其他改進 198
8.2.5 契約導向函式原型 199
8.3 示例:測試奇數和偶數 200
8.4 有用的契約模式 202
8.4.1 用NOT NULL輸入且輸出NOT NULL 202
8.4.2 函式返回NOT NULL 203
8.4.3 布爾型函式返回NOT NULL 203
8.4.4 檢查函式:返回TRUE或ASSERTFAIL 204
8.5 無錯代碼的原則 205
8.5.1 嚴格地斷言先決條件 205
8.5.2 一絲不苟地模組化 206
8.5.3 採用基於函式的接口 206
8.5.4 在ASSERTFAIL處崩潰 207
8.5.5 對後置條件進行回歸測試 207
8.5.6 避免在正確性和性能之間取捨 207
8.5.7 採用Oracle 11g最佳化編譯 208
8.6 小結 209
第9章 從SQL調用PL/SQL 210
9.1 在SQL中使用PL/SQL函式的開銷 210
9.1.1 上下文切換 211
9.1.2 執行 216
9.1.3 欠理想的數據訪問 218
9.1.4 最佳化器的難點 222
9.1.5 讀一致性陷阱 226
9.1.6 其他問題 228
9.2 降低PL/SQL函式的開銷 228
9.2.1 大局觀 229
9.2.2 使用SQL的替代品 230
9.2.3 減少執行 236
9.2.4 協助CBO 244
9.2.5 調優PL/SQL 255
9.3 小結 257
第10章 選擇正確的游標 258
10.1 顯式游標 258
10.1.1 解剖顯式游標 260
10.1.2 顯式游標和批量處理 261
10.1.3 REF游標簡介 262
10.2 隱式游標 263
10.2.1 解剖隱式游標 264
10.2.2 隱式游標和額外獲取的理論 265
10.3 靜態REF游標 267
10.3.1 詳細的游標變數限制清單 269
10.3.2 客戶端和REF游標 270
10.3.3 有關解析的話題 271
10.4 動態REF游標 273
10.4.1 例子和最佳用法 273
10.4.2 SQL注入的威脅 275
10.4.3 描述REF游標中的列 276
10.5 小結 277
第11章 大規模PL/SQL編程 279
11.1 將資料庫作為基於PL/SQL的套用伺服器 279
11.1.1 案例研究:Avaloq銀行系統 279
11.1.2 在資料庫中使用PL/SQL實現業務邏輯的優勢 281
11.1.3 用資料庫作為基於PL/SQL的應用程式伺服器的限制 283
11.1.4 軟因素 284
11.2 大規模編程的要求 284
11.3 通過規範實現一致性 285
11.3.1 縮寫詞 286
11.3.2 PL/SQL標識符的前綴和後綴 289
11.4 代碼和數據的模組化 291
11.4.1 包和相關的表作為模組 293
11.4.2 含有多個包或子模組的模組 297
11.4.3 模式作為模組 299
11.4.4 在模式內部模組化 303
11.4.5 用模式模組化與在模式內模組化的比較 306
11.5 使用PL/SQL面向對象編程 306
11.5.1 使用用戶定義類型的面向對象編程 307
11.5.2 使用PL/SQL記錄面向對象編程 310
11.5.3 評估 316
11.6 記憶體管理 317
11.6.1 測量記憶體使用 317
11.6.2 集合 322
11.7 小結 325
第12章 漸進式數據建模 326
12.1 從二十年的系統開發中總結的經驗 327
12.2 資料庫和敏捷開發 328
12.3 漸進式數據建模 329
12.4 重構資料庫 331
12.5 通過PL/SQL創建訪問層 335
12.6 敏捷宣言 347
12.7 用PL/SQL進行漸進式數據建模 349
12.7.1 定義接口 349
12.7.2 思考可擴展性 349
12.7.3 測試驅動開發 350
12.7.4 明智地使用模式和用戶 350
12.8 小結 351
第13章 性能剖析 352
13.1 何謂性能 353
13.1.1 功能需求 353
13.1.2 回響時間 353
13.1.3 吞吐量 354
13.1.4 資源利用率 354
13.1.5 性能是功能的一種 355
13.2 什麼是剖析 356
13.2.1 順序圖 356
13.2.2 概要檔案之神奇 357
13.2.3 性能剖析的好處 357
13.3 性能測量 358
13.3.1 這個程式為什麼慢 358
13.3.2 測量嵌入 360
13.3.3 識別 360
13.3.4 條件編譯 364
13.3.5 內建的剖析器 365
13.3.6 擴展的SQL跟蹤數據(事件10046) 365
13.3.7 針對Oracle的測量工具庫(ILO) 366
13.4 問題診斷 368
13.4.1 R方法 369
13.4.2 ILO示例 371
13.4.3 剖析示例 373
13.5 小結 376
第14章 編碼規範和錯誤處理 378
14.1 為什麼要制訂編碼規範 378
14.2 格式化 379
14.2.1 大小寫 379
14.2.2 注釋 380
14.2.3 比較 380
14.2.4 縮進 380
14.3 動態代碼 383
14.4 包 384
14.5 存儲過程 385
14.5.1 命名 385
14.5.2 參數 386
14.5.3 調用 386
14.5.4 局部變數 386
14.5.5 常量 386
14.5.6 類型 387
14.5.7 全局變數 387
14.5.8 本地存儲過程和函式 387
14.5.9 存儲過程元數據 388
14.6 函式 388
14.7 錯誤處理 389
14.7.1 錯誤捕獲 389
14.7.2 錯誤報告 390
14.7.3 錯誤恢復 391
14.7.4 先測試再顯示 392
14.8 小結 392
第15章 依賴關係和失效 395
15.1 依賴鏈 395
15.2 縮短依賴鏈 401
15.3 數據類型引用 406
15.4 用於表修改的視圖 407
15.5 把組件添加到包 410
15.6 依賴鏈中的同義詞 413
15.7 資源鎖定 414
15.8 用觸發器強制執行依賴 415
15.9 創建最初禁用的觸發器 418
15.10 小結 420