SAMSUNG SCH-W699 User Manual

下载
第一部分

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

首先,请读者想象一下:您是一个网上书店的营销人员。每天,都有来自全球各地的用 户登录到您的数据库中,查找自己所需要的书籍并购买这些书籍。即使是在最不忙碌的深夜, 至少也有1 0 0个用户在访问您的数据库。因此,在任何时候将数据库系统关闭都是不可取的, 而且任何影响性能的瓶颈也是不可接受的。这时,您就要求数据库系统必须全天候地高速运 行。那么,面对下面的问题,该怎么办呢?什么时候执行数据库备份动作?什么时候进行数 据库系统的碎片整理动作?什么时候执行数据库系统所必需的各种维护动作?
欢迎进入2 4×7的世界!术语“2 4×7”是在I TInformation Te c h n o l o g y,信息技术)领 域中,特别是在计算机系统以及数据库操作中频繁使用的一个术语,用来说明某种资源(例 如,数据和系统与计算机系统)的连续可用性。也就是说,如果某个数据库 /系统对于用户每 天2 4小时、每周7天都是可用的,就把这个系统称为运行于“ 2 4×7”方式。
大多数公司对于术语“2 4×7”都非常了解,对于系统停工也不陌生,并且充分地认识到 数据库可用性的重要性。但是,必须花费很高的代价才能保证提高系统运行的正常工作时间。 即使是执行普通的数据库管理任务,都需要进行预先的计划、艰苦的工作等等。
很早以前,许多公司的操作管理员就要求有一个能够支持 2 4×7正常工作时间的系统。直 到最近,这些操作管理员才发现将自己的数据库进行升级并且使它运行在 2 4×7方式下已经迫 在眉睫。也许,DBA (Data Base Administrator, 数据库管理员) 会说,“这好办,可以使用大型 机来解决问题!”。但是,在一个运行O r a c l e数据库系统的中、大型机器上也同样会产生各种 错误。
现在,这种情况发生了变化:操作管理员仍然坚持希望自己的数据库系统能够连续地保 持有效的工作;令人惊奇的是, D B A再也不会认为这样做毫无疑义而耸着肩走开。随着 O r a c l e 8O r a c l e 8 i的发布,人们的注意力进一步集中到系统的可用性上。此外,随着电子商 务与大规模全球市场的开发, D B A即使是在需要进行冷备份时,也不能随便地将数据库系统 关闭。
在理想的情况下(不存在数据库崩溃、磁盘整理、外界环境灾难等等),即使是没有附加 功能(例如备份)的 O r a c l e 7或者O r a c l e 8也可以提供1 0 0%的系统可用性。但是,在真实世界 中,如果没有提供其他附加的手段,想要保证系统工作在 2 4×7方式下是不现实的。 2 4×7方 式要求用户对于系统的全部运行环境非常了解,能够预测到导致系统停工的各种可能情况, 并且能够在不损失系统可用性的情况下对可能发生的意外作好处理准备。
O r a c l e 7O r a c l e 8都支持数据库高可用性的许多功能。虽然,获取数据库系统 9 9 . 9 9%的 可靠性需要有非常巨大的额外开销(更别说是获取 1 0 0%的可靠性了),但用户可以在不提供 任何其他附加手段的情况下使用 O r a c l e 7或者O r a c l e 8获取系统9 0%的可靠性。然而,您能够容
2 第一部分 简
下载
忍自己所提供的服务只有 9 0%的可靠性吗?所谓 9 0%的可靠性,也就是意味着必须容忍每天 有2 . 4小时的系统停工时间、每 1 0天就有1天的系统停工时间、每年有 3 6 . 5天的系统停工时间。 乍一看,似乎这些并不是任何需要有高数据库可用性的公司所需要的。但是,是不是您的公 司就真的需要更高的系统可用性呢?本章将帮助读者确定自己数据库系统的可用性需求。
本章将讨论以下技巧与技术:
分析是否需要2 4×7正常工作时间的系统可用性
理解公司“数据库”的组成部分
分析什么部分容易导致错误以及错误出现的症状
熟悉构建2 4×7系统的共同目标
利用服务级协议管理意外事件
只有9 0%的系统可用性将节省9 0%的系统开销
理解系统维护操作对于系统可用性的影响
• 24×7正常工作时间对操作管理提出更高的要求
在关键性的数据库访问时间段创建“ 2 4×7小组”
维护一个关于数据库访问用户的可扩充列表,以便在危机时通知他们
在数据库系统停工之前,预先通知顾客 /终端用户

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

