eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 青年汇小区业主 vs 朝阳绿化局维权的胜利 | Blog首页 | 美西游记之 - Disney与环球影城 »

《深入浅出Oracle》修订稿全书目录列表
modb.pro

《深入浅出Oracle》一书的修订进入了最后阶段,除了一些小的微调之外,各章节会逐渐确定下来。

新书中除了修订之外,还增加了对Oracle Database 11g的一些相关内容,当然这些内容是根据需要被加入进来的,是全书内容的有机部分。
修订稿第一章目录大致如下,先列出来看看,实际上第一章的内容经过补充,已经包含了更为明确的三个部分,这三个部分指数据库的启动、连接、关闭。

实用性应当进一步得到增强:
第1章  数据库的启动和关闭......................................................2
1.1  数据库的启动..............................................................2
1.1.1  启动数据库到Nomount状态.................................................3
1.1.1.1 实例以及进程的创建.....................................................3
1.1.1.2 V$PROCESS视图..........................................................6
1.1.1.3 参数文件的选择.........................................................8
1.1.1.4 实例启动最小参数需求...................................................9
1.1.1.5 ORACLE_SID的含义......................................................11
1.1.1.6 INSTANCE_NAME的含义...................................................13
1.1.1.7 DB_NAME与INSTANCE_NAME................................................15
1.1.1.8 RMAN的缺省实例........................................................18
1.1.1.9 Nomount案例两则.......................................................19
1.1.2  启动数据库到mount状态..................................................21
1.1.2.1 控制文件的定位........................................................21
1.1.2.2 数据文件的存在性判断..................................................22
1.1.2.3控制文件的HeartBeat....................................................24
1.1.2.3 口令文件的作用........................................................25
1.1.2.4 lk<ORACLE_SID>文件及作用..............................................26
1.1.2.5 Mount相同db_name的数据库..............................................27
1.1.3  启动数据库open阶段.....................................................30
1.1.3.1  Open阶段的一致性校验.................................................31
1.1.3.2  Oracle11g Automatic Diagnostic Repository新特性......................35
1.1.3.3  Oracle11g Fault Diagnosability Infrastructure新特性..................38
1.1.3.4  关于诊断的建议.......................................................42
1.2  数据库的访问.............................................................43
1.2.1  客户端的TNSNAMES.ORA文件配置...........................................44
1.2.2  服务器端的监听器文件listener.ora配置...................................46
1.2.3  通过不同服务器名对数据库的访问.........................................48
1.2.4  动态监听器注册服务.....................................................49
1.3  数据库的关闭.............................................................54
1.2.1  数据库关闭的步骤.......................................................54
1.2.1  几种关闭方式的对比.....................................................56
1.1.2.1  SHUTDOWN NORMAL......................................................56
1.1.2.1  SHUTDOWN IMMEDIATE...................................................56
1.1.2.1  SHUTDOWN TRANSACTIONAL...............................................56
1.1.2.1  SHUTDOWN ABORT.......................................................57
参考文献:....................................................................59

以下是《深入浅出Oracle》修订版的第二章目录,第二章和前面的第一章,其前身就是原来的第一章。

