Oracle 24×7技术与技巧:数据库高可用性实现方案

Oracle 24×7技术与技巧:数据库高可用性实现方案
作 者: 戴瑞哲 胡季红
出版社: 机械工业出版社
丛编项: Oracle技术系列丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Oracle
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《Oracle 24×7技术与技巧:数据库高可用性实现方案》作者简介

内容简介

本书主要介绍在Oracle数据库服务器系统中实现高可用性的技术途径以及系统性能优化方法,从而为用户提供具有24×7 正常工作时间特点的系统。全书共八个部分,分别从系统需求、软硬件环境、数据库安装与维护、数据库疑难解决、高可用性解决方案、实用工具、Oracle 新特性等方面进行阐述。 本书讨论的是Oracle数据库系统管理与开发中的高级技巧,许多设计实例都来自作者的实际工作,因此具有很高的适用性。其特点是很少论及关于数据库的深奥理论,而注重于技术的实际应用。 本书的读者对象主要是公司的技术人员,包括DBA、数据库开发人员;但其内容对于各层次的读者,特别是那些从事数据库应用程序开发的人员同样具有深远的指导意义。

图书目录

贺辞

译者序
引言
前言
第一部分


第1章

确定自己的正常工作时间需求
1.1

理解24×7对于公司的重大作用
1.1.1

分析是否需要24×7正常工作时间的系统可用性
1.1.2

理解"数据库"中的各个组件
1.1.3

分析数据库系统中容易出错的部分以及出错时所产生的症状


1.2

实现一个"理想的"24×7系统
1.2.1

24×7数据库系统的共同目标
1.2.2

利用服务级协议管理系统需求
1.2.3

只有90%的系统可用性就意味着节省90%的系统开销


1.2.4

理解系统维护动作对于可用性的影响
1.3

半专业技术管理员与主管人技巧
1.3.1

24×7方式需要对操作管理实施的基本方法
1.3.2

在关键数据库访问时间创建"24×7小组"
1.3.3

维护一个在数据库系统出现问题时需要告知的扩展人员列表


1.3.4

尽量在数据库系统停工之前预先通知客户或者终端用户


1.4

小结
第2章

理解与处理紧急事件
2.1

什么是紧急事件
2.1.1

分类与罗列公司特定数据库环境下的所有可能紧急事件


2.1.2

如何应付紧急事件
2.2

小结
第二部分

理解系统环境
第3章

硬件配置
3.1

硬件配置简介
3.1.1

真正熟悉系统的构成组件
3.1.2

慎重选择磁盘阵列大小
3.1.3

不要在OLTP应用程序中使用预读Cache
3.1.4

不要依赖于写Cache来清除I/O热点
3.1.5

使用多级RAID
3.1.6

确保分条大小与操作系统和数据库的数据块大小一致


3.1.7

确保硬盘与磁带的I/O数据块大小相匹配
3.2

采用体系结构技术实现系统冗余和系统性能
3.2.1

分析哪些组件是"可热插拔"的
3.2.2

考虑实现基于簇的解决方案
3.2.3

除非是大规模的实现问题,否则避免使用MPP计算机


3.2.4

考虑使用NUMA计算机代替MPP计算机
3.2.5

向硬件提供商租借替代计算机
3.3

小结
第4章

操作系统
4.1

UNIX上的Oracle与Windows

NT上的Oracle
4.2

内核与块大小
4.2.1

定制内核
4.2.2

了解操作系统的逻辑块大小与物理块大小
4.3

raw设备
4.3.1

熟悉raw设备及其作用
4.3.2

预先创建充足的raw划分
4.3.3

为raw划分选择多个标准大小
4.3.4

如果使用的是raw设备,应该将联机重作日志直接放置在这些设备上


4.3.5

不要使用硬盘的0柱面来创建raw划分
4.3.6

为所有的raw设备创建符号链接
4.3.7

了解其他文件系统选项
4.4

系统功能与瓶颈
4.4.1

预先确保任何时候都不会达到系统能力极限
4.4.2

将所有资源密集型应用程序分配到多个服务器上
4.4.3

建立非数据库服务器对CPU与内存的使用限制
4.4.4

不要为与Oracle相关的进程设置优先级
4.4.5

不要在数据库服务器上使用处理器仿射
4.4.6

在产品高峰期不要执行非产品作业
4.4.7

避免使用与Oracle进程竞争的资源密集型命令
4.4.8

经常检查内存泄漏
4.4.9

将交换区空间设置为物理内存的2~4倍大小
4.4.10

在最快的硬盘上分布交换区空间
4.4.11

判断操作系统是否能够对2GB之外的RAM进行寻址
4.4.12

如果可能,对物理内存中的共享内存区域加锁
4.4.13

