具体描述
《大话Oracle RAC(集群高可用性备份与恢复)》(作者张晓明)以Oracle 10g为基础,对Oracle RAC进行了全面的介绍和分析。全书分为两个部分,共14章,第1部分是集群理论篇,这部分从集群基础知识入手,通过分析集群环境和单机环境的不同,介绍了集群环境的各个组件及其作用,以及集群环境的一些专有技术,包括Oracle Clusterware、Oracle Database、ASM、Cache Fusion等。第2部分是实践篇,每一章都针对RAC的一个知识点展开讲解,包括Oracle Clusterware的维护、HA与LB、备份、恢复、Flashback家族、RAC和Data Guard的结合使用、RAC和Stream的结合使用,最后对ASM进行深入介绍,并给出性能调整的指导思想。 《大话Oracle RAC(集群高可用性备份与恢复)》按照“发现问题→解决问题→实践与理论相结合”的方式进行介绍,首先对现实问题进行分析,然后提供合适的解决方案,最后自然地引出Oracle中的理论知识点,这种讲解方法能够有效地降低阅读难度,帮助读者更好地掌握相关技能。 《大话Oracle RAC(集群高可用性备份与恢复)》可以作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,也可以作为大中专院校相关专业师生的参考用书和相关培训机构的培训教材。
作者简介
张晓明,Oracle OGP,现用网名“石头狗”,名称来自于《和佛陀赏花去》中的故事:狗会因为人随手去出的一个东西茆而追逐,可能是一个骨头,一块肉,一个眼神。甚至是一个石头。警示一定要看清自己在追逐的东西。
上个世纪90年代末毕业于某著名的医科大学,毕业后分配到某著名医院从事治病救人的神圣工作。不幸的是,在大学最后一年的实习中我接触到了老式486,这让我魂牵梦系,再加上IT热潮对一个热血青年的巨大诱惑,我终于在行医3年后削尖了脑袋挤进了IT业。回想当年,身边有好几位来自知名医学院校的朋友和我一样义无反顾地加入IT工程师队伍,不知道这几位朋友现在安否? 我在IT行业中最初是做开发,先后用过C、C++、Java等各种主流和非主流语言,热火朝天的参与过。C++和Java的网土混战,现在回想起来只有一个词评价“幼稚”,不仅是自己幼稚,整个行业也不太成熟。后转从事数据库开发,再转为数据库管理,最终将此定为自己的职业方向。今天,我把这些年来对Oracle数据库的学习和使用心得记录下来,既是对自己的一个阶段总结,也是与所有志同道合的朋友们共同分享。 现任某SP公司数据库团队负责人,负责管理全国20余省市的OLTP以及公司TB级OLAP系统的开发、优化和护。精通数据库管理、备份、恢复、窖灾等设计和规划,特别是高可用、高并发、高压力数据库环境的设计和优化。
目录信息
第1章 RAC初体验 2
1.1 本书使用环境 3
1.1.1 硬件环境 3
1.1.2 软件环境 4
1.1.3 本书使用的环境 6
1.2 如何在PC机上搭建RAC环境 7
1.2.1 需要下载的软件 7
1.2.2 安装过程 8
1.3 任务列表 16
1.4 规划阶段 17
1.4.1 确认主机名和3个IP地址 17
1.4.2 存储方案选型 17
1.5 实施阶段 19
1.5.1 主机配置 19
1.5.2 安装Oracle Clusterware 27
1.5.3 安装Oracle Database 33
1.5.4 配置Listener 35
1.5.5 创建ASM 38
1.5.6 创建数据库 40
1.6 客户端测试 43
1.6.1 客户端配置 43
1.6.2 体验Failover 44
1.6.3 体验LoadBalance 45
1.6.4 修改归档模式 46
第2章 集群、RAC和MAA 48
2.1 什么是集群 48
2.1.1 系统可靠性 49
2.1.2 系统性能 49
2.1.3 集群的技术基础 50
2.2 集群术语 51
2.2.1 两大关键特性:可扩展性和高可用性 51
2.2.2 两大核心能力:负载均衡和故障转移 52
2.2.3 集群组成元素 52
2.2.4 集群分类 52
2.3 Oracle的高可用架构(MAA) 53
2.3.1 MAA实例 54
2.3.2 双机热备——一个被遗漏的技术 55
2.4 RAC集群 56
2.4.1 存储层 57
2.4.2 网络层 57
2.4.3 集群件层 58
2.4.4 应用层 58
2.5 RAC集群环境的特殊问题 59
2.5.1 并发控制 59
2.5.2 健忘症(Amnesia) 59
2.5.3 脑裂(Split Brain) 59
2.5.4 IO隔离(IO Fencing) 60
2.6 RAC的前世今生 61
2.6.1 Oracle Database的历史 61
2.6.2 Oracle RAC的历史 62
2.6.3 OPS和RAC的区别 64
2.7 RAC的好处 65
2.7.1 增加可用性 66
2.7.2 扩展性 67
2.7.3 更容易管理 67
2.7.4 其他选择 68
2.8 小结 68
第3章 Oracle Clusterware 69
3.1 Clusterware和RAC的关系 69
3.2 Oracle Clusterware组成 70
3.2.1 磁盘文件 70
3.2.2 Clusterware后台进程 76
3.2.3 网络组件 83
3.3 Clusterware的日志体系 87
3.4 Clusterware和厂商集群的关系 88
3.5 小结 89
第4章 RAC原理 90
4.1 数据库基本原理 90
4.1.1 并发访问和数据一致性 91
4.1.2 事务和隔离级别 92
4.1.3 Oracle支持的隔离级别 93
4.2 Oracle单实例的并发控制机制 94
4.2.1 Lock 94
4.2.2 数据记录的行级锁 95
4.2.3 Latch 99
4.2.4 Latch和Lock对比 99
4.2.5 进一步理解 100
4.3 RAC下的并发控制 102
4.3.1 DLM中资源和锁 103
4.3.2 Non-Cache Fusion资源 104
4.3.3 Cache Fusion资源 105
4.3.4 GRD(Global Resource Directory) 106
4.3.5 PCM Lock 107
4.3.6 Cache Fusion 108
4.3.7 RAC并发控制总结 113
4.4 RAC架构 113
4.4.1 SGA的变化 114
4.4.2 后台进程的变化 114
4.4.3 文件 116
4.4.4 SCN 117
4.4.5 Cache Fusion、GCS、GES 118
4.5 RAC和Clusterware的交互 119
4.5.1 Clusterware层 119
4.5.2 RAC层 120
4.6 小结 123
第5章 存储方案——ASM初步 124
5.1 Shared-Disk和Shared-Nothing架构 124
5.2 Oracle 10g RAC的存储方案介绍 125
5.3 ASM架构 125
5.3.1 ASM实例 126
5.3.2 文件 127
5.4 配置ASM 127
5.4.1 安装位置 127
5.4.2 创建ASM磁盘 127
5.4.3 配置ASM实例 137
5.4.4 创建磁盘组 140
5.4.5 在数据库中使用ASM的磁盘组 140
5.4.6 如何从远程访问ASM实例 141
5.5 ASM实例:将数据库迁移到ASM 141
5.5.1 试验说明 141
5.5.2 操作步骤 141
5.5.3 最后验证 148
5.6 小结 148
第2部分 实战篇
第6章 RAC维护工具集 150
6.1 Oracle Clusterware工具集 150
6.2 节点层 150
6.3 网络层 151
6.3.1 公有网络 151
6.3.2 私有网络 151
6.3.3 私有网络的参数调整 154
6.3.4 oficfg命令 155
6.3.5 工程中解决不能识别心跳网络的故障 157
6.4 集群层 159
6.4.1 crsctl 159
6.4.2 OCR命令系列 164
6.4.3 一个Bug引起的系统重启 171
6.5 应用层 185
6.5.1 crs_stat 185
6.5.2 onsctl 188
6.5.3 srvctl 193
6.5.4 恢复 199
6.6 小结 202
第7章 HA和LB 203
7.1 什么是高可用性 203
7.2 Failover 204
7.2.1 Client-Side Connect Time Failover 204
7.2.2 TAF(Transparent Application Failover) 204
7.2.3 Client-Side Failover和TAF的对照试验 205
7.2.4 Server-Side TAF 208
7.2.5 深入TAF细节 214
7.3 Oracle Clusterware HA框架 221
7.3.1 术语介绍 221
7.3.2 配置命令 223
7.3.3 完整实例 228
7.4 LoadBalance 232
7.4.1 Connection Balancing 232
7.4.2 利用Service分散负载 235
7.5 测试LoadBalance 236
7.5.1 通过Listener日志区分路由来源 236
7.5.2 测试方法 237
7.5.3 测试过程 238
7.6 小结 242
第8章 备份 243
8.1 概述 243
8.1.1 归档模式和非归档模式 243
8.1.2 备份分类 245
8.1.3 User-Managed Backup 246
8.2 使用Flash Recovery Area 248
8.2.1 配置Flash Recovery Area 249
8.2.2 Flash Recovery Area的空间监控 249
8.3 RMAN架构 250
8.3.1 Target Database 250
8.3.2 Catalog Database 251
8.3.3 通道(Channel) 251
8.3.4 闪回恢复区(Flash Recovery Area) 251
8.3.5 备份集(Backup Set)和拷贝(Copy) 251
8.3.6 介质管理器 252
8.3.7 连接到数据库 252
8.4 使用RMAN 253
8.4.1 RMAN工具的使用方法 253
8.4.2 RMAN配置 255
8.5 完全备份和增量备份 264
8.5.1 完全备份 264
8.5.2 增量备份 267
8.5.3 其他RMAN命令 269
8.6 RAC的备份实例 275
8.7 小结 278
第9章 恢复 280
9.1 Oracle事务基本原理 280
9.1.1 SCN 282
9.1.2 检查点 284
9.2 日志 286
9.2.1 日志内容 286
9.2.2 日志线程(Redo Thread) 288
9.2.3 日志写 288
9.3 恢复种类 289
9.3.1 Instance Recovery 291
9.3.2 Crash Recovery 291
9.3.3 Media Recovery 295
9.3.4 Online Block Recovery 295
9.4 介质恢复 296
9.4.1 完全恢复 296
9.4.2 不完全恢复 300
9.4.3 恢复到单实例 312
9.5 其他一些有用的恢复演示 319
9.5.1 从自动备份的中恢复spfile 319
9.5.2 控制文件的恢复 320
9.6 利用恢复的控制文件进行数据库恢复 321
9.6.1 使用alter database open resetlogs的场合 321
9.6.2 重建控制文件 321
9.6.3 使用using backup controlfile的场合 322
9.6.4 例子1:使用备份的控制文件做恢复 322
9.6.5 例子2:用noresetlogs方法重建控制文件 326
9.6.6 例子3:用resetlogs方法重建控制文件 329
9.7 DBID的重要性和获得DBID的方法 330
9.7.1 通过数据文件、日志文件(联机或者归档) 330
9.7.2 根据自动备份的控制文件得到 331
9.8 小结 331
第10章 其他恢复技术 332
10.1 数据块恢复 332
10.2 如何检查数据块一致性 333
10.2.1 使用初始化参数 333
10.2.2 DBV工具 334
10.2.3 Analyze命令 336
10.2.4 RMAN工具 336
10.2.5 dbms_repair包 337
10.3 模拟数据块不一致 337
10.4 数据块不一致处理办法 341
10.4.1 收集信息 342
10.4.2 设计恢复方法 343
10.4.3 恢复操作 344
10.5 数据块恢复实例 346
10.6 Flashback家族介绍 353
10.7 Flashback Database 354
10.7.1 Flashback Database架构 354
10.7.2 启用Flashback Database 354
10.7.3 Flashback Database 356
10.7.4 命令和视图 359
10.8 Flashback Drop 360
10.8.1 Tablespace Recycle Bin 360
10.8.2 Flashback Drop操作 361
10.8.3 Recycly Bin的维护 363
10.9 Flashback Query和Flashback Table 364
10.9.1 Oracle 9i的Flashback Query 364
10.9.2 Flashback Version Query 365
10.9.3 Flashback Transaction Query 379
10.9.4 Flashback Table 381
10.9.5 UNDO Retntion 384
10.10 回滚段损坏后的修复 385
10.10.1 AUM(Automatic Undo Management) 385
10.10.2 如何处理回滚段损坏 397
10.11 小结 410
第11章 RAC和Data Guard 411
11.1 Data Guard介绍 411
11.1.1 Data Guard架构 412
11.1.2 日志发送(Redo Send) 412
11.1.3 日志接收(Redo Receive) 414
11.1.4 日志应用(Redo Apply) 415
11.1.5 Data Guard环境中的重要进程 415
11.1.6 Standby Log File(SRL) 416
11.1.7 数据保护模式 417
11.1.8 自动裂隙检测和解决 419
11.1.9 实时恢复(Real-Time Apply,RTA) 420
11.1.10 RTA引发的思考——关于同步的速度 421
11.1.11 如何监控恢复的性能 421
11.2 RAC和Standby配置实例 422
11.2.1 RAC Primary和Single Standby 423
11.2.2 RAC Primary和RAC Standby 433
11.3 角色转换 444
11.3.1 Switchover 445
11.3.2 Failover 448
11.3.3 Failover步骤 452
11.3.4 Failover的例子 454
11.3.5 Failover之收尾 460
11.4 Standby环境下维护联机日志 464
11.4.1 手工添加日志文件 464
11.4.2 手工删除日志文件 465
11.4.3 通过控制文件重新同步 465
11.5 小结 466
第12章 RAC和Stream Replication 467
12.1 Stream的工作原理 467
12.2 Data Guard和Stream对比 468
12.3 RAC Stream配置实例 469
12.3.1 Single(Source)和RAC(Target) 470
12.3.2 RAC对RAC的复制 474
12.3.3 STRMMON工具 492
12.4 小结 494
第13章 深入ASM 495
13.1 非ASM的存储结构 495
13.2 ASM存储结构 496
13.3 ASM文件系统 497
13.3.1 ASM Metadata 497
13.3.2 Physical Metadata 498
13.3.3 Virtual Metadata 499
13.3.4 Disk Recovery 501
13.3.5 条带化(ASM Striping) 501
13.4 ASM中的文件布局规律 502
13.4.1 OMF 502
13.4.2 OFA 505
13.4.3 FRA(Flash Recovery Area)和OMF 506
13.4.4 ASM文件模板(ASM File Template) 507
13.4.5 ASM别名(ASM File Alias) 507
13.5 RDBMS和ASM之间的交互 522
13.6 ASM的实例恢复 524
13.7 ASM和OS Filesystem之间交互 524
13.7.1 dbms_file_transfer包 525
13.7.2 RMAN的CONVERT方法 530
13.7.3 ASM和TTS 530
13.8 ASM的限制 533
13.9 小结 533
第14章 性能与RAC 534
14.1 RAC性能的若干特点 535
14.1.1 RAC环境的一些特殊注意点 537
14.1.2 RAC特有的性能指标 538
14.1.3 对于延迟时间的深入分析 542
14.1.4 RAC特有的等待事件 545
14.2 AWR 545
14.2.1 启用AWR 546
14.2.2 修改AWR配置 546
14.2.3 产生AWR报告 546
14.3 ASH 547
14.4 GC的调整策略 550
14.5 SQL调整策略 551
14.5.1 SQL语句的执行过程 552
14.5.2 SQL性能调整的基本方法 552
14.5.3 PL/SQL和SQL 555
14.6 小结 557
· · · · · · (收起)
读后感
明确 具体 内容实用 很适合刚刚接触RAC的朋友拿来研究 亦可以作为查阅资料的工具 不错!
明确 具体 内容实用 很适合刚刚接触RAC的朋友拿来研究 亦可以作为查阅资料的工具 不错!
明确 具体 内容实用 很适合刚刚接触RAC的朋友拿来研究 亦可以作为查阅资料的工具 不错!
明确 具体 内容实用 很适合刚刚接触RAC的朋友拿来研究 亦可以作为查阅资料的工具 不错!
明确 具体 内容实用 很适合刚刚接触RAC的朋友拿来研究 亦可以作为查阅资料的工具 不错!
用户评价
这本《大话Oracle RAC》最让我印象深刻的一点是它对“运维视角”的倾斜,这在很多偏向理论或开发的技术书中是比较少见的。通常,技术书会把重点放在如何搭建或配置,但这本书似乎更关注“跑起来之后怎么办”。我看到了几个关于性能监控和故障排查的章节标题,它们的名字就透露出一种实战精神,比如“那些隐藏在RAC中的性能黑洞”或者“如何在不停机的情况下定位节点故障”。这种切身的体悟感,让我对这本书的实用价值有了更高的预期。我猜想,作者在撰写这些部分时,肯定经历过无数个在半夜被电话叫醒处理线上问题的夜晚,那些血与泪的教训都被他提炼成了清晰的操作步骤和规避方案。我特别期待它能深入讲解RAC的缓存一致性机制和故障转移(Failover)的具体过程,特别是那些容易被忽略的边缘案例。如果它能在每个关键知识点后附带一个“陷阱提示”或“经验之谈”,那就太完美了。这本书让我感觉它不是一本冰冷的参考手册,更像是一份珍贵的“实战笔记”。
我对这本书的语言风格打心底里感到一种久违的亲切感。如果说技术书籍是一片沙漠,那么这本书就像是一股清泉。它没有使用那种生硬的、充满拉丁词根的官方术语堆砌,而是大量采用了我们日常交流中能理解的表达方式来解释复杂的分布式系统概念。比如,它可能会用“接力跑”来比喻节点间的任务切换,或者用“多人签字”来解释仲裁机制。这种“口语化”的处理,极大地降低了知识的门槛,使得我可以毫无心理负担地去接触和理解那些原本令人望而生畏的RAC核心概念。我尤其欣赏作者在讲解这些“大道理”时,偶尔穿插的那些看似无关紧要的小段子或轶事。这些小小的调味剂,让阅读过程变得轻松愉快,有效地避免了长时间阅读技术内容带来的认知疲劳。它成功地实现了技术深度与阅读趣味性的完美平衡,让我有种在听一位幽默风趣的行家讲故事的感觉,而不是在被动地接收信息轰炸。
我对这本书的结构安排感到非常惊喜,它似乎完全颠覆了我对传统技术书籍“理论先行,实践殿后”的刻板印象。我注意到它在章节的衔接处理上非常巧妙,很多知识点的引入不是突兀地抛出定义,而是通过一个实际的场景或一个读者可能会遇到的痛点自然而然地引申出来。举个例子,在讲到RAC的共享存储时,我感觉作者不是在背诵官方文档,而是在模拟一个真实的故障场景,然后带着你一步步剖析为什么需要这种架构,这种“故事化”的叙述方式,对于我这种需要将知识点与实际工作联系起来才能记忆深刻的人来说,简直是醍醐灌顶。而且,它的内容深度似乎拿捏得恰到好处。它既不会浅尝辄止,让读者看完后依然感觉抓不住重点,也不会一头扎进底层代码的海洋里迷失方向。我翻阅了其中关于“集群资源管理”的几页,发现它用流程图和伪代码结合的方式,清晰地展示了资源分配的决策过程,这比纯文字的描述效率高了何止百倍。这种对读者学习路径的细致考量,让我觉得作者不仅是技术专家,更是一位深谙教学之道的导师。
从这本书的整体脉络来看,它似乎非常注重知识体系的完整性和递进性,这一点对于系统性学习至关重要。我注意到,它不是孤立地讲解RAC的各个组件,而是将它们有机地编织成一个完整的生态系统进行阐述。例如,在讲解完节点间的通信机制后,紧接着就会展开讨论心跳机制如何保障集群的稳定性,这体现了作者对“系统思维”的深刻理解。更难能可贵的是,它似乎没有停留在“是什么”的层面,而是深入探讨了“为什么是这样设计”的深层逻辑。我希望它能在深入探讨RAC的存储层架构时,能够清晰地区分不同存储方案的优劣,并给出在不同业务场景下(比如高I/O密集型与事务密集型)的推荐配置倾向。这本书的结构就像是为我量身定制的一份学习地图,从基础概念的“破冰”,到核心机制的“攻坚”,再到高级特性的“拓展”,每一步都有明确的指引,让人感觉每翻过一页,自己的知识储备都在稳步、扎实地增长,完全不像在走马观花。
这本《大话Oracle RAC》的封面设计简直是直击我这种数据库小白的心坎啊!拿到书的那一刻,我就被它那种轻松活泼的气氛给吸引住了。我一直觉得数据库,尤其是Oracle RAC这种企业级的东西,肯定又是枯燥又是深奥,感觉就像面对一座难以逾越的大山。但是这本书的标题和装帧设计,完全没有那种高高在上的技术感,反而像是一个经验丰富的老前辈,拍着我的肩膀说:“来,兄弟,咱们唠唠嗑,把这RAC搞明白。” 我尤其欣赏它在排版上那种留白的艺术,不像很多技术手册恨不得把每一个像素都塞满文字,让人光是翻阅就感到压力山大。光是看目录的章节命名,我就能感受到作者在努力“翻译”那些晦涩难懂的专业术语。比如,它不会直接用一堆缩写堆砌,而是尝试用更贴近生活的比喻来阐述集群的架构和工作原理。这本书的纸张质量也相当不错,拿在手里沉甸甸的,翻阅起来触感很好,这对于一本需要反复查阅的工具书来说,简直是加分项。我相信,仅仅是打开这本书的这个动作,就足以让我对即将展开的学习旅程少了一半的畏惧。我期待它能在讲解RAC的复杂概念时,也保持这份亲切感和易读性,让我这个门外汉也能笑着把它啃下来。
不错,不过,还得多实践才行
不错,不过,还得多实践才行
不错,不过,还得多实践才行
不错,不过,还得多实践才行
不错,不过,还得多实践才行