欢迎光临
免费的PDF电子书下载网站

Oracle内核技术揭密(Oracle数据库领域传奇人物 深入分析和挖掘Oracle数据库内核中的精髓与秘密,揭示了大量鲜为人知的原理和算法) PDF下载

编辑推荐

1. Oracle数据库领域传奇人物、前*集团级别**的Oracle DBA吕海波(VAGE)10余年职业生涯的集大成之作。

2. 深入分析和挖掘Oracle数据库内核中的精髓与秘密,揭示了大量鲜为人知的原理和算法,并详细阐释了如何建立一套自己的调优排故模型。

 ;

内容简介

  本书是首本国内作者深入剖析Oracle原理的技术书籍。虽以内部原理为主线,但又不乏很多实际的应用案例,希望读者可以将学到的原理与实际应用相结合,提高对Oracle的运维能力。本书第1章主要说明一个方法论问题,总揽了Oracle调优、排故的一般方法。在之后的章节中将会使用这章所介绍的方法来解决问题,并且会进一步分析调优排故的技巧。从第2章到第8章,分门别类地对Oracle各个体系结构和原理进行了逐层深入的介绍,这些章节的内容主要分为两部分:知识体系及原理介绍和相关典型案例分析。这些内容和第1章是相互呼应的。文中结合性能调整、诊断案例实践,将Oracle知识全面、系统、深入地展现给读者,旨在帮助读者建立一套自己的调优、排故模型。第9章作为特别深入的一章,将会讲述在无源码情况下深入研究Oracle的方法,这在国内外还较少见。这一章内容只是一个尝试,如果读者有兴趣,将来可以考虑再出一本书专门讲述这方面内容的图书。

作者简介

  吕海波,网名VAGE,现任ebay principle DBA,曾任*高级数据库专家,**T5级技术专家。ITPUB管理版版主。醉心技术,坚持百尺竿头、更进一步,开创“调试Oracle”领域,精通DTrace、gdb/mdb调试Oracle,是国内唯一有能力阅读Oracle反汇编代码的DBA。凭一己之力,突破了Oracle技术封锁,在网络中分享了多篇深入解析Oracle的技术文章,被誉为Oracle传奇技术大师。学历不高,职业中专,会计专业,持有会计员证书和珠算能手六级证书。18年来一直在技术道路上不懈追求。曾从事电机厂工人,电脑城装机小弟,饭店帮厨,糕点店学徒,精品店老板,计算机培训学校合伙人、校长……众多职业,2004起任DBA至今。一路坎坷,今著此书,欲与大家共享众多Oracle优秀理念与算法。

Oracle内核技术揭密(Oracle数据库领域传奇人物 深入分析和挖掘Oracle数据库内核中的精髓与秘密,揭示了大量鲜为人知的原理和算法) PDF下载

目录