理解逻辑驱动器与物理驱动器映射
4.4.14

在所有的产品中打开文件系统日志功能
4.4.15

周期性地检查空闲硬盘空间的可用性
4.4.16

保持文件系统与目录的简洁
4.4.17

维护一个后备根文件系统
4.4.18

尽可能启用大文件支持
4.4.19

周期性地查看重要的操作系统日志
4.4.20

利用自动化工具来监视系统瓶颈
4.5

小结
第5章

网络
5.1

管理网络
5.1.1

确保网络没有过载
5.1.2

频繁地ping关键主机
5.1.3

购买网络电缆分析器
5.1.4

不要在NFS的mount分区上创建Oracle数据文件
5.1.5

不要用数据库服务器作为NFS服务器
5.1.6

将网络配置为能够有效地使用子网
5.2

为网络配置定制SQL*Net与Net8
5.2.1

增加网络队列大小
5.2.2

关闭NAGEL算法
5.2.3

使SQL*Net/Net8报文大小与协议MTU能够最佳匹配
5.2.4

在整个公司里使用相同的服务器系列
5.3

半技术性管理员与公司主管技巧
5.4

小结
第6章

应用程序与数据
6.1

应用程序
6.1.1

熟悉应用程序
6.1.2

应用程序分类
6.1.3

代码优化
6.1.4

使应用程序独立于未来的计划改变
6.1.5

利用事务分割的方法来复制数据
6.1.6

对所有的会话关键型应用程序使用Pro*C或OCI
6.1.7

在所有会话关键型应用程序中实现失败恢复能力


6.1.8

熟悉各种自动失败恢复选项
6.1.9

将所有可变应用程序段的MAXEXTENTS设置为无穷大
6.1.10

加速数据加载过程
6.1.11

对应用程序源代码进行版本控制
6.1.12

有效地管理索引
6.1.13

在应用程序中不使用进程而使用线程
6.1.14

在应用程序中使用共享库
6.1.15

仔细进行物理数据库设计
6.1.16

与快速应用程序相关的技巧
6.2

数据
6.2.1

理解计划模型
6.2.2

数据分类
6.3

小结
第三部分

数据库安装和配置
第7章

安装、配置和定制数据库环境
7.1

服务器配置
7.1.1

遵守OFA标准
7.1.2

经常使用config.ora文件
7.1.3

使用crdb_SID.sql和crdb2_SID.sql创建脚本
7.1.4

确保有足够的磁盘空间以维持至少两周的跟踪文件和警告日志


7.1.5

设置数据库块大小时要考虑OS块大小和应用特点
7.1.6

确保将每次写的连续块数目设置大一些
7.1.7

对于Oracle7.X下的大量数据文件,允许CKPT
7.1.8

使用LOG_CHECKPOINT_TIMEOUT和/或LOG_CHECKPOINT_INTERVAL来确保实例修复时间满足SLA中指定的标准


7.1.9

对于活动量很大的数据库创建多于3个的镜像联机重作日志组


7.1.10

适当放置重作日志使ARCH和LGWR相互之间不发生竞争


7.1.11

配置足够多的重作锁存器使竞争最小化
7.1.12

确保DBWR能够与数据库负载保持一致
7.1.13

根据段使用模式将缓冲区缓存划分为多个缓冲池


7.1.14

在数据库活动多时使用从属进程减轻I/O瓶颈
7.1.15

允许向量通知
7.1.16

建立专门的临时表空间
7.1.17

有效地建立排序区域
7.1.18

对于排序使用直接写操作
7.1.19

使用配置文件以避免失去控制的进程消耗系统资源


7.1.20

对于Cooked文件系统使用向量化读操作
7.1.21

使用Cooked文件系统时允许直接I/O
7.1.22

对于大量并行用户访问的情况使用ISM
7.1.23

对于大IPC吞吐量使用通知:等待驱动程序
7.1.24

在主存中预分页并且"加锁"SGA
7.1.25

只要可能,就对当前的数据库版本设置COMPATIBLE
7.1.26

安装SQL*Plus帮助
7.2

其他一些自解释的服务器配置技巧
7.3

SQL*Net/Net8配置
7.3.1

处理大量客户时使用Oracle

Name
7.3.2

对SQL*Net/Net8

使用out-of-band

break或者当out-of-band

break不可用时将轮询频率设得高一些


7.3.3

保持死连接检测为最小
7.3.4

通过SQL*Net和Net8有效地管理大量用户
7.3.5

预先生成专门的服务器进程
7.4

小结
第8章

数据库升级、降级、重组和移植
8.1

升级
8.2

降级
8.3

重组
8.4

移植
8.5

何时应该升级
8.5.1