现在一分为二,内容也不用再紧紧张张,随意现在将很多问题进行了扩展说明。
这一章主要涉及控制文件以及控制文件在数据库运行中的关键作用,检查点、SCN、启动校验等内容:
第1章 控制文件与数据库初始化.............................2
1.1 控制文件的内容.......................................2
1.2 SCN..................................................4
1.2.1  SCN的定义.........................................4
1.2.1  SCN的获取方式.....................................5
1.2.1  SCN的进一步说明...................................6
1.3 检查点-Checkpoint....................................9
1.2.2 检查点(checkpoint)的工作原理.....................10
1.2.2 常规检查点与增量检查点.............................11
1.2.2 LOG_CHECKPOINT_TO_ALERT参数........................16
1.2.2 控制文件与数据文件头信息...........................17
1.2.2 数据库的启动验证...................................19
1.2.2 使用备份的控制文件.................................23
1.2.2 FAST_START_MTTR_TARGET.............................25
1.2.2 关于检查点执行的案例...............................27
1.2.2 Oracle10g自动检查点调整............................29
1.2.2 检查点信息及恢复起点...............................32
1.2.3 正常关闭数据库的状况...............................32
1.2.3.1 数据库的相关信息.................................33
1.2.3.2 redo检查点信息...................................33
1.2.3.3数据文件检查点信息................................34
1.2.4 数据库异常关闭的情况:..............................34
1.2.4.1 数据库的相关信息.................................35
1.2.4.2控制文件记录的redo信息............................35
1.2.4.3数据文件检查点信息................................35
1.2.4.4数据库的实例恢复..................................36
1.2.2 数据库并行恢复案例一则.............................37
1.2.2 判断一个死事务的恢复进度...........................40
1.4 数据库的初始化.......................................41
1.3.1 bootstrap$及数据库初始化过程.......................41
1.3.2 bootstrap$的定位...................................44
1.3.3 Oracle中独一无二的Cache对象........................45
1.3.4 Oracle数据库的引导.................................47
1.3.5 系统对象与bootstrap$...............................48
1.3.6 BOOTSTRAP$的重要性.................................50
1.3.7 BBED工具的简要介绍.................................51
1.3.8 坏块的处理与恢复...................................54
1.3.1 使用BBED模拟和修复坏块.............................56
1.3.2 使用RMAN进行坏块修复...............................58
参考文献:...............................................59

以下是修订后的《深入浅出Oracle》一书第三章目录:

第2章  参数及参数文件........................................2
2.1  初始化参数的分类........................................2
2.1.1  推导参数(Derived Parameters)..........................2
2.1.2  操作系统依赖参数......................................3
2.1.3  可变参数..............................................3
2.1.4  初始化参数的获取......................................4
2.2  参数文件................................................7
2.2.1  PFILE和SPFILE.........................................8
2.2.1  获取参数的视图........................................9
2.2.2  SPFILE的创建.........................................11
2.2.3  SPFILE的搜索顺序.....................................12
2.2.4  使用PFILE/SPFILE启动数据库...........................12
2.2.5  修改参数.............................................14
2.2.5  解决SPFILE参数修改错误...............................19
2.2.6  重置spfile中设置的参数...............................21
2.2.7  是否使用了spfile.....................................22
2.2.8  SPFILE的备份与恢复...................................23
2.2.8  Oracle11g参数文件恢复................................30
2.2.9  如何设置Events事件...................................31
2.2.10 导出SPFILE文件.......................................32
2.3  参数文件诊断案例之一...................................34
2.3.1 登陆系统检查告警日志文件文件..........................35
2.3.2.  尝试重新启动数据库..................................36
2.3.3.  检查数据文件........................................36
2.3.4.  mount数据库,检查系统参数...........................36
2.3.5.  检查参数文件........................................37
2.3.6.  再次检查alert文件...................................37
2.3.7.  修正 pfile..........................................39
2.3.8.  启动数据库..........................................39
2.4  RAC环境参数文件诊断案例................................40
2.4.1  数据库资源异常.......................................40
2.4.2  问题的发现...........................................40
2.4.3  参数文件问题的解决...................................42


以下是第四章目录:

第3章  数据字典..............................................1
3.1  数据字典概述............................................1
3.2  内部RDBMS(X$)表.......................................2
3.3  数据字典表..............................................5
3.4  静态数据字典视图........................................9
3.4.1  静态数据字典视图的分类................................9
3.4.2  静态数据字典视图的内部实现...........................11
3.4.3  常用数据字典视图举例.................................13
3.5  动态性能视图...........................................16
3.5.1  GV$和V$视图..........................................17
3.5.2  GV_$,V_$视图和V$,GV$同义词...........................18
3.5.3  进一步的说明.........................................22
3.5.4  动态性能视图与数据库启动.............................23
3.6  最后的验证.............................................24
3.6.1  V$PARAMETER的结构....................................24
3.6.2  视图还是同义词.......................................25
3.6.3  Oracle如何通过同义词定位对象.........................26

