本書是一本關於Oracle數據庫體系結構的圖書,涵蓋了所有重要的Oracle體系結構特性,包括文件、內存結構和進程,鎖和閂,事務、並發和多版本,表和索引,數據類型,分區和並行,以及數據加密等,並利用具體的例子來全面介紹每個特性,不僅討論了各個特性是什麼,還說明了它是如何工作的,如何使用這個特性來開發軟件,以及有關的常見陷阱。
本書的讀者對象是數據庫開發人員。
Darl Kuhn,Oracle公司DBA,同時也在美國瑞吉斯大學教授Oracle相關課程。他樂於分享知識,着有多本數據庫相關書籍,如《深入理解Oracle12c數據庫管理(第2版)》《OracleDatabase12c性能優化攻略》等。
目錄
編程藝術探索品位
前言
第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.6DBA與開發人員的關系48
1.4小結48
第2章體系結構概述50
2.1定義數據庫和實例51
2.2連接Oracle59
2.2.1專用服務器59
2.2.2共享服務器61
2.2.3TCP/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.2init.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.2Oracle數據庫中的存儲層次體系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.11DMP文件(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.4PGA和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.6Java池154
4.2.7流池155
4.2.8SGA內存管理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.1I/O從屬進程188
5.3.2Pnnn:並行查詢執行服務器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.1DML鎖210
6.3.2DDL鎖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.1READ UNCOMMITTED236
7.2.2READ COMMITTED238
7.2.3REPEATABLE READ239
7.2.4SERIALIZABLE241
7.2.5READ ONLY243
7.3多版本讀一致性的含義244
7.3.1數據倉庫中一種常見但有問題的方法244
7.3.2解釋熱表上超出期望的I/O245
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.4DDL與原子性262
8.3持久性263
8.3.1COMMIT的WRITE擴展263
8.3.2非分布式PL/SQL代碼塊中的COMMIT264
8.4完整性約束和事務266
8.4.1IMMEDIATE約束266
8.4.2DEFERRABLE約束和級聯更新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與undo284
9.1什麼是redo285
9.2什麼是undo286
9.3redo和undo如何協作289
9.4提交和回滾處理293
9.4.1COMMIT做什麼293
9.4.2ROLLBACK做什麼299
9.5分析redo300
9.5.1測量redo301
9.5.2能關掉重做日志的生成嗎302
9.5.3為什麼我拿不到日志空間305
9.5.4塊清除307
9.5.5日志競爭310
9.5.6臨時表和redo/undo312
9.6分析undo317
9.6.1什麼操作會生成最多和最少的undo317
9.6.2ORA—01555:snapshottooold錯誤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.4FREELIST336
10.2.5PCTFREE和PCTUSED339
10.2.6LOGGING和NOLOGGING342
10.2.7INITRANS和MAXTRANS343
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.112c之前的統計信息391
10.9.212c之后的統計信息395
10.9.3臨時表小結398
10.10對象表399
10.11小結405
第11章索引406
11.1Oracle索引概述406
11.2B*Tree索引408
11.2.1索引鍵壓縮411
11.2.2反向鍵索引413
11.2.3降序索引418
11.2.4什麼情況下應該使用B*Tree索引420
11.2.5B*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.2Null和索引能協作嗎457
11.9.3外鍵是否應該加索引460
11.9.4為什麼沒有使用我的索引461
11.9.5傳言:索引中從不重用空間466
11.9.6傳言:最有差別的元素應該在最前面469
11.10小結472
第12章數據類型473
12.1Oracle數據類型概述473
12.2字符和二進制串類型475
12.2.1NLS概述476
12.2.2字符串479
12.3二進制串:RAW類型485
12.4擴展的數據類型487
12.5數值類型489
12.5.1NUMBER類型的語法和用法491
12.5.2BINARY_FLOAT/BINARY_DOUBLE類型的語法和用法494
12.5.3非固有數值類型495
12.5.4性能考慮495
12.6LONG類型497
12.6.1LONG和LONGRAW類型的限制497
12.6.2處理遺留的LONG類型498
12.7DATE、TIMESTAMP和INTERVAL類型502
12.7.1格式503
12.7.2DATE類型504
12.7.3TIMESTAMP類型509
12.7.4INTERVAL類型515
12.8LOB類型518
12.8.1內部LOB518
12.8.2BFILE531
12.9ROWID/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.2Oracle Exadata606
14.3並行查詢606
14.4並行DML612
14.5並行DDL615
14.5.1並行DDL和使用外部表的數據加載616
14.5.2並行DDL和擴展截斷617
14.6過程並行化625
14.6.1並行管道函數626
14.6.2DIY並行化629
14.6.3老式DIY並行化632
14.7小結635
……
第15章數據加載和卸載637
前言
第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.6DBA與開發人員的關系48
1.4小結48
第2章體系結構概述50
2.1定義數據庫和實例51
2.2連接Oracle59
2.2.1專用服務器59
2.2.2共享服務器61
2.2.3TCP/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.2init.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.2Oracle數據庫中的存儲層次體系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.11DMP文件(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.4PGA和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.6Java池154
4.2.7流池155
4.2.8SGA內存管理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.1I/O從屬進程188
5.3.2Pnnn:並行查詢執行服務器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.1DML鎖210
6.3.2DDL鎖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.1READ UNCOMMITTED236
7.2.2READ COMMITTED238
7.2.3REPEATABLE READ239
7.2.4SERIALIZABLE241
7.2.5READ ONLY243
7.3多版本讀一致性的含義244
7.3.1數據倉庫中一種常見但有問題的方法244
7.3.2解釋熱表上超出期望的I/O245
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.4DDL與原子性262
8.3持久性263
8.3.1COMMIT的WRITE擴展263
8.3.2非分布式PL/SQL代碼塊中的COMMIT264
8.4完整性約束和事務266
8.4.1IMMEDIATE約束266
8.4.2DEFERRABLE約束和級聯更新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與undo284
9.1什麼是redo285
9.2什麼是undo286
9.3redo和undo如何協作289
9.4提交和回滾處理293
9.4.1COMMIT做什麼293
9.4.2ROLLBACK做什麼299
9.5分析redo300
9.5.1測量redo301
9.5.2能關掉重做日志的生成嗎302
9.5.3為什麼我拿不到日志空間305
9.5.4塊清除307
9.5.5日志競爭310
9.5.6臨時表和redo/undo312
9.6分析undo317
9.6.1什麼操作會生成最多和最少的undo317
9.6.2ORA—01555:snapshottooold錯誤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.4FREELIST336
10.2.5PCTFREE和PCTUSED339
10.2.6LOGGING和NOLOGGING342
10.2.7INITRANS和MAXTRANS343
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.112c之前的統計信息391
10.9.212c之后的統計信息395
10.9.3臨時表小結398
10.10對象表399
10.11小結405
第11章索引406
11.1Oracle索引概述406
11.2B*Tree索引408
11.2.1索引鍵壓縮411
11.2.2反向鍵索引413
11.2.3降序索引418
11.2.4什麼情況下應該使用B*Tree索引420
11.2.5B*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.2Null和索引能協作嗎457
11.9.3外鍵是否應該加索引460
11.9.4為什麼沒有使用我的索引461
11.9.5傳言:索引中從不重用空間466
11.9.6傳言:最有差別的元素應該在最前面469
11.10小結472
第12章數據類型473
12.1Oracle數據類型概述473
12.2字符和二進制串類型475
12.2.1NLS概述476
12.2.2字符串479
12.3二進制串:RAW類型485
12.4擴展的數據類型487
12.5數值類型489
12.5.1NUMBER類型的語法和用法491
12.5.2BINARY_FLOAT/BINARY_DOUBLE類型的語法和用法494
12.5.3非固有數值類型495
12.5.4性能考慮495
12.6LONG類型497
12.6.1LONG和LONGRAW類型的限制497
12.6.2處理遺留的LONG類型498
12.7DATE、TIMESTAMP和INTERVAL類型502
12.7.1格式503
12.7.2DATE類型504
12.7.3TIMESTAMP類型509
12.7.4INTERVAL類型515
12.8LOB類型518
12.8.1內部LOB518
12.8.2BFILE531
12.9ROWID/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.2Oracle Exadata606
14.3並行查詢606
14.4並行DML612
14.5並行DDL615
14.5.1並行DDL和使用外部表的數據加載616
14.5.2並行DDL和擴展截斷617
14.6過程並行化625
14.6.1並行管道函數626
14.6.2DIY並行化629
14.6.3老式DIY並行化632
14.7小結635
……
第15章數據加載和卸載637
網路書店
類別
折扣
價格
-
新書87折$778