在测试环境下练习移植
8.5.2

分析每一步并且构造加速移植的策略
8.5.3

从Oracle7升级到Oracle8/8i时要注意一些事情
8.5.4

提高装入/卸载性能的快速技巧
8.6

现实生活中的移植个案研究
8.7

小结
第9章

备份、恢复、存档策略和规程
9.1

备份
9.1.1

经过适当的分析后,选择至少两种备份方法
9.1.2

在低DML

活动期间执行热备份
9.1.3

不要同时将所有表空间置于热备份模式
9.1.4

尽可能先备份到磁盘,再备份到磁带
9.1.5

不要在操作系统热备份时对联机重作日志进行备份


9.1.6

考虑使用三重镜像
9.1.7

确保热备份命令被同步执行
9.1.8

定期检查备份日志文件
9.1.9

避免手工执行备份
9.1.10

确保在使用备份工具时不会影响系统的安全
9.1.11

使用RMAN时,定期对恢复目录进行重同步
9.1.12

确保备份策略适用于所有的Oracle文件类型
9.1.13

数据库发生变化之后立即备份控制文件
9.1.14

开始执行导出之前考虑好与导出相关的各个方面


9.1.15

为段间一致性形成导出组
9.1.16

为导出转储预备足够的空间
9.1.17

执行导出时使用直接路径而不是传统路径
9.1.18

确保所有备份导出转储的兼容性和可用性
9.1.19

系统时钟发生变化后立即备份
9.1.20

备份中和备份后检查数据库错误
9.1.21

备份时设置优化的I/O尺寸
9.1.22

使用Oracle8中增加的备份
9.2

存档
9.2.1

考虑特定环境是否需要ARCHIVELOG模式
9.2.2

以自动存档作为主要存档模式
9.2.3

ARCHIVE

_LOG_DEST分配足够的空间
9.2.4

用"ALTER

DATABASE

ARCHIVELOG"使能存档功能
9.2.5

ARCHIVELOG模式使能后,立即执行一次完整备份
9.2.6

更充分地利用ARCHIVE

LOG

CURRENT
9.2.7

不要在存档日志序列中生成空洞
9.2.8

如果可能的话,在磁盘上保留存档日志的双拷贝


9.2.9

存档到脱机介质上时,创建更多的联机重作日志组


9.2.10

使用OPS时考虑存档的特殊要求
9.3

恢复
9.3.1

理解恢复的必要性并设法避免失败
9.3.2

理解影响恢复时间的因素
9.3.3

确保恢复时机与SLA

MTTR规范的一致
9.3.4

为时间点恢复考虑另外的备份/恢复方法
9.3.5

确保检查点之间有足够的间隔并设置合理的重作日志尺寸防止恢复延迟


9.3.6

恢复的最小单元
9.3.7

恢复之前检查v$datafile
9.3.8

为恢复操作维持一个特殊的init.ora文件
9.3.9

RESELOGS可用作最后采用的措施
9.3.10

估计所有的UNRECOVERABLE和NOLOGGING操作
9.3.11

为恢复将所有的段和表空间进行分类
9.3.12

为加速备份和恢复,将没有写活动的表空间保持为READONLY


9.3.13

恢复期间设置AUTORECOVERY
9.4

给半专门的管理人和监督人准备的技巧
9.4.1

经常测试备份以保证有效恢复
9.4.2

确保数据库管理员能够熟练地执行恢复操作
9.4.3

创建数据库恢复小组
9.4.4

记录所有数据库结构上的变化
9.5

小结
第10章

启动和关闭过程
10.1

启动与关闭过程
10.1.1

将数据库的启动和关闭自动化
10.1.2

使用OEM启动/关闭多个数据库
10.1.3

对于紧急的数据库反应需求,考虑采用"关闭放弃"


10.1.4

执行shutdown

abort前先执行ALTER

SYSTEM

CHECKPOINT
10.2

小结
第四部分

数据库维护
第11章

一般维护
11.1

主动维护和按需维护
11.1.1

在所有可能级上实现健壮的安全性
11.1.2

理解"ORA-1555:Snapshot

too

old

"错误并采取步骤避免它


11.1.3

理解、防止并解决门闩锁和排队锁的竞争
11.1.4

熟悉不同的等待事件并采取步骤减少等待事件
11.1.5

周期性地监测并解决锁冲突
11.1.6

监测共享池的效率并在需要时调节
11.2

通用维护例程需要注意的其他重要问题
11.3

小结
第12章

空间和增长管理
12.1

理解并管理空间及增长
12.1.1

理解影响段增长的商业动因
12.1.2

理解空间消耗的单位
12.1.3

理解构成数据库的各种段
12.1.4