以下是第五章目录:
第4章  内存管理..........................................2
4.1 PGA管理..............................................2
4.2.1 什么是PGA..........................................2
4.2.2 UGA与CGA...........................................4
4.2.3 PGA管理技术的变迁..................................6
4.2.4 参数的设置与内存分配...............................7
4.2.5 自动PGA管理实现原理...............................10
4.2.6 PGA的调整建议.....................................15
4.2.7 PGA的转储.........................................19
4.2 SGA管理.............................................21
4.1.1 SGA的组成.........................................22
1.  固定区域 - Fixed Area...............................22
1. Buffer Cache.........................................25
2.Shared Pool...........................................28
3. Redo Log Buffer......................................28
4. 其他内存组件.........................................28
4.1.2 SGA与共享内存.....................................31
4.1.3 SGA管理的变迁.....................................36
1.  Oracle8i中静态SGA的管理.............................36
2.  Oracle9i动态SGA管理.................................36
3.  Oracle10g自动共享内存管理...........................43
4.  Oracle11g自动内存管理...............................47
4.3 Oracle的内存分配和使用..............................52
4.3.1 诊断案例一-SGA与Swap..............................52
1.  登陆数据库,检查系统进程............................53
2.  检查警报日志文件....................................53
3.  尝试连接数据库......................................54
4.  检查系统日志........................................54
5.  检查系统内存及交换区使用............................54
6.  检查数据库的SGA设置.................................55
7.  调整内容............................................55
7.  问题总结:...........................................56
4.3.2 诊断案例二-SGA设置过高导致的系统故障..............56
1.  登陆数据库,检查警告日志文件........................56
2.  检查共享内存设置....................................57
3.  检查SGA设置.........................................58
4.  交换区问题..........................................58
5.  解决方案............................................59
6.  系统调整后状态......................................59
7.  一点总结............................................60
8.  后续研究............................................60
4.3.3 诊断案例三-如何诊断和解决CPU高度消耗(100%)问题....61
1. 通过Top命令查看......................................61
2. 找到存在问题的进程信息...............................62
3. 捕获存在问题的SQL语句................................62
4. 连接数据库,找到问题sql及进程.........................62
5. 进一步的跟踪.........................................63


以下是第六章目录:
第5章  Buffer Cache与Shared Pool原理..............................1
5.1  Buffer Cache原理.............................................2
5.1.1  LRU与Dirty List............................................2
5.1.2  Cache Buffers Lru Chain闩锁竞争与解决......................8
5.1.3  Cache Buffer Chain闩锁竞争与解决..........................10
5.2  Shared Pool的基本原理.......................................24
5.2.1  Oracle11g新特性-Result Cache..............................25
5.2.1  Shared pool的设置说明.....................................30
5.2.1  Oracle9i子缓冲池的增强....................................36
5.2.1  Oracle10g共享池管理的增强.................................39
5.2.2  了解X$KSMSP视图...........................................41
5.2.2  Shared Pool的转储与分析...................................45
5.2.3 诊断和解决Ora-04031错误....................................60
5.2.3.1 什么是Ora-04031错误......................................60
5.2.3.2 关注相关Bug信息..........................................61
5.2.3.3 绑定变量和cursor_sharing.................................63
5.2.3.4使用Flush Shared Pool缓解共享池问题.......................66
5.2.3.5 SHARED_POOL_RESERVED_SIZE参数的设置及作用................67
5.2.3.6 其他.....................................................68
5.2.3.7 模拟Ora-04031错误........................................69
5.2.4 Library Cache pin及Library Cache Lock分析..................72
5.2.4.1 LIBRARY CACHE PIN等待事件................................73
5.2.4.2. LIBRARY CACHE LOCK等待事件..............................79
5.2.4.2. Oracle10g的增强.........................................80
5.2.5诊断案例一-version_count过高造成的Latch竞争解决.............81
5.2.6 V$SQL与V$SQLAREA视图.......................................89
5.2.4.1 V$SQL视图与V$SQLAREA视图.................................89
5.2.4.1 v$sql视图和v$sqlarea的构建...............................92
5.2.6 Oracle10g中version_count过高的诊断.........................94
5.2.6诊断案例二-临时表引发的竞争.................................99
5.2.7总结.......................................................102