前言第1章 存储结构 1.1 区:表空间中的基本单位 1.1.1 统一区大小表空间和区的使用规则 1.1.2 系统管理区大小 1.1.3 碎片:少到可以忽略的问题 1.2 段中块的使用 1.2.1 块中空间的使用 1.2.2 典型问题:堆表是有序的吗 1.2.3 ASSM与L3、L2、L1块的意义 1.2.4 值得注意的案例:ASSM真的能提高插入并发量吗 1.2.5 段头与Extent Map 1.2.6 索引范围扫描的操作流程 第2章 调优排故方法论 2.1 调优排故的一般步骤 2.1.1 常见DUMP和Trace文件介绍 2.1.2 等待事件 2.1.3 各种资料视图介绍 2.1.4 等待事件的注意事项 2.2 AWR概览 2.2.1 AWR报告的注意事项 2.2.2 AWR类视图 第3章 Buffer Cache内部原理与I/O 3.1 HASH链表 3.1.1 HASH链表与逻辑读 3.1.2 Cache Buffers Chain Latch与Buffer Pin锁 3.1.3 Cache Buffers Chain Latch的竞争 3.2 检查点队列链表 3.2.1 检查点队列 3.2.2 检查点队列与实例恢复 3.2.3 DBWR如何写脏块 3.2.4 如何提高DBWR的写效率 3.3 LRU队列 3.3.1 主LRU、辅助LRU链表 3.3.2 脏链表LRUW 3.3.3 Free Buffer Waits 3.3.4 谁“扣动”了DBWR的“扳机” 3.3.5 日志切换与写脏块 3.4 I/O总结 3.4.1 逻辑读资料分析 3.4.2 减少逻辑读—行的读取 3.4.3 物理I/O 3.4.4 存储物理I/O能力评估 第4章 共享池揭密 4.1 共享池内存结构 4.1.1 堆、区、Chunk与子堆 4.1.2 Chunk类型(x$ksmsp视图) 4.1.3 freeabl、recr与LRU链表 4.1.4 Free List链表 4.1.5 保留池 4.1.6 SQL的内存结构:父游标、子游标 4.1.7 SQL的内存结构:父游标句柄 4.1.8 SQL的Chunk:父游标堆0和DS 4.1.9 SQL的Chunk:子游标句柄 4.1.10 SQL的Chunk:子游标堆0与堆6 4.1.11 SQL所占共享池内存 4.1.12 LRU链表:我的共享池大了还是小了 4.1.13 ORA-4031的吊诡:错误的报错信息 4.1.14 解决ORA-4031之道:如何正确释放内存 4.1.15 Session Cached Cursor与内存占用 4.2 语句解析和执行 4.2.1 SQL执行流程 4.2.2 内存锁原理 4.2.3 Library Cache Lock/Pin 4.2.4 Library Cache Lock/Pin与硬解析 4.2.5 Library Cache Lock/Pin与软解析、软软解析 4.2.6 NULL模式Library Cache Lock与依赖链 4.2.7 存储过程与Library Cache Lock/Pin 4.2.8 断开依赖链 4.2.9 低级内存锁:Latch 4.2.10 Shared Pool Latch 4.3 Mutex 4.3.1 Mutex基本形式 4.3.2 Mutex获取过程:原子指令测试并交换 4.3.3 Mutex获取过程:竞争与Gets资料的更新 4.3.4 Mutex获取过程:共享Mutex与独占Mutex 4.3.5 独占Mutex的获取和释放过程 4.3.6 Mutex获取过程:Sleeps与CPU 4.4 Mutex与解析 4.4.1 Mutex类型 4.4.2 HASH Bucket与HASH链 4.4.3 Handle(句柄)与Library Cache Lock 4.4.4 HASH Table型Mutex 4.4.5 执行计划与Cursor Pin 4.5 通过Mutex判断解析问题 4.5.1  硬解析时的竞争 4.5.2 软解析和软软解析 4.5.3 解决解析阶段的竞争 4.5.4 过度软软解析竞争的解决 4.5.5 Select与执行 第5章 Redo调优与备份恢复原理 5.1 非IMU与IMU Redo格式的不同 5.2 解析Redo数据流 5.3 IMU与非IMU相关的Redo Latch 5.4 Redo Allocation Latch 5.5 Log Buffer空间的使用 5.6 LGWR与Log File Sync和Log File Parallel Write 5.7 IMU什么情况下被使用 第6章 UNDO 6.1 事务基本信息 6.2 回滚段空间重用规则 6.2.1 UNDO块的SEQ值 6.2.2 UNDO段的Extend 6.2.3 Steal Undo Extent:诡异的UNDO空间不足问题 6.2.4 回滚空间重用机制:UNDO块重用规则 第7章 ASM 7.1 ASM文件格式 7.1.1 ASM文件 7.1.2 使用kfed挖掘ASM文件格式 7.2 AU与条带 7.2.1 粗粒度不可调条带 7.2.2 细粒度可调条带 7.2.3 AU与条带的作用 7.2.4 DG中盘数量对性能的影响 7.2.5 最大I/O与最小I/O 7.2.6 数据分布对性能的影响 7.2.7 案例精选:奇怪的IO问题 7.2.8 大AU和小AU性能对比 7.2.9  AU与条带总结 7.2.10 OLTP与大条带 附录 HASH算法简单介绍

媒体评论

海波是Oracle DBA领域出道较晚而又能脱颖而出的异类,他在几乎被钻研通透的Oracle数据库技术领域独辟蹊径,找到了一条属于他自己的兴趣盎然之路。深入内核分析数据库的精髓,既需技艺,又需耐心,如无兴趣与毅力则必无数年如一日的决心,海波做到了他人极难做到的坚持,这非常值得钦佩。书中来自实证实验的剖析,将Oracle数据库的原理精烹而细饪,识者请自取之。

—— 盖国强 云和恩墨创始人,Oracle ACE总监

海波,我数据库学习道路上的领路人之一。遥想当年,拿着海波精心准备的各种介绍Oracle功能实现、隐含参数、内核剖析的小册子,边阅读边做实验,受益匪浅。现如今,小册子变成了这本大部头,内容更是增加了作者在最近几年对Oracle新的研究体会,相信读者能从此书中,汲取更多的营养。

