当前位置:首页 > 计算机网络 > 数据库 > 深入解析Oracle
出版社:人民邮电出版社
出版日期:2009-1-1
ISBN:9787115190772
作者:盖国强
页数:527页
章节摘录
通常所说的Oracle Server主要由两个部分组成:Instance和Database。Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域,Database是指存储在磁盘上的一组物理文件。通过Instance与Database协同,Oracle数据库才能形成一个动态的可访问关系型数据库系统。 本章将由数据库如何启动与关闭入手,开始和大家一起进入Oracle数据库的国度。 1.1数据库的启动 从表象来看, 数据库的启动极其简单, 只需要以SYSDBA/SYSOPER身份登录,输入一 条startup命令即可启动数据库。然而在这条命令之后,Oracle需要执行一系列复杂的操作,深入理解这些操作不仅有助于了解Oracle数据库的运行机制,还可以在故障发生时帮助用户快速的定位问题的根源所在,所以接下来将分析一下数据库的启动过程。 Oracle数据库的启动主要包含3个过程: 启动数据库到NOMOUNT状态; 启动数据库到MOUNT状态: 启动数据库到OPEN状态。 完成这3个过程,数据库才能进入就绪状态,准备提供数据访问。图1-1描述了一个数 据库从SHUTDOWN(关闭)状态到OPEN状态经历的这些过程(关闭过程与此相反,是一个逆向过程)。
前言
关于本书 根据Gartner公司最近发布的关系数据库2007年市场份额报告,Oracle以48.6%的高份额再占首位。而2006年Gartner的统计数据显示Oracle的市场份额为47.9%,也就是说在2007年度,Oracle获得了0.7%的份额增长。 不管这些市场份额数据怎样在发生微小的变化,有一点是肯定的,Oracle数据库持续的占有了市场第一的位置,在本书第一版出版的两年多时间,国内的Oracle从业市场和学习环境都有了进一步的发展和进步,甚至有些大学已经开设了专门的Oracle系列课程或专业方向,从事数据库管理工作的朋友们也越来越多。 为了让更多进入Oracle领域的朋友能够快速了解和掌握Oracle技术,让具备一定经验和积累的Oracle从业人员继续深入学习,作者倾力修订了本书。 本书作者活跃于国内著名Oracle技术论坛ITPUB(www.itpub.net),并全力打造国内最具影响力的个人Oracle技术站点Eygle.com (www.eygle.com),本书从基础出发,逐层深入,并结合实际工作中的诊断案例进行全面讲解,力图从点到面,让读者对每个主题都有深入的了解和认识。 本书特点 目前市场上的Oracle书籍普遍存在的问题是模式单一,要么只讲基础知识,要么侧重代码编程实例,要么针对具体的版本特性(Oracle 9i/lOg/11g等),要么缺少实践应用检验,很少能对Oracle相关知识进行全面深入讲解。 本书针对这些问题,从基础知识入手,再进行深入研究,结合性能调整、诊断案例实践,将Oracle知识全面、系统、深入地展现给读者: 本书内容更涉及Oracle数据库的多个版本8i/9i/lOg/11g,将Oracle的版本变化和功能改进,一以贯之地展现出来,让大家看到这些变革的真正原因以及Oracle的不断技术创新,通过真实案例的学习,更可以加深大家对现实环境的了解,从而提高实践能力。 本书是作者多年实践工作的积累和总结,各章更从DBA的成长历程入手,引导大家快速进入并深入Oracle知识的国度。
媒体关注与评论
转眼间《深入浅出Oracle——DBA入门、进阶与诊断案例》一书已经出版两年有余。作为ITPUB技术丛书系列中面向入门与进阶者的一本数据库专著,本书给ITPUB上的读者带来了巨大的知识价值,帮助很多读者进入数据库管理这个行业,找到了很多个人发展机会。在此,作为ITPUB的主持人和联系人,感谢作者对本书所做出的辛勤工作和知识分享,也期待再版的新书,能够为读者带来更多的新知识。 ——黄志洪(tigerfish)ITPUB论坛创始人 Eygle一向是能长期坚持的人,这么多年不断地学习、不断地分享。独乐乐不如众乐乐,开放、分享是互联网的精神,可以说我们这一代人成长于互联网又回馈于互联网,本书则是Eygle回馈内容的升华。希望本书能帮助到正在这个方向上努力着的数据库从业人员,同时也希望大家能将这种分享的精神,传递给正要从事这个行业的人。 ——冯春培(biti_rainy)阿里巴巴首席DBA Oracle ACE Director 近五载来,数据库江湖王国人才辈出,但环顾置内,在技术上能让我服膺者少之又少,国强便是其中之一,窃以为,堪称国内数据库界之牛耳者,国强或可魑力为之,国强对数据库的精通应已达举重若轻、大巧不工之境。古人有“术”、“道”之论,以数据库技术而论,国强应近乎道矣! ——牛新庄 中国建设银行特聘资深数据库专家 IBM官方认证资深软件专家 作者盖国强(Eygle)是我认识的DBA中,较旱开始做Oracle,而且又能持之以恒、坚持不懈做研究的人,非常值得敬佩。我曾经看过作者很多实际中的诊断案例,可以看到其思维非常严谨。在本书中,收录了大量作者作为资深DBA所遇到的实际案例,我相信,这种实际的经验总结能给大家非常大的帮助。 ——陈吉平 淘宝网首席DBA,Oracle ACE《构建Oracle高可用环境》作者
内容概要
曾任职于某国家大型企业,服务于烟草行业,开发过基于Oracle数据库的大型ERP系统,属国家信息产业部重点工程。同时负责Oracle数据库管理及优化,并为多家烟草企业提供Oracle数据库管理、优化及技术支持。 目前任职于北京某电信增值服务系统提供商企业(Nasdaq上市公司),技术支持部总监兼首席DBA。管理全国30多个数据库系统,项目经验丰富,曾设计规划及支持中国联通增值业务等大型数据库系统。实践经验丰富,长于数据库诊断、性能调整与SQL优化等。对于Oracle内部技术具有深入研究。
高级培训讲师,培训经验丰富,曾主讲ITPUB DBA培训及ITPUB高级性能调整等主要课程。《Oracle数据库DBA专题技术精粹》、《Oracle数据库性能优化》二书的主编及主要作者。
书籍目录
第1章 数据库的启动和关闭 1
1.1 数据库的启动 1
1.1.1 启动数据库到NOMOUNT状态的过程 2
1.1.2 启动数据库到MOUNT状态 18
1.1.3 启动数据库OPEN阶段 26
1.2 数据库的访问 37
1.2.1 客户端的TNSNAMES.ORA文件配置 37
1.2.2 服务器端的监听器文件listener.ora配置 39
1.2.3 通过不同服务器名对数据库的访问 41
1.2.4 动态监听器注册服务 42
1.3 数据库的关闭 46
1.3.1 数据库关闭的步骤 46
1.3.2 几种关闭方式的对比 48
第2章 控制文件与数据库初始化 51
2.1 控制文件的内容 51
2.2 SCN 53
2.2.1 SCN的定义 53
2.2.2 SCN的获取方式 53
2.2.3 SCN的进一步说明 54
2.3 检查点(Checkpoint) 57
2.3.1 检查点(Checkpoint)的工作原理 57
2.3.2 常规检查点与增量检查点 59
2.3.3 LOG_CHECKPOINT_TO_ALERT参数 63
2.3.4 控制文件与数据文件头信息 64
2.3.5 数据库的启动验证 66
2.3.6 使用备份的控制文件 70
2.3.7 FAST_START_MTTR_TARGET 71
2.3.8 关于检查点执行的案例 74
2.3.9 Oracle 10g自动检查点调整 75
2.3.10 检查点信息及恢复起点 78
2.3.11 正常关闭数据库的状况 78
2.3.12 数据库异常关闭的情况 80
2.3.13 数据库并行恢复案例一则 82
2.3.14 判断一个死事务的恢复进度 85
2.4 数据库的初始化 86
2.4.1 bootstrap$及数据库初始化过程 86
2.4.2 bootstrap$的定位 88
2.4.3 Oracle中独一无二的Cache对象 89
2.4.4 Oracle数据库的引导 91
2.4.5 系统对象与bootstrap$ 92
2.4.6 bootstrap$的重要性 94
2.4.7 BBED工具的简要介绍 95
2.4.8 坏块的处理与恢复 97
第3章 参数及参数文件 103
3.1 初始化参数的分类 103
3.1.1 推导参数(Derived Parameters) 103
3.1.2 操作系统依赖参数 104
3.1.3 可变参数 104
3.1.4 初始化参数的获取 105
3.2 参数文件 107
3.2.1 PFILE和SPFILE 108
3.2.2 获取参数的视图 110
3.2.3 SPFILE的创建 111
3.2.4 SPFILE的搜索顺序 112
3.2.5 使用PFILE/SPFILE启动数据库 112
3.2.6 修改参数 113
3.2.7 解决SPFILE参数修改错误 118
3.2.8 重置SPFILE中设置的参数 120
3.2.9 判断是否使用了SPFILE 120
3.2.10 SPFILE的备份与恢复 121
3.2.11 Oracle 11g参数文件恢复 127
3.2.12 如何设置Events事件 128
3.2.13 导出SPFILE文件 129
3.3 诊断案例之一:参数文件 131
3.3.1 登录系统检查告警日志文件 131
3.3.2 尝试重新启动数据库 132
3.3.3 检查数据文件 132
3.3.4 MOUNT数据库,检查系统参数 133
3.3.5 检查参数文件 133
3.3.6 再次检查alert文件 134
3.3.7 修正PFILE 135
3.3.8 启动数据库 135
3.4 诊断案例之二:RAC环境参数文件 135
3.4.1 数据库资源异常 135
3.4.2 问题的发现 136
3.4.3 参数文件问题的解决 137
第4章 数据字典 138
4.1 数据字典概述 138
4.2 内部RDBMS(X$)表 138
4.3 数据字典表 141
4.4 静态数据字典视图 145
4.4.1 静态数据字典视图的分类 145
4.4.2 静态数据字典视图的内部实现 146
4.4.3 常用数据字典视图举例 148
4.5 动态性能视图 151
4.5.1 GV$和V$视图 151
4.5.2 GV_$、V_$视图和V$、GV$同义词 152
4.5.3 进一步的说明 156
4.5.4 动态性能视图与数据库启动 157
4.6 最后的验证 157
4.6.1 V$PARAMETER的结构 157
4.6.2 视图还是同义词 158
4.6.3 Oracle如何通过同义词定位对象 159
第5章 内存管理 162
5.1 PGA管理 162
5.1.1 什么是PGA 162
5.1.2 UGA与CGA 163
5.1.3 PGA管理技术的变迁 165
5.1.4 参数的设置与内存分配 166
5.1.5 自动PGA管理实现原理 169
5.1.6 PGA的调整建议 173
5.1.7 PGA的转储 176
5.2 SGA管理 178
5.2.1 SGA的组成 179
5.2.2 SGA与共享内存 186
5.2.3 SGA管理的变迁 191
5.3 Oracle的内存分配和使用 204
5.3.1 诊断案例一:SGA与SWAP 205
5.3.2 诊断案例二:SGA设置过高导致的系统故障 208
5.3.3 诊断案例三:如何诊断和解决CPU高度消耗(100%)问题 212
第6章 Buffer Cache与Shared Pool原理 215
6.1 Buffer Cache原理 215
6.1.1 LRU与Dirty List 215
6.1.2 Cache Buffers LRU Chain闩锁竞争与解决 220
6.1.3 Cache Buffer Chain闩锁竞争与解决 221
6.2 Shared Pool的基本原理 233
6.2.1 Oracle 11g新特性:Result Cache 234
6.2.2 Shared Pool的设置说明 238
6.2.3 Oracle 9i子缓冲池的增强 243
6.2.4 Oracle 10g共享池管理的增强 245
6.2.5 了解X$KSMSP视图 247
6.2.6 Shared Pool的转储与分析 250
6.2.7 诊断和解决ORA-04031错误 262
6.2.8 Library Cache Pin及Library Cache Lock分析 273
6.2.9 诊断案例一:version_count过高造成的Latch竞争解决 281
6.2.10 V$SQL与V$SQLAREA视图 287
6.2.11 Oracle 10g中version_count过高的诊断 292
6.2.12 诊断案例二:临时表引发的竞争 297
6.2.13 小结 299
第7章 重做(Redo) 300
7.1 Redo的作用 300
7.2 Redo的原理 301
7.3 Redo与Latch 302
7.4 Oracle 9i Redo的增强 303
7.5 Oracle 10g Redo的增强 304
7.6 Redo的内容 307
7.7 产生多少Redo 310
7.8 Redo写的触发条件 314
7.8.1 每3秒超时(Timeout) 314
7.8.2 阈值达到 314
7.8.3 用户提交 315
7.8.4 在DBWn写之前 315
7.9 Redo Log Buffer的大小设置 316
7.10 commit做了什么? 317
7.11 日志的状态 318
7.12 日志的块大小 321
7.13 日志文件的大小 322
7.14 如何调整日志文件大小 324
7.15 为什么热备份期间产生的Redo要比正常的多 326
7.16 能否不生成Redo 329
7.17 Redo故障的恢复 333
7.17.1 丢失非活动日志组的故障恢复 333
7.17.2 丢失活动或当前日志文件的恢复 335
7.18 诊断案例一:通过Clear日志恢复数据库 339
7.19 诊断案例二:日志组过度激活的诊断 342
附录 数值在Oracle的内部存储 344
第8章 回滚与撤销 347
8.1 什么是回滚和撤销 347
8.2 回滚段存储的内容 348
8.3 并发控制和一致性读 349
8.4 回滚段的前世今生 350
8.5 Oracle 10g的UNDO_RETENTION管理增强 355
8.6 UNDO_RETENTION的内部实现 357
8.7 Oracle 10g In Memory Undo新特性 358
8.8 Oracle 11g UNDO表空间备份增强 360
8.9 回滚机制的深入研究 361
8.9.1 从DML更新事务开始 361
8.9.2 获得事务信息 362
8.9.3 获得回滚段名称并转储段头信息 362
8.9.4 获得跟踪文件信息 363
8.9.5 转储前镜像信息 364
8.9.6 转储数据块信息 367
8.9.7 块清除(Block Cleanouts) 369
8.9.8 提交之后的UNDO信息 373
8.10 Oracle 9i闪回查询的新特性 375
8.11 使用ERRORSTACK进行错误跟踪 377
8.12 Oracle 10g闪回查询特性的增强 378
8.13 ORA-01555成因与解决 382
8.14 Oracle 11g闪回数据归档 389
8.15 AUM下如何重建UNDO表空间 393
8.16 使用Flashback Query恢复误删除数据 394
8.17 诊断案例之一:释放过度扩展的UNDO空间 396
8.18 特殊情况的恢复 399
8.19 诊断案例之二:回滚段损坏的恢复 402
第9章 等待事件 406
9.1 等待事件的源起 406
9.2 从等待发现瓶颈 408
9.2.1 V$SESSION 和V$SESSION_WAIT 409
9.2.2 V$SESSION_EVENT和V$SYSTEM_EVENT 410
9.2.3 Oracle 11g实时SQL监控 411
9.2.4 从V$SQLTEXT中追踪 414
9.2.5 捕获相关SQL 415
9.3 Oracle 10g的增强 417
9.3.1 新增v$session_wait_history视图 418
9.3.2 ASH新特性 419
9.3.3 自动负载信息库:AWR的引入 425
9.3.4 自动数据库诊断监控:ADDM的引入 436
9.4 顶级等待事件 436
9.5 重要等待事件 439
9.5.1 db file sequential read(数据文件顺序读取) 439
9.5.2 db file scattered read等待事件 440
9.5.3 direct path read/write(直接路径读/写) 444
9.5.4 日志文件相关等待 453
9.5.5 Enqueue(队列等待) 458
9.5.6 Latch Free(闩锁释放) 462
9.5.7 Oracle 10g/11g Latch机制的变化 467
第10章 性能诊断与SQL优化 471
10.1 使用AUTOTRACE功能辅助SQL优化 471
10.1.1 AUTOTRACE功能的启用 471
10.1.2 Oracle 10g AUTOTRACE功能的增强 473
10.1.3 AUTOTRACE功能的内部操作 475
10.1.4 使用AUTOTRACE功能辅助SQL优化 477
10.2 获取SQL执行计划的方法 479
10.2.1 通过V$SQL_PLAN获得执行计划 479
10.2.2 EXPLAIN PLAN FOR与DBMS_XPLAN 483
10.2.3 通过AWR获取SQL执行计划 487
10.3 捕获问题SQL解决过度CPU消耗问题 488
10.3.1 使用vmstat检查系统当前情况 488
10.3.2 使用TOP工具辅助诊断 489
10.3.3 检查进程数量 490
10.3.4 登录数据库 490
10.3.5 捕获相关SQL 491
10.3.6 创建新的索引以消除全表扫描 494
10.3.7 观察系统状况 494
10.3.8 性能何以提高 495
10.3.9 小结 497
10.4 使用SQL_TRACE/10046事件进行数据库诊断 497
10.4.1 SQL_TRACE及10046事件的基础介绍 497
10.4.2 诊断案例之一:隐式转换与索引失效 502
10.4.3 诊断案例之二:跟踪后台错误 506
10.4.4 10046与等待事件 509
10.5 使用物化视图进行翻页性能调整 514
10.5.1 系统环境 514
10.5.2 问题描述 514
10.5.3 捕获排序SQL语句 515
10.5.4 确定典型问题SQL 515
10.5.5 选择解决办法 517
10.5.6 进一步的调整优化 518
10.5.7 小结 520
10.6 一次横跨两岸的问题诊断 520
10.6.1 第一封求助邮件 520
10.6.2 第一次回复 523
10.6.3 进一步信息提供 523
10.6.4 进一步的诊断 524
10.6.5 最后的问题定位 525
10.6.6 小结 525
10.7 总结 525
作者简介
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究相关技术,并结合性能调整及丰富的诊断案例,力图将Oracle知识全面、系统、深入地展现给读者。.
本书给出了大量取自实际工作现场的实例,在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。...
图书封面