以下是新书的第七章目录:
第7章  重做(redo).........................................1
7.1 Redo的作用..............................................1
7.2 Redo的原理..............................................2
7.3 Redo与Latch.............................................3
7.4 Oracle9i Redo的增强.....................................5
7.5 Oracle10g Redo的增强....................................7
7.6 Redo的内容.............................................10
7.7 产生多少Redo?..........................................14
7.8 redo写的触发条件.......................................18
7.8.1 每3秒钟超时(Timeout)...............................18
7.8.2 阈值达到.............................................19
7.8.3 用户提交.............................................19
7.8.4 在DBWn写之前.........................................20
7.9 Redo Log Buffer的大小设置..............................21
7.10  commit做了什么?......................................22
7.11  日志的状态...........................................22
7.12  日志的块大小.........................................26
7.13  日志文件的大小.......................................28
7.14  如何调整日志文件大小.................................29
7.15  为什么热备份期间产生的redo要比正常得多...............32
7.16  能否不生成redo.......................................36
7.17  Redo故障的恢复.......................................41
7.17.1  丢失非活动日志组的故障恢复.........................41
7.17.2  丢失活动或当前日志文件的恢复.......................43
7.18  通过Clear日志恢复数据库故障一例......................47
7.19日志组过度激活的诊断案例...............................51
附录  数值在Oracle的内部存储...............................54

以下是新书的第八章目录:
第8章  回滚与撤销..............................................1
8.1  什么是回滚和撤消..........................................1
8.2  回滚段存储的内容..........................................2
8.3  并发控制和一致性读........................................3
8.4  回滚段的前世今生..........................................5
8.5  Oracle10g的UNDO_RETENTION管理增强........................11
8.6  UNDO_RETENTION的内部实现.................................13
8.7  Oracle10g In Memory Undo新特性...........................15
8.8  Oracle11g UNDO表空间备份增强.............................17
8.9  回滚机制的深入研究.......................................18
1. 从DML更新事务开始.........................................18
2. 获得事务信息..............................................19
3. 获得回滚段名称并转储段头信息..............................19
4. 获得跟踪文件信息..........................................20
5. 转储前镜像信息............................................21
6. 转储数据块信息............................................25
7. 块清除(Block Cleanouts).................................28
8. 提交之后的UNDO信息........................................33
8.10 Oracle 9i闪回查询的新特性................................35
8.11 使用ERRORSTACK进行错误跟踪...............................37
8.12 Oracle10g闪回查询特性的增强..............................38
8.13  ORA-01555成因与解决.....................................43
8.14  Oracle11g闪回数据归档...................................52
8.15  AUM下如何重建UNDO表空间.................................57
8.16  使用Flashback Query恢复误删除数据.......................58
8.17  诊断案例之-释放过度扩展的Undo空间.......................60
8.18  特殊情况的恢复..........................................64
8.19  诊断恢复案例-回滚段损坏的恢复...........................68

以下是第九章目录:
第8章 等待事件.............................................2
8.1  等待事件的源起........................................2
8.2  从等待发现瓶颈........................................5
8.2.1  V$SESSION 和V$SESSION_WAIT..........................5
8.2.1  V$SESSION_EVENT和V$SYSTEM_EVENT.....................6
8.2.1  Oracle11g实时SQL监控................................8
8.2.2  从V$SQLTEXT中追踪..................................11
8.2.3  捕获相关SQL........................................12
8.3  Oracle10g的增强......................................15
8.3.1 新增v$session_wait_history视图......................16
8.3.2 ASH新特性...........................................17
8.3.3自动负载信息库-AWR的引入.............................24
8.5.4.1 AWR的采样机制.....................................24
8.5.4.1 AWR的采样数据存储.................................26
8.5.4.1 AWR报告展现.......................................28
8.5.4.1 AWR比较报告诊断案例...............................30
8.5.4.1 AWR使用信息报告...................................36
8.3.4自动数据库诊断监控-ADDM的引入........................37
8.4  顶级等待事件.........................................38
8.5  重要等待事件.........................................41
8.5.1 db file sequential read-数据文件顺序读取............41
8.5.2 db file scattered read等待事件......................43
8.5.3 direct path read /write-直接路径读/写...............48
8.5.4.1  磁盘排序诊断案例.................................50
8.5.4.1  并行查询导致性能问题一则.........................52
8.5.4.1  磁盘排序与临时文件...............................54
8.5.4 日志文件相关等待....................................58
8.5.4.1  Log File Switch-日志文件切换.....................59
8.5.4.2  Log file sync-日志文件同步.......................60
8.5.4.3  log file single write............................63
8.5.4.4  log file parallel write..........................63
8.5.4.5  Log Buffer Space-日志缓冲空间....................63
8.5.5 Enqueue-队列等待....................................64
8.5.4.1 最重要的锁定-TM与TX锁.............................65
8.5.4.1 最常见的锁定MR与AE锁..............................66
8.5.4.1 ST-空间事务锁.....................................67
8.5.6 Latch free-闩锁释放.................................69
8.5.7 Oracle 10g/11g Latch机制的变化......................74