本节将列出2 4×7的一般内涵,然后说明系统中容易导致停工的各种组件。

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

在确定是否需要2 4×7正常工作时间系统可用性之前,首先必须明确公司对于系统可用性
的需求。在此,笔者将描述自己在两个客户站点的亲身经历。
三年前,我访问了一个位于芝加哥的公司客户站点(不妨把它称为公司 A),这个公司主 要从事旅游与售票服务工作。它有分布在北美洲与欧洲的上百个旅游代理,它们都需要访问 位于公司总部的数据库系统,但这个公司中数据库系统运行并不稳定。笔者经过数小时运行 u t l b s t a t / u t l e s t a t,然后对数据库警告日志进行深入的分析之后,最终发现这个公司的数据库系
统需要进行大规模的性能优化。最后,列出了 1 0个能够对这个数据库进行优化的建议。这些 建议都非常容易实现 (至少本人认为如此)。
在笔者将自己列出的这些建议交给公司的 D B A之后,他说自己也已经注意到了这些问题。 那么,为什么不执行相应的动作来改善这种情况呢?因此,笔者决定绕开 D B A而直接将自己
的详细建议报告发送给这个公司的CIO (首席顾问)。
这些建议包括:
改变某些i n i t . o r a参数,重启数据库系统。
数据库系统被关闭之后,重新启动 U N I X(因为内存已经被严重地分块)。
重新构建D ATA与I N D E X表空间(因为它们同样被严重地分块)。
在主表(包含有 1 6兆行)上删除并重建四个索引。所有的这些索引都是“平面型的”, 从而导致大规模的扫描动作(关于这个问题的详细原因,请参见第 6章)。
任何时候都不要进行热备份(在此之前,即使是在用户访问的高峰期,他们也要每天花
1章 确定自己的正常工作时间需求 3
下载
1 4个小时进行连续的热备份动作)。
看过这些建议之后,C I O问我是否执行所提出的这些建议需要将数据库系统进行重启,在
得到我肯定的答复之后,我就被炒鱿鱼了。
那么为什么会这样呢?也许,高性能并不是这个公司的唯一需求,它们的需求是 2 4×7的 数据库运行时间以及良好的性能。这是因为旅游代理可能会在一天中的任何时候访问数据库 并且进行订票。哪怕是只有一个小时的数据库关闭时间,公司也有可能会损失不小的利益, 因此必须保证系统具有2 4×7的可用性。
一段时间之后,笔者又有机会访问另一个位于 Wo o d r i d g e的公司客户站点(不妨把它称为 公司B),这个公司主要生产面包以及各类甜食。在我工作的第一天,公司的操作管理员提出 希望有一个能够在 (包括周末在内的) 所有时间都可以正常工作的数据库系统(也就是 2 4×7 可用性系统)。当时,我很困惑地想,一个面包生产公司的职员怎么会在星期六的晚上去访问 本公司的O r a c l e数据和系统呢?
同时,我利用U N I X内核命令设计了一个简短的程序代码,用来周期性地访问这个公司的 数据库并记录数据库使用情况。我将这个程序运行了整整一周(包括周末),并且每1 0分钟执 行一次。表1 - 1中列出了我想要获取的信息。
然后,我带着这个报告找到了操作管理员,并且告诉他数据库系统使用的高峰期是正常 的工作时间,本公司并不需要 2 4×7数据库系统。而且,如果试图使用 2 4×7系统,反而会损 失数据管理灵活性。无庸置疑,我的这个建议同样没有得到重视。这样,我只能回到自己的 办公室,等待下一个差事。
1-1 公司B中的数据库每天的使用情况
时 间 段 使 用 情 况
0 8 : 0 01 8 : 0 0 平均6 0个并发用户会话 1 8 : 0 02 0 : 0 0 平均1 5个并发用户会话 2 0 : 0 02 2 : 0 0 平均6个并发用户会话 2 2 : 0 00 0 : 0 0 平均2个并发用户会话 0 0 : 0 00 4 : 0 0 没有用户登录(正在进行热备份) 0 4 : 0 00 7 : 0 0 没有用户登录(完成热备份;没有任何活动) 0 7 : 0 00 8 : 0 0 平均1 0个并发用户会话
通过上述两个例子,可以得出这样的结论:公司 A应该使用2 4×7正常工作时间数据库系 统;而公司B则错误地认为自己需要 2 4×7正常工作时间的系统并且试图建立这种系统。下面 分析运行2 4×7数据库系统所需要的开销。
1. 24×7正常工作时间的开销估计
2 4×7正常工作时间中,主要有以下因素影响其开销。
(1) 管理灵活性
对于新手,一个被普遍认为非常简单的任务有可能几乎不可解决。这些任务包括:
对数据库或操作系统打补丁
冷备份
重新组织表空间和表
创建/重建索引
4 第一部分 简
下载
利用VA L I D ATE STRUCTURE选项分析表/索引
实际上,对于任何需要对重要的表进行上锁的任务,数据和系统的重启或者机器的重新 启动都是不允许的。顾客绝对不允许在数据库访问的高峰期出现机器崩溃的现象(特别是在 机器长期没有被重新启动的情况下更是如此)。笔者曾经发现许多个滥用机器以及数据库的站 点,它们存在各种各样的性能问题。所有这些问题都有可能导致系统的重新启动,从而重新 组织那些成为碎片的内存。也就是说,为了获取高可用性所损失的第一个要素就是管理的灵 活性。
注意 在这里笔者并不赞成频繁地或者是毫无原因地重新启动机器或数据库。事实上,
笔者只是推荐保证机器在大多数情况下都是在不会造成重大性能下降的条件下运行。
但在某些情况下,总会存在一些导致内存分块或者内存泄漏的硬件 b u g或软件b u g
(操作系统、O r a c l e或者其他软件)。例如,内存泄漏,即内存一直被某个程序所霸占,
而没有被释放(这常常表现为使用了 m a l l o c ( )来获取内存,而没有使用相应的 f r e e ( )来 释放内存,或者内存指针错误)。这时,用户就可能会需要花费大量的时间来分析并 查找出现这些问题的原因,然后使用适当的工具(硬件、操作系统、 O r a c l e支持)或
者同时使用多个工具来修复这些问题。多数时候,这些修复工作并不是立刻就可以
进行的,而是必须等待开发商提供相关的补丁之后才能解决。这样,按照预先定义
的间隔时间(例如每四个月或者六个月一次)重新启动机器就变得非常必要(以便
快速地释放浪费的内存以及被分块的内存)。对于进行重新启动的决策,必须在对内
存分块情况经过非常细致的评估之后进行。
那么,是不是在2 4×7方式下运行O r a c l e就是一项非常艰辛的任务呢?关于这个问题,并
没有非常简单的答案。如果对所使用的 O r a c l e系统进行了非常详细的需求分析以及体系结构设
计,那么O r a c l e系统就会在用户预先定义的可用性以及性能需求下正常工作。而如果用户试图
将一些非常昂贵的硬件简单地堆积在一起来组织一个满足自己需求的数据库系统,这是不可 能的。这样做所遇到的第一个问题就是性能问题,另外还有系统可用性问题。
(2) 性能
在现实世界中,性能常常(并不总是)与数据库的正常运行时间成反比(如图 1 - 1所示)。
RAID 0就是这种反比关系的一个典型例子。在 RAID 0 中,为了保证系统性能,数据被通过多 个磁盘/磁盘控制器进行了划分。但是,每个磁盘都成为单一失败点(在 RAID 1或者其他映像 机制不可用的情况下)。这时,所涉及的磁盘数目越多,失败的概率就越大。为了在数据库中 演示一个关于本问题的例子,可以减少数据库的检查点(就是将所修改的数据块缓冲区写入 到磁盘的数据文件上),从而可以通过减少物理 I / O的方法来提高性能。相反,过少的检查点 也会导致系统停工时间的延长,这是因为在数据库崩溃之后需要有很长时间来执行系统恢复 过程。
关于数据库的另一个例子是在 U N R E C O V E R A B L E或者N O L O G G I N G模式下创建索引来 加速数据库建立过程,以便提高系统性能。但是,如果数据库在索引被建立之后就崩溃了, 这种情况也会增加数据库的停工时间。数据库恢复过程不能恢复最新所创建的索引,从而必 须在数据库可用之前手工地创建这个索引,因而会延长停工时间(在后面的段落中将会详细 描述U N R E C O V E R A B L E / N O L O G G I N G操作是如何导致更长的停工时间的)。当然,也会出现 例外的情况。例如,一个非常迅速的索引创建过程(特别是对于具有上兆或者更多行的表来
1章 确定自己的正常工作时间需求 5
下载
说)就有可能会使这个表很快对于所有的应用程序都可以访问(只要加在 C R E ATE INDEX语 句上的锁被释放)。因此,从这个角度看,利用 U N R E C O V E R A B L E模式或者N O L O G G I N G模 式实际上是增强了数据库系统索引的可用性(除非在索引创建之后立刻就发生了数据库崩溃 的现象)。
注意 系统性能与可用性并没有天然的反比关系。理论上来说,可用性是性能的一个
子集(如果系统没有任何吞吐量,那么它就不会有任何可用性)。但从实际的观点看,
性能与可用性是两个相互独立的现象。性能通常与“数据库运行速度有多快”相关,
而可用性通常与“用户在什么时候需要访问数据库”相关。笔者提供了几个例子用
来说明它们两者(U N R E C O V E R A B L E操作与C H E C K P O I N T操作)之间所存在的反
相关性。
影响性能的因素示例
关闭重作日志功能, 减少检查点等等
运行中的热备份
事务分割(将每个事 务写到多个数据库 的应用程序)
可用性 90% 99.999%
1-1 用来说明在真实世界中数据库性能与可用性之间反比关系的图表
让我们绕一个弯来说明U N R E C O V E R A B L E / N O L O G G I N G操作是如何导致更多停工时间
的。这个例子可以适用于O r a c l e 8 i之前的系统环境。一个创建索引的操作会导致表被锁定,从 而阻止并发进行的D M L(插入、更新与删除)操作。因此,在 O r a c l e 8 i之前的版本中,如果 在一个频繁被访问的表中有一个索引正在被创建,那么这个表目前就是不可用的。如果这个 表是一个被频繁访问的表,那么所有那些访问这个表的应用程序都必须被中断。而如果没有 这些应用程序,那么这个数据库对于终端用户就是不可使用的。下面让我们来看一下表 1 - 2和 表1 - 3中的两个数据库脚本。
1-2 UNRECOVERABLE/NOLOGGING模式下表创建过程的事件
脚本1
事 件 序 列 所导致的停工时间
U N R E C O V E R A B L E / N O L O G G I N G模式下创建索引 3 0分钟 数据库崩溃 从上一天晚上的备份中恢复数据库 3 0分钟 数据库开启并且可以使用 所创建的新索引丢失 索引被重新创建 3 0分钟 总停工时间 9 0分钟
6 第一部分 简
下载
1-3 RECOVERABLE/LOGGING模式下表创建过程的事件
脚本 2
事 件 序 列 所导致的停工时间
R E C O V E R A B L E / L O G G I N G模式下创建索引 4 0分钟 数据库崩溃 从上一天晚上的备份中恢复数据库 3 0分钟 数据库开启并且可以使用 所创建的新索引有效 总停工时间 7 0分钟
以上两个脚本说明虽然U N R E C O V E R A B L E可以帮助改善数据库性能,但导致总的停工时 间增加;而且在第二个数据库脚本中,索引是在 R E C O V E R A B L E模式下被创建的,虽然索引 创建时间较长,但在数据库崩溃之后总的停工时间反而降低了。
需要说明的是,虽然由于采用 2 4×7正常工作时间有可能会降低系统的性能,同时也有可
能会降低确保这种性能可被接受的管理灵活性,但是事情并没有这么简单。在保证系统能够 工作于2 4×7方式的条件下,用户没有必要违心地接受(或者强迫用户 /管理员接受)由于2 4
×7方式所带来的低性能,或者认为系统的高性能与高可用性是不可共存的。在现实中,用户 必须在进行系统安装的过程中就同时考虑到系统的性能与可用性,并且将这两者作为进行系 统配置时的目标,而不能只兼顾其中一方。毕竟,一个在性能上非常低劣的数据库系统所提 供的吞吐率与响应时间都是不能接受的。在实际应用中,如果这种性能过于低下并达到某个 临界点,那么就可以认为这个系统不能使用。在这里笔者要说明的一个问题是,虽然在性能 与可用性之间存在一定的对立关系,但用户必须采取一种合适的手段使得这两者都能够最大 限度地发挥效能,而不必为了迎合某一个指标而减弱另一个指标,这一点对于 D B A、系统分 析员、数据创建人员以及体系结构设计者都非常重要。关于这些方法,将在后续章节中详细 描述。例如,可以在进行适当的分析、减少表空间中的冗余段、减少频繁的维护动作之后进 行S TO R A G E参数的指定。所有的这些步骤都不是十分容易理解,如果用户需要为自己的公司 实现一个2 4×7方式的数据库系统,必须对于数据库领域中的各种信息(包括数据库内部的知 识与数据库外部的知识)都非常熟悉。此外,数据库系统中的许多监视工具都是强制进行的, 这些监视工具能够进行数据库中的页管理以及监视数据库管理人员在使用数据库时可能产生 的错误,从而有效地防止数据库因人为使用而导致的出错可能。关于这一点,即使是对于具 有很多管理人员的公司也是非常必要的。只有这样,才能缩小数据库可用性与性能之间的差 异,从而有效地防止这两者之间的差异不断扩大。
(3) 经费开销
除了数据库系统的管理灵活性与性能之外,笔者将要讨论的另一个问题就是开销问题。 实现一个具有高可用性的系统其代价可能是非常昂贵的。在开销与可用性之间存在一个非常 直接的关系,这就是:希望获取的可用性越高,那么开销也就越大(如图 1 - 2所示)。例如, 假设贵公司的数据库系统在每周工作日的上午9点到下午5点之间可以被访问,并且由于计 算机系统或者数据库系统的原因而有时会导致数据库不可被访问。如果在这种情况下,贵公 司的生产效益不会造成过大损失,那么公司的数据库操作人员就可以仅仅配置单独的一台机 器(无需使用备份机器)以及仅仅执行常规的备份来尽量地满足公司的系统可用性需求。虽 然有些时候公司数据库系统的失败会在正常工作的时间发生,但公司对于这种情况是可以容
1章 确定自己的正常工作时间需求 7
下载
增强可用性的可选方法示例
事务分割(将每个事务写到 多个数据库的应用程序上)
后备数据库服务器
冗余的热插拨硬件组件
可用性
1-2 数据库系统开销与可用性之间的直接关系
忍的,因此,公司就没有必要在 I T预算方面考虑使用冗余的硬件或者系统支持,从而节省了 开销。但是,如果贵公司的数据库可用性需求比这个更高,例如需要保证数据库的 2 4×7可用 性或者8×5可用性(也就是必须保证每天八小时、每周五天工作日中必须有效),而且公司决 不容忍在这些时间段内数据库系统的失效,这时,就应该考虑使用非标准化系统构建技术
(包括允许使用冗余硬件、自动恢复系统、更多的管理人员),从而导致I T开销的增加。总之,
用户所希望的可用性越高,那么所需要的开销也就越高,因为必须为实现这种高可用性进行 硬件/软件/系统维护方面的附加投资。
2. 评价系统可用性需求
介绍完关于2 4×7正常工作时间系统在性能、价格以及灵活性之间的相互关系之后,现在 来分析一下系统可用性需求的评价方法。贵公司真的需要自己的数据库系统每周七天、每天 2 4小时的全天候可访问功能吗?或者,是否贵公司只是需要自己的数据库系统每周五天、每 天2 4小时的可访问性?或者,贵公司是否只是需要自己的数据库系统每周七天,每天 1 8小时 的可访问性?如何确定本公司的数据库系统可访问需求呢?人们总是习惯于要求自己的数据 库系统具有全天候的可访问性,似乎在任何时候,总是有人在自己的数据库中进行有关的访 问动作。
关于这个问题最有效的解决方法就是直接与用户交谈。有时读者也许会惊奇地发现,用 户对于自己所提出的问题是如此的热心,特别是在告知用户必须花费几百万美元才能实现真 正的2 4×7数据库可访问模式(因为需要在多个地点使用多个数据库服务器并且利用高速网络 连接到所有的这些服务器上提供快速复制)时,尤其如此。 (需要说明的是,在笔者提到复制
(replication) 时,并不只是 O r a c l e中的Advanced Replication 可选项 Advanced Replication可选项时,使用的是字母“ R”开头;而是使用“ r e p l i c a t i o n”来指代各
种各样的复制工具,其中包括 O r a c l e中的Advanced Replication以及在市场上可以购买的第三 方硬件或者软件复制工具。)
如果公司数据库系统的用户并不是那么合作,那么另外一个评价这些需求的方法就是收 集关于数据库使用的统计信息(这时读者将会发现笔者在前面所提到的工具非常有用,关于
在提及O r a c l e中的
8 第一部分 简
下载
这个工具的详细说明请参见第1 9章),然后利用这些统计信息进行分析以支持自己的观点。
一般来说,每周星期六晚上以及星期天早晨是维护数据库系统的最佳时机,这是因为人 们在这个时间段内对数据库的访问最少(如果有的话)。即使在上面所说的时间段内有一部分 人访问数据库,这也并不意味着就不能在这个时间段内进行数据库维护。也许,这些用户可 以被请求在别的时间段进行数据库访问。同时,如果在这个时间段安排了自动批处理任务, 那么用户的访问请求就可以被安排在这个时间段之后进行(也就是维护工作完成之后),或者, 这些用户的访问请求可以安排在周末的晚上运行。但是,如果确实因为现实的商业原因或者 经济上的原因使得这些数据库访问请求不能被推迟,那么贵公司也许就确实需要运行于 2 4×7 方式的数据库系统。
在这里,笔者并不是打消贵公司使用 2 4×7方式数据库系统的积极性,相反,笔者的目标
是确信公司确实需要具有高可用性的数据库系统,并且确保贵公司做好了为实现 2 4×7方式而 花费的代价(这种代价包括购买必要的硬件资源以及由于数据库管理灵活性的损失而造成的 额外开销)的准备。此外,对于公司数据库系统可用性需求的分析能够有效地判断数据库系 统所存在的弱点,包括:
在什么时间公司的数据库系统必须完全可访问?应用程序访问数据库系统的高峰期与低 谷期是什么?是否存在对数据库系统访问的高峰周 /月(例如每年年终记帐时间),在这 种高峰期数据库的事务比平常时间要多?
数据库系统访问的高峰期与低谷期之间的潜在差异有多大?
数据库是否能够部分可访问(也就是说,是否允许在某个时间内某些应用程序不能访问
数据库或者某些表空间处于离线状态)?若是,这些应用程序与表空间是什么?
数据库系统各个组件之间是否存在功能相关性与物理相关性?
如果数据库系统中的某个特定组件不可使用,其他各个应用程序将会作出什么反应?
如果数据库系统的主服务器正在进行维护动作,应用程序是否仍然能够在一个慢速的、
功能较弱的后备服务器上继续运行?
上述这种降低了的数据库访问性能对于贵公司是否可以接受?
在进行数据库正常访问时间需求分析之前,必须考虑与公司实际相关的一些关键问题。 所有这些问题的目标就是理解本公司对于数据库系统停止工作的容忍度。可以说,对于数据 库系统工作负载情况的特点研究越深入,那么就能够越准确地了解到数据库系统的正常工作 时间需求,从而能够最大限度地节省开销。在实际的商业活动中,决定自己的数据库系统是 否需要使用2 4×7方式是非常重要的,如果数据库系统的停止工作会对公司造成非常巨大的损
失,那么使用2 4×7方式就非常必要。
3. 评估数据库系统不可访问情况下所造成的“实际损失”
由于数据库系统不可访问所造成的损失可以使用直接损失与生产力损失来衡量。关于这
些损失,可以使用不同的标准来进行评价,例如:
在数据库系统停工期间,所造成的顾客 /销售额损失(其中包括公众影响以及不利于本 公司的报导的损失)。
在数据库系统停工期间,由于资源的空闲所造成的损失(“隐性”损失)。
在数据库系统停工期间,为了使得系统能够尽快恢复,聘请系统修复人员(例如,聘请 数据库系统恢复专家)所花费的开销损失。如果公司投资使用了冗余的硬件 /软件来保
Loading...
+ 16 hidden pages