Oracle9i & 10g编程艺术:深入数据库体系结构(数据库系列·图灵程序设计丛书)
分類: 图书,计算机与互联网,数据库,Oracle,
品牌: 凯特
基本信息·出版社:人民邮电出版社
·页码:737 页
·出版日期:2006年
·ISBN:711515032X
·条形码:9787115150325
·包装版本:1
·装帧:平装
·开本:16开
·丛书名:数据库系列·图灵程序设计丛书
产品信息有问题吗?请帮我们更新产品信息。
内容简介《Oracle9i & 10g编程艺术:深入数据库体系结构》是一本关于Oracle 9j az& 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发软件,以及有关的常见陷阱。
作者简介Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle709版本开始就一直任职于Oracle公司。不过,其实他从5.1.5c版本就开始使用Oracle了。在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。进入Oracle公司之前,Kyte是一位系集成师,主要为美国军方和政府部门的客户构建规模、异构数据库。
Thomas Kyte就是主持Oracle Magazine “Ask Tom”专栏和Oracle公司同名在线论坛的那个Tom,他通过这一方式热心地回答困扰着全世界Oracle开发人员和DBA的各种问题。
媒体推荐书评
“本书能够帮助你发挥Oracle技术的最大潜力。……毋庸置疑,这是最重要的Oracle图书之一,绝对值得拥有。”
--Ken Jacobs,产品战略部(服务器技术)副总裁,Oracle公司
无论你是程序员还是DBA,要创建和管理稳定、高质量的Oracle系统,归根结底都需要理解Oracle数据库的体系结构。
本书是讲述Oracle数据库公证的权威指南,凝聚了世界顶尖的Oracle专家Thomas Kyte数十年的宝贵经验和大量真的知灼见。书中深入地分析了Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库和实例的度层进程,然后讨论了一些重要的数据库主题,如锁定、并发控制、事务、重做和撤销,还解释了这些内重要性。最后,分析了数据库中的物理结构,如表、索引和数据类型,并介绍通过哪些技术能最优地使用这些物理结构。
在介绍每个特性时,作者都充分利用具体的例子来说明,不仅讨论了各个特性是什么,还说明了它如何工作,如何使用它来实现软件,并涵盖了相关的常见陷阱。
编辑推荐《Oracle9i & 10g编程艺术:深入数据库体系结构》面向从事Oracle数据库应用的所有开发人员的或DBA。
目录
第1章开发成功的Oracle应用1
1.1我的方法2
1.2黑盒方法4
1.3开发数据库应用的正确(和不正确)方法8
1.3.1了解Oracle体系结构8
1.3.2理解并发控制14
1.3.3多版本19
1.3.4数据库独立性?25
1.3.5“怎么能让应用运行得更快?”41
1.3.6DBA与开发人员的关系45
1.4小结46
第2章体系结构概述47
2.1定义数据库和实例48
2.2SGA和后台进程53
2.3连接Oracle56
2.3.1专用服务器56
2.3.2共享服务器57
2.3.3TCP/IP连接的基本原理58
2.4小结61
第3章文件63
3.1参数文件64
3.1.1什么是参数?65
3.1.2遗留的init.ora参数文件67
3.1.3服务器参数文件69
3.1.4参数文件小结75
3.2跟踪文件76
3.2.1请求的跟踪文件77
3.2.2针对内部错误生成的跟踪文件80
3.2.3跟踪文件小结83
3.3警告文件83
3.4数据文件86
3.4.1简要回顾文件系统机制86
3.4.2Oracle数据库中的存储层次体系87
3.4.3字典管理和本地管理的表空间91
3.5临时文件93
3.6控制文件95
3.7重做日志文件95
3.7.1在线重做日志96
3.7.2归档重做日志98
3.8密码文件100
3.9修改跟踪文件103
3.10闪回日志文件104
3.10.1闪回数据库104
3.10.2闪回恢复区105
3.11DMP文件(EXP/IMP文件)106
3.12数据泵文件107
3.13平面文件110
3.14小结111
第4章内存结构113
4.1进程全局区和用户全局区113
4.1.1手动PGA内存管理114
4.1.2自动PGA内存管理121
4.1.3手动和自动内存管理的选择131
4.1.4PGA和UGA小结132
4.2系统全局区133
4.2.1固定SGA137
4.2.2重做缓冲区137
4.2.3块缓冲区缓存138
4.2.4共享池145
4.2.5大池148
4.2.6Java池149
4.2.7流池150
4.2.8自动SGA内存管理150
4.3小结151
第5章Oracle进程153
5.1服务器进程153
5.1.1专用服务器连接154
5.1.2共享服务器连接156
5.1.3连接与会话157
5.1.4专用服务器与共享服务器163
5.1.5专用/共享服务器小结166
5.2后台进程167
5.2.1中心后台进程168
5.2.2工具后台进程175
5.3从属进程178
5.3.1I/O从属进程178
5.3.2并行查询从属进程179
5.4小结179
第6章锁181
6.1什么是锁?181
6.2锁定问题184
6.2.1丢失更新184
6.2.2悲观锁定185
6.2.3乐观锁定187
6.2.4乐观锁定还是悲观锁定?197
6.2.5阻塞198
6.2.6死锁201
6.2.7锁升级206
6.3锁类型206
6.3.1DML锁207
6.3.2DDL锁215
6.3.3闩218
6.3.4手动锁定和用户定义锁226
6.4小结227
第7章并发与多版本229
7.1什么是并发控制?229
7.2事务隔离级别230
7.2.1READ UNCOMMITTED232
7.2.2READ COMMITTED233
7.2.3REPEATABLE READ235
7.2.4SERIALIZABLE237
7.2.5READ ONLY239
7.3多版本读一致性的含义240
7.3.1一种会失败的常用数据仓库技术240
7.3.2解释热表上超出期望的I/O241
7.4写一致性244
7.4.1一致读和当前读244
7.4.2查看重启动247
7.4.3为什么重启动对我们很重要?250
7.5小结251
第8章事务253
8.1事务控制语句254
8.2原子性255
8.2.1语句级原子性255
8.2.2过程级原子性257
8.2.3事务级原子性260
8.3完整性约束和事务260
8.3.1IMMEDIATE约束260
8.3.2DEFERRABLE约束和级联更新261
8.4不好的事务习惯263
8.4.1在循环中提交?264
8.4.2使用自动提交?270
8.5分布式事务271
8.6自治事务273
8.6.1自治事务如何工作?273
8.6.2何时使用自治事务?276
8.7小结279
第9章redo与undo281
9.1什么是redo?281
9.2什么是undo?282
9.3redo和undo如何协作?285
9.4提交和回滚处理289
9.4.1COMMIT做什么?289
9.4.2ROLLBACK做什么?296
9.5分析redo297
9.5.1测量redo298
9.5.2redo生成和BEFORE/AFTER触发器300
9.5.3我能关掉重做日志生成吗?306
9.5.4为什么不能分配一个新日志?310
9.5.5块清除312
9.5.6日志竞争315
9.5.7临时表和redo/undo317
9.6分析undo321
9.6.1什么操作会生成最多和最少的undo?321
9.6.2ORA-01555: snapshot too old错误323
9.7小结334
第10章数据库表335
10.1表类型335
10.2术语337
10.2.1段337
10.2.2段空间管理339
10.2.3高水位线340
10.2.4freelists342
10.2.5PCTFREE和PCTUSED345
10.2.6LOGGING和NOLOGGING348
10.2.7INITRANS和MAXTRANS349
10.3堆组织表349
10.4索引组织表352
10.5索引聚簇表368
10.6散列聚簇表376
10.7有序散列聚簇表386
10.8嵌套表390
10.8.1嵌套表语法390
10.8.2嵌套表存储399
10.8.3嵌套表小结402
10.9临时表402
10.10对象表410
10.11小结418
第11章索引421
11.1Oracle索引概述422
11.2B*树索引423
11.2.1索引键压缩426
11.2.2反向键索引429
11.2.3降序索引435
11.2.4什么情况下应该使用B*树索引?437
11.2.5B*树小结448
11.3位图索引448
11.3.1什么情况下应该使用位图索引?449
11.3.2位图联结索引453
11.3.3位图索引小结455
11.4基于函数的索引456
11.4.1重要的实现细节456
11.4.2一个简单的基于函数的索引例子457
11.4.3只对部分行建立索引465
11.4.4实现有选择的惟一性467
11.4.5关于CASE的警告467
11.4.6关于ORA-01743的警告469
11.4.7基于函数的索引小结470
11.5应用域索引470
11.6关于索引的常见问题和神话472
11.6.1视图能使用索引吗?472
11.6.2Null和索引能协作吗?472
11.6.3外键是否应该加索引?475
11.6.4为什么没有使用我的索引?476
11.6.5神话:索引中从不重用空间483
11.6.6神话:最有差别的元素应该在最前面486
11.7小结490
第12章数据类型491
12.1Oracle数据类型概述491
12.2字符和二进制串类型494
12.2.1NLS概述494
12.2.2字符串497
12.3二进制串:RAW类型504
12.4数值类型506
12.4.1NUMBER类型的语法和用法509
12.4.2BINARY_FLOAT/BINARY_DOUBLE类型的语法和用法513
12.4.3非固有数值类型513
12.4.4性能考虑514
12.5LONG类型515
12.5.1LONG和LONG RAW类型的限制516
12.5.2处理遗留的LONG类型517
12.6DATE、TIMESTAMP和INTERVAL类型523
12.6.1格式523
12.6.2DATE类型525
12.6.3TIMESTAMP类型533
12.6.4INTERVAL类型541
12.7LOB 类型544
12.7.1内部LOB545
12.7.2BFILE557
12.8ROWID/UROWID类型559
12.9小结560
第13章分区561
13.1分区概述561
13.1.1提高可用性562
13.1.2减少管理负担564
13.1.3改善语句性能569
13.2表分区机制571
13.2.1区间分区571
13.2.2散列分区574
13.2.3列表分区579
13.2.4组合分区581
13.2.5行移动583
13.2.6表分区机制小结585
13.3索引分区586
13.3.1局部索引与全局索引587
13.3.2局部索引587
13.3.3全局索引594
13.4再论分区和性能610
13.5审计和段空间压缩617
13.6小结618
第14章并行执行619
14.1何时使用并行执行620
14.2并行查询622
14.3并行DML628
14.4并行DDL631
14.4.1并行DDL和使用外部表的数据加载632
14.4.2并行DDL和区段截断634
14.5并行恢复643
14.6过程并行化643
14.6.1并行管道函数644
14.6.2DIY并行化648
14.7小结652
第15章数据加载和卸载655
15.1SQL*Loader655
15.1.1用SQLLDR加载数据的FAQ660
15.1.2SQLLDR警告686
15.1.3SQLLDR小结686
15.2外部表687
15.2.1建立外部表688
15.2.2处理错误693
15.2.3使用外部表加载不同的文件697
15.2.4多用户问题697
15.2.5外部表小结698
15.3平面文件卸载698
15.4数据泵卸载708
15.5小结710
索引711
……[看更多目录]