以下是新书第十章目录:
第9章  性能诊断与SQL优化..................................2
9.1 使用AutoTrace功能辅助SQL优化..........................2
9.1.1 Autotrace功能的启用.................................3
9.1.2 Oracle10g Autotrace功能的增强.......................4
9.1.3 Autotrace功能的内部操作.............................7
9.1.4 使用Autotrace功能辅助SQL优化........................9
9.2 获取SQL执行计划的方法................................11
9.2.1 通过V$SQL_PLAN获得执行计划.........................12
9.2.2 EXPLAIN PLAN FOR与DBMS_XPLAN.......................17
9.2.3 通过AWR获取SQL执行计划.............................22
9.3 捕获问题SQL解决过度CPU消耗问题.......................23
9.2.4 使用vmstat检查系统当前情况.........................23
9.2.5 使用Top工具辅助诊断................................24
9.2.6 检查进程数量.......................................25
9.2.7 登陆数据库.........................................26
9.2.8 捕获相关SQL........................................26
9.2.9 创建新的索引以消除全表扫描.........................30
9.2.10  观察系统状况.....................................30
9.2.11  性能何以提高.....................................32
9.3 使用SQL_TRACE/10046事件进行数据库诊断................34
9.3.1 SQL_TRACE及10046事件的基础介绍.....................34
9.3.1.1  SQL_TRACE说明...................................34
9.3.1.2  10046事件说明...................................37
9.3.1.3  获取跟踪文件....................................38
9.3.1.4读取当前session设置的参数.........................39
9.3.2案例分析之一-隐式转换与索引失效.....................39
9.3.2.1 问题描述.........................................40
9.3.2.2检查并跟踪数据库进程..............................40
9.3.2.3检查trace文件.....................................41
9.3.2.4登陆数据库,检查相应索引及表结构...................42
9.3.2.5解决方法..........................................43
9.3.2.6总结..............................................44
9.3.3案例分析之二-跟踪后台错误...........................44
9.3.3.1问题描述..........................................45
9.3.3.2 drop user出现问题................................45
9.3.3.3 跟踪问题.........................................45
9.3.3.4 问题定位.........................................47
9.3.3.5 一点总结.........................................48
9.3.4 10046与等待事件....................................49
9.3.4.1 100046事件的使用.................................49
9.3.4.2 10046 与db_file_multiblock_read_count............50
9.3.4.3 10046与执行计划的选择............................52
9.3.4.4 db_file_multiblock_read_count与系统的IO能力......53
9.3.4.5 总结.............................................54
9.4 使用物化视图进行翻页性能调整.........................54
9.4.1系统环境............................................55
9.4.2问题描述............................................55
9.4.3捕获排序SQL语句.....................................55
9.4.4确定典型问题SQL.....................................56
9.4.5  选择解决办法......................................59
9.4.6  进一步的调整优化..................................60
9.4.7  一点总结..........................................62
9.5 一次横跨两岸的问题诊断...............................63
9.5.1 第一封求助邮件.....................................63
9.5.2第一次回复..........................................67
9.5.3进一步信息提供......................................67
9.5.3进一步的诊断........................................69
9.5.4最后的问题定位......................................69
9.5.5一点总结............................................70
9.6  总结................................................70


历史上的今天...
    >> 2021-10-12文章:
    >> 2015-10-12文章:
    >> 2009-10-12文章:
    >> 2006-10-12文章:
    >> 2005-10-12文章:
    >> 2004-10-12文章:
           Use RMAN to Manage BackupSet