—— 何登成 网易杭州研究院 技术专家

吕海波,网名VAGE。曾混迹于杭州多年,圈内同行称之为“瓦鸡”。他是我多年好友,也是我OCM导师,其Oracle水平,一直是我最佩服的三人之一。他待Oracle始终如初恋,安全地度过了七年之痒。VAGE与Oracle长时间的耳鬓厮磨,让Oracle在其面前再无秘密可言。故VAGE在不同场合炫耀其独享大众“情人”之后的回味,着实令我等羡慕不已。在闲暇之余,我经常以各种借口向其讨教“调教”之法,然始终未得其真传,只可远观而不可亵玩。今日,VAGE耗时2年,终于将其“调教大法”公布于众,对广大DBA来说,幸矣!

—— 周亮 Oracle ACE、《Oracle DBA实战攻略》作者、美创科技技术部经理

免费在线读

  第1章
  存 储 结 构
  存储结构,其实就是表空间、数据文件中的空间组织和使用形式,也许有人会认为存储结构不过是基础知识,相对简单,其实这里面隐藏了很多Oracle的秘密,如果不注意挖掘,将无法把Oracle提供的性能特性完全发挥出来,为我们所用。本章将会抽丝剥茧地为大家全面介绍表空间、数据文件的知识点,除此以外,在本章的最后,还会提供一个精彩的实际案例,帮助大家进一步理解相关知识点,但希望大家不要急着直接学习案例,这样没有太大意义。那么,下面就让我们来扮演一次福尔摩斯,亲手揭开存储结构的谜团吧!
  1.1 区:表空间中的基本单位
  区,Extent,逻辑上连续的空间。它是表空间中空间分配的基本单位。如果在某表空间中创建一个表,哪怕只插入一行,这个表至少也会占一个区。
  具体来讲,在Oracle 10g中,如果创建一个新表,初始至少为这个表分配一个区。而在Oracle 11.2.0.3以上版本中,创建新表时默认一个区都不会分配,也就是说,这个表此时不占存储空间。只有在向表中插入第一行数据时,才会默认为表分配第一个区。
  无论是Oracle 10g还是Oracle 11GR2,如果表原有区中的空间用完了,Oracle就会默认为表一次分配一个区的空间。
  可以通过DBA_EXTENTS数据字典视图查看表所属区。假设有一个表Table1,想要查询它所在的区,可通过如下方式:
  select extent_id, file_id, block_id, blocks from dba_extents where
  segment_name=TABLE1 order by extent_id;
  上面语句中,每个列的意义都很简单,这里不再介绍,如有问题,可以查看Oracle联机文档Oracle Database Reference中的视图介绍。
  说了这么多,大家会不会有一个疑问:既然区这么重要,是空间分配的基本单位,那么,区的大小是如何定义的呢?
  Oracle专门设定了两种类型的表空间:统一区大小表空间和系统管理区大小表空间。区的大小就是由这两种表空间决定的。下面,先从统一区大小讲起。
  1.1.1 统一区大小表空间和区的使用规则
  统一区大小的表空间理解起来很简单,顾名思义,就是创建表空间时,设定区大小为一个统一的值。如下命令创建一个区大小为1MB的表空间:
  create tablespace tbs_ts1 datafile /u01/Disk1/tbs_ts1_01.dbf size 50m uniform size 1m;
  tbs_ts1表空间包含一个50MB的数据文件,区大小为1MB。在此表空间中创建一个测试表:table1,观察一下区大小。
  SQL>; create table table1(id int,name varchar2(20)) tablespace tbs_ts1;
  Table created.
  SQL>; insert into table1values(1,VAGE);
  1 row created.
  SQL>; commit;
  Commit complete.
  SQL>; select extent_id, file_id, block_id, blocks from dba_extents where
  segment_name=TABLE1 order by extent_id;
  EXTENT_ID FILE_ID BLOCK_ID BLOCKS

  ……

Oracle内核技术揭密(Oracle数据库领域传奇人物 深入分析和挖掘Oracle数据库内核中的精髓与秘密,揭示了大量鲜为人知的原理和算法) pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Oracle内核技术揭密(Oracle数据库领域传奇人物 深入分析和挖掘Oracle数据库内核中的精髓与秘密,揭示了大量鲜为人知的原理和算法)