Oracle 編程藝術 : 深入理解數據庫體系結構, 3/e

凱特 (Thomas Kyte), 庫恩 (Darl Kuhn)

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

本書是一本關於Oracle數據庫體系結構的圖書,涵蓋了所有重要的Oracle體系結構特性,包括文件、內存結構和進程,鎖和閂,事務、並發和多版本,表和索引,數據類型,分區和並行,以及數據加密等,並利用具體的例子來全面介紹每個特性,不僅討論了各個特性是什麼,還說明瞭它是如何工作的,如何使用這個特性來開發軟件,以及有關的常見陷阱。
本書的讀者對像是數據庫開發人員。

<目錄>

編程藝術探索 品位
前  言 
第1章 開發成功的Oracle應用 1
1.1  我的方法 2
1.2  黑盒方法 3
1.3  開發數據庫應用的正確(和不正確)方法 11
1.3.1 瞭解 Oracle體系結構 11
1.3.2  理解並發控制 21
1.3.3  多版本控制 25
1.3.4  數據庫獨立性 31
1.3.5  怎麽能讓應用運行得更快 45
1.3.6  DBA與開發人員的關系 48
1.4 小結 48
第2章 體系結構概述 50
2.1  定義數據庫和實例 51
2.2 連接 Oracle 59
2.2.1  專用服務器 59
2.2.2  共享服務器 61
2.2.3  TCP/IP連接的基本原理 63
2.3  可插拔式數據庫 65
2.3.1  降低資源用量 66
2.3.2  降低維護開銷 66
2.4  可插拔式數據庫的不同之處 67
2.5 小結 67
第3章  文件 68
3.1  參數文件 69
3.1.1  什麽是參數 70
3.1.2  init.ora 參數文件 73
3.1.3  服務器參數文件 75
3.2  跟蹤文件 82
3.2.1  計劃內的、由用戶請求所產生的跟蹤文件 83
3.2.2  針對內部錯誤生成的跟蹤文件 88
3.2.3  跟蹤文件小結 92
3.3  警告文件 92
3.4  數據文件 95
3.4.1  簡要回顧文件系統機制 96
3.4.2  Oracle數據庫中的存儲層次體系 97
3.4.3  字典管理和本地管理的表空間 100
3.5  臨時文件 102
3.6  控制文件 104
3.7  重做日誌文件 104
3.7.1  在線重做日誌 105
3.7.2  歸檔重做日誌 107
3.8  密碼文件 108
3.9  修改跟蹤文件 111
3.10 閃回日誌 112
3.10.1  閃回數據庫 112
3.10.2  快速恢復區 113
3.11  DMP文件(EXP/IMP文件) 114
3.12  數據泵文件 115
3.13 平面文件 117
3.14 小結 118
第4章  內存結構 119
4.1  進程全局區和用戶全局區 120
4.1.1 手動 PGA內存管理 121
4.1.2 自動 PGA內存管理 127
4.1.3  如何選擇手動和自動內存管理 137
4.1.4  PGA和 UGA小結 138
4.2  系統全局區 138
4.2.1 固定 SGA 區 143
4.2.2  重做緩沖區 143
4.2.3  塊緩沖區緩存 145
4.2.4 共享池 151
4.2.5 大池 153
4.2.6  Java池 154
4.2.7 流池 155
4.2.8  SGA內存管理 155
4.3 小結 160
第5章  Oracle進程 161
5.1  服務器進程 161
5.1.1  專用服務器連接 162
5.1.2  共享服務器連接 164
5.1.3  數據庫常駐連接池 165
5.1.4  連接與會話 165
5.1.5  專用服務器、共享服務器和數據庫常駐連接池 170
5.1.6 專用/共享服務器小結 173
5.2  後台進程 174
5.2.1  特定任務後台進程 175
5.2.2  工具後台進程 185
5.3  從屬進程 188
5.3.1  I/O從屬進程 188
5.3.2  Pnnn:並行查詢執行服務器 189
5.4 小結 189
第6章  鎖和閂 190
6.1  什麽是鎖 190
6.2  鎖的問題 193
6.2.1 丟失更新 193
6.2.2 悲觀鎖 194
6.2.3 樂觀鎖 195
6.2.4  樂觀鎖還是悲觀鎖 201
6.2.5 阻塞 202
6.2.6 死鎖 205
6.2.7 鎖升級 209
6.3  鎖類型 209
6.3.1  DML鎖 210
6.3.2  DDL鎖 219
6.3.3 閂 223
6.3.4 互斥鎖 231
6.3.5  手動鎖定和用戶定義鎖 232
6.4 小結 233
第7章  並發與多版本控制 234
7.1  什麽是並發控制 234
7.2  事務隔離級別 235
7.2.1  READ UNCOMMITTED 236
7.2.2  READ COMMITTED 238
7.2.3  REPEATABLE READ 239
7.2.4  SERIALIZABLE 241
7.2.5  READ ONLY 243
7.3  多版本讀一致性的含義 244
7.3.1  數據倉庫中一種常見但有問題的方法 244
7.3.2  解釋熱表上超出期望的 I/O 245
7.4  寫一致性 247
7.4.1  一致讀和當前讀 248
7.4.2  查看重啟動 250
7.4.3  為什麽重啟動對我們很重要 252
7.5 小結 253
第8章  事務 255
8.1  事務控制語句 255
8.2  原子性 257
8.2.1  語句級原子性 257
8.2.2  過程級原子性 259
8.2.3  事務級原子性 262
8.2.4  DDL與原子性 262
8.3  持久性 263
8.3.1  COMMIT 的 WRITE 擴展 263
8.3.2 非分佈式 PL/SQL代碼塊中的COMMIT 264
8.4  完整性約束和事務 266
8.4.1  IMMEDIATE 約束 266
8.4.2  DEFERRABLE 約束和級聯更新 266
8.5  不好的事務習慣 270
8.5.1  在循環中提交 270
8.5.2  使用自動提交 276
8.6  分佈式事務 277
8.7  自治事務 278
8.7.1  自治事務如何工作 279
8.7.2  何時使用自治事務 280
8.8 小結 283
第 9章  redo與 undo 284
9.1  什麽是 redo 285
9.2  什麽是 undo 286
9.3  redo和 undo如何協作 289
9.4  提交和回滾處理 293
9.4.1  COMMIT 做什麽 293
9.4.2  ROLLBACK 做什麽 299
9.5 分析 redo 300
9.5.1 測量 redo 301
9.5.2  能關掉重做日誌的生成嗎 302
9.5.3  為什麽我拿不到日誌空間 305
9.5.4 塊清除 307
9.5.5 日誌競爭 310
9.5.6 臨時表和 redo/undo 312
9.6 分析 undo 317
9.6.1  什麽操作會生成最多和最少的undo 317
9.6.2  ORA-01555: snapshot too old錯誤 319
9.7 小結 328
第10章  數據庫表 329
10.1 表類型 329
10.2 術語 331
10.2.1 段 331
10.2.2  段空間管理 333
10.2.3  高水位線 334
10.2.4  FREELIST 336
10.2.5  PCTFREE 和 PCTUSED 339
10.2.6  LOGGING 和 NOLOGGING 342
10.2.7  INITRANS 和 MAXTRANS 343
10.3 堆組織表 343
10.4  索引組織表 346
10.5  索引聚簇表 359
10.6  散列聚簇表 366
10.7  有序散列聚簇表 375
10.8 嵌套表 377
10.8.1  嵌套表語法 378
10.8.2  嵌套表存儲 384
10.8.3  嵌套表小結 387
10.9 臨時表 387
10.9.1  12c之前的統計信息 391
10.9.2  12c之後的統計信息 395
10.9.3  臨時表小結 398
10.10 對象表 399
10.11 小結 405
第11章  索引 406
11.1  Oracle索引概述 406
11.2  B*Tree索引 408
11.2.1  索引鍵壓縮 411
11.2.2  反向鍵索引 413
11.2.3  降序索引418
11.2.4  什麽情況下應該使用B*Tree索引 420
11.2.5  B*Tree小結 430
11.3 位圖索引 430
11.3.1  什麽情況下應該使用位圖索引 431
11.3.2  位圖聯結索引 435
11.3.3  位圖索引小結 437
11.4  基於函數的索引 438
11.4.1  一個簡單的例子 438
11.4.2  只對部分行建立索引 446
11.4.3  實現有選擇的唯一性 448
11.4.4 關於 ORA-01743的警告 448
11.4.5  基於函數的索引小結 449
11.5  應用域索引 450
11.6  不可見的索引 451
11.7  同列上的多個索引 452
11.8  在擴展列上使用索引 453
11.8.1  使用虛擬列的方法 454
11.8.2  使用基於函數索引的方法 456
11.9  關於索引的常見問題和各種傳言 457
11.9.1  視圖能使用索引嗎 457
11.9.2  Null和索引能協作嗎 457
11.9.3  外鍵是否應該加索引 460
11.9.4  為什麽沒有使用我的索引 461
11.9.5  傳言:索引中從不重用空間 466
11.9.6  傳言:最有差別的元素應該在最前面 469
11.10 小結 472
第12章  數據類型 473
12.1  Oracle數據類型概述 473
12.2  字符和二進制串類型 475
12.2.1  NLS概述 476
12.2.2 字符串 479
12.3  二進制串:RAW 類型  485
12.4  擴展的數據類型 487
12.5 數值類型 489
12.5.1  NUMBER 類型的語法和用法 491
12.5.2  BINARY_FLOAT/BINARY_DOUBLE 類型的語法和用法 494
12.5.3  非固有數值類型 495
12.5.4  性能考慮 495
12.6  LONG 類型 497
12.6.1  LONG 和 LONG RAW 類型的限制 497
12.6.2  處理遺留的 LONG 類型 498
12.7  DATE、TIMESTAMP 和 INTERVAL類型 502
12.7.1 格式 503
12.7.2  DATE 類型 504
12.7.3  TIMESTAMP 類型 509
12.7.4  INTERVAL 類型 515
12.8  LOB 類型 518
12.8.1 內部 LOB 518
12.8.2  BFILE 531
12.9  ROWID/UROWID 類型 533
12.10 小結 533
第13章  分區 535
13.1 分區概述 535
13.1.1  提高可用性 536
13.1.2  減少管理負擔 538
13.1.3  增強語句性能 541
13.2  表分區機制 543
13.2.1  區間分區 544
13.2.2  散列分區 546
13.2.3  列表分區 550
13.2.4  間隔分區 552
13.2.5  引用分區 557
13.2.6  間隔引用分區 561
13.2.7  虛擬列分區 563
13.2.8  組合分區 564
13.2.9 行移動 566
13.2.10  表分區機制小結 568
13.3 索引分區 569
13.3.1  本地索引與全局索引 570
13.3.2  本地索引 570
13.3.3  全局索引 575
13.4  再論分區和性能 590
13.5  一些簡化維護的特性 595
13.5.1  多分區管理操作 595
13.5.2  級聯截斷 597
13.5.3  級聯交換 599
13.6  審計和段空間壓縮 600
13.7 小結 601
第14章  並行執行 603
14.1  何時使用並行執行 604
14.2  Oracle Exadata 606
14.3 並行查詢 606
14.4 並行 DML 612
14.5 並行 DDL 615
14.5.1 並行 DDL和使用外部表的數據加載 616
14.5.2 並行 DDL和擴展截斷 617
14.6  過程並行化 625
14.6.1  並行管道函數 626
14.6.2  DIY並行化 629
14.6.3 老式 DIY並行化 632
14.7 小結 635
第15章  數據加載和卸載 637
15.1 外部表 637
15.1.1  建立外部表 638
15.1.2  處理錯誤 645
15.1.3  使用外部表加載不同的文件 648
15.1.4  多用戶問題 649
15.1.5 預處理 650
15.1.6  外部表總結 658
15.2  數據泵卸載 659
15.3  SQLLDR 660
15.3.1 用 SQLLDR加載數據的常見問題 664
15.3.2  SQLLDR警告 686
15.3.3  SQLLDR小結 686
15.4  平面文件卸載 687
15.5 小結 694