熟悉由于空间管理不足而引发的错误及其影响
12.1.5

对所有的应用程序表空间和SYSTEM表空间使能自动扩展功能


12.1.6

使用标准化文件大小
12.1.7

在标准的文件大小中分配数据文件头块
12.1.8

为每个段类型使用标准的存储语句以减少分段,使空间使用最优


12.1.9

设置INITIAL和NEXT时要考虑DB_BLOCK_SIZE的影响
12.1.10

最优地设置PCTINCREASE来减少分段
12.1.11

理解空闲表并进行最优的设置来减少锁竞争
12.1.12

周期性地合并应用程序表空间
12.1.13

理解错误位置标记的影响
12.1.14

周期性地释放未被使用的块
12.1.15

避免显式地丢弃数据文件
12.1.16

从未预期的紧急空间需求学习"表空间改组"
12.1.17

在DSS环境下不要盲目接受不受限制的段增长
12.2

小结
第五部分

难题解决
第13章

警告日志与跟踪文件
13.1

警告日志
13.1.1

尽可能保持对警告日志的跟踪
13.1.2

熟悉警告日志中的事件或消息
13.1.3

编辑重要的错误信息使之仅被列出一次
13.1.4

每两个星期到三个月对警告日志进行存档整理一次


13.2

跟踪文件
13.2.1

了解跟踪文件中可以获得的信息
13.2.2

了解如何确认跟踪文件所述的具体事件或会话
13.2.3

了解引起跟踪文件产生的原因
13.3

跟踪
13.4

使用SQL*Net和Net8跟踪
13.5

PL/SQL跟踪
13.6

ODBC跟踪
13.7

核心转储文件
13.8

Oracle调试工具
13.9

小结
第14章

标识并解决数据库中断
14.1

了解、预防并修复中断
14.1.1

了解中断及其出现方式
14.1.2

提前检测介质中断
14.1.3

了解如何防止介质中断
14.1.4

了解处理内存中断的技术
14.1.5

熟悉处理逻辑中断的技术
14.1.6

标识并列出所有被怀疑发生中断的部件
14.1.7

标识并列出用户环境下预防、检测和修复中断的措施


14.1.8

获取涉及中断的相关信息
14.1.9

培训管理员处理中断的能力
14.2

小结
第六部分

高可用性解决方案
第15章

备用方法
15.1

Oracle

提供的备用方法
15.1.1

利用备用数据库进行系统灾难修复
15.1.2

当不特别要求24×7连续工作时考虑使用备用实例


15.1.3

利用多个解决方案构造更加有效的方案
15.2

在例行维护和紧急情况下的可用性策略问题
15.2.1

使用定制备用数据库评估
15.2.2

考虑利用备用表处理段级故障
15.2.3

本章讨论的定制解决方案相关注意事项
15.3

小结
第16章

Oracle并行服务器
16.1

理解和管理OPS环境
16.1.1

理解什么是OPS以及它是如何提高可用性的
16.1.2

理解、检测、删除错误的ping
16.1.3

OPS环境下在使用应用程序之前对它们进行划分
16.2

小结
第17章

高级复制
17.1

理解AR
17.1.1

熟悉AR操作和基本功能
17.1.2

理解可以实施的AR高可用性选项
17.1.3

AR体系结构配置方式
17.2

小结
第18章

第三方HA解决方案
18.1

基于硬件/OS的产品
18.1.1

为灾难修复目的考虑使用EMC

SRDF
18.1.2

利用EMC

TIMEFINDER

投资回报进行评估
18.2

基于数据库的产品
第七部分

构建实际的高可用性系统
第19章

24×7工具箱
19.1

利用脚本报告问题
19.1.1

通过定期运行轮询脚本监控特定的故障
19.1.2

当调用PL/SQL时,要熟悉应用失败恢复技术
19.2

小结
第八部分


第20章

Oracle8i中的新HA特性
20.1

面向维护的特性
20.1.1

为了快速移动数据子集而考虑使用可传输的表空间


20.1.2

为了避免碎片而考虑使用本地管理的表空间
20.1.3

熟悉新改变的管理特性
20.1.4

联机创建、重建和消除索引碎片
20.1.5

熟悉对没有划分的表进行重组的特性
20.1.6

如果需要的话,可以很容易地丢弃列
20.1.7

提高连续工作时间的划分特性的增强
20.2

难题解决特性
20.3

备份和面向恢复的特性
20.3.1

利用一些方法方便并且加速RMAN备份
20.3.2

控制和加速恢复时间
20.4

其他HA特性
20.4.1

使用新的监听者失败恢复和负载平衡服务
20.4.2

熟悉LogMiner功能
20.4.3

去掉"胖"OS开销
20.5

小结