By eygle on 2008-10-12 17:50 | Comments (21) | Books | OraNews | 2056 |

21 Comments

真不错.大师.何时出书哟.我搞一本.

争取年底之前出来:)

弄个签名吧,我先预定一本,呵呵

这些内容 有很多在您的BLOG里面都有。:)

楼上的意思,我以后要少写Blog,哈哈!

不是有大师提醒过Eygle在网上不要无条件Share你的知识么?

Share的知识更提高了eygle的知名度。虽然eygle的blog上面都有,但是,书 还是 值得珍藏的!所以,我每本书都买了。:)

到时一定入手,深入浅出这本蛮经典的,目前温故知新中,第一版虽然有点小毛病,但是透着股野性,我很喜欢,嘿嘿

现在能静下心来写书的人太少了,就算写了,基本上也都是写完就撒手不管了,看到深入浅出的修订版浮出水面,很开心

有些地方是需要补充一下,感觉之前的Library Cache pin及Library Cache Lock那一段写得不是很清楚

期待出版!

鉴于pivot904的提议,今早又将Library Cahce pin/lock部分修订了一次

多加写您blog上面没有的案例,会更加实用;而且,现在买书的很多人看重书中的例子,还能提高您图书的销量。这么好的建议,您送我一本新书,鼓励下吧。哈哈

这速度,让人感动,霍霍,支持~~

盖老师,你好

关于Library Cache pin及Library Cache Lock,因为我是初学oracle,所以站在初学者的角度看,觉得有一些内容需要稍微补充一下,因为当初我在阅读这一段时,对一些概念没有弄清楚,导致遇到了很大的障碍

比方说,从行文的角度讲,“5.2.1 Shared Pool的设置说明”里包含了freelist、bucket以及chunk的概念,而讲解的重点落在了bucket与chunk的关系,转至“5.2.4 Library Cache pin及Library Cache Lock分析”,在讲解并发控制时,一开始就引入了lock和pin的概念,另外还提到了与并发控制相关的handle以及heap,一般初学者看到这时,可能会犯迷糊(我就是其中一个,呵呵),因为这些内容与前面显得有些脱节

个人觉得在“5.2.1 Shared Pool的设置说明”里应加入对handle以及heap的一些说明,例如bucket与handle及heap的关系,我知道这些内容如果细讲,很难收住,不过可以想办法将其精简,能举例是最好的(可以借鉴hash bucket和cache buffer chain那一段),只有理解了handle与heap的概念,才能更好衔接5.2.4,例如,在5.2.4中有提到“lock比pin具有更高级别”,如果读者在之前了解了handle与heap的关系,这样会更有助于理解这句话,往后,5.2.4中的测试范例实际上就是在围绕lock和pin优先级来进行的,所以引入handle和heap的概念是很有必要的

以上只是我个人的一些看法,毕竟我还只是一个初学者,也许对于很多高人来讲, handle与heap不难理解,而对于初学者,即便之前没听说,通过搜索引擎、论坛,也可以获得更深入的了解,这些都是可行的,但是我还是希望能够在第二版中加入这方面的说明,以方便读者的查阅

很感谢盖老在网络上的无私奉献,同时期待年底第二版的完成

不好意思,上面第二段表述有点小问题,具体点讲应该是补充对library cache内存结构的说明,即hash bucket与handle及heap的关系,关于library cache的内容在第一版P218有涉及,但不是很具体,分布得有点散

别担心,这一部分几乎是重写过了,补充了很多内容。

这一章现在搞到有100多页了,不知道出版社排版后有多少。

非常感谢~~

刚才跟一位朋友聊起第二版的修订幅度,他回复:我们的银子又要外流了!哈哈,看来年底要少吃点猪肉才行;-)

你的blog真的很不错,如果修订版出了,我一定去买一本!加油呢!

可不可以增加一些对oracle锁的机制分析,对这方面 很不理解。

大师一定要多SHARE你的BLOG啊!
知识只有与别人共享,自己才能有更好的进步啊!
因为这样才会不断的推动你向前不断的走啊!

这个网站已经成为我生活的一部分,不会放弃的了:)


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com