《Oracle编程艺术 深入理解数据库体系结构》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)Thomas Kyte,(美)Darl Kuhn著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:9787115419576
  • 页数:694 页
图书介绍:本书是一本关于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 S ERIALIZABLE 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