Oracle Database 11g面向管理员的新功能2


Oracle Database 11g:面向管理员的新增功能 9-18 版权所有 ©2007,Oracle。保留所有权利。9-18 表压缩:概览 • Oracle Database 11g 扩展了 OLTP 数据的压缩。 – 支持常规的 DML 操作 (INSERT、UPDATE、DELETE) • 新算法显著降低了写入开销。 – 批量压缩可确保大多数 OLTP 事务处理不会受到影响。 • 对读取无影响 – 由于减少了 I/O 次数并提高了内存效率,因此读取性能可 能会有实际上的提高。 表压缩:概览 Oracle DB 是数据库压缩技术方面的先行者,在 Oracle9i 中就引入了针对批量装载操作的 表压缩功能。使用此功能可以在使用直接装载或 Create Table As Select (CTAS) 等操作执 行批量装载时压缩数据。但在以前,一些常规数据操纵操作(如 INSERT、UPDATE 和 DELETE)却不能使用压缩功能。Oracle Database 11g 对压缩技术进行了扩展,也可以支 持这些操作。因此,Oracle Database 11g 中的压缩功能可用于各种工作量,不管是联机事 务处理 (OLTP) 还是数据仓库。 必须指出的是,Oracle database 11g 中引入的表压缩功能的增强并不只是增量更改。为了 确保新的压缩技术对更新只造成微乎其微的影响,已经进行了大量的工作,因为在 OLTP 环境中压缩导致的任何明显的写入时间增加都是不可接受的。因此,Oracle Database 11g 中的压缩技术非常高效,可以使空间消耗减少 50-75%。执行压缩操作时,不但写入性能 不会降低,而且读取性能或查询速度都会有提高。这是因为,与必须等待解压缩数据的桌 面压缩技术不同,Oracle 技术直接读取压缩的数据(减少了所需的提取次数),不需要执 行任何解压缩操作。 注:压缩技术对应用程序是完全透明的。也就是说,可以将此技术用于任何自有的或打包 的应用程序(如 SAP、Siebel、EBS 等)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-19 版权所有 ©2007,Oracle。保留所有权利。9-19 表压缩的概念 标头 未压缩的数据 压缩的数据 可用空间 解压缩插入的数据。 到达 PCTFREE 触发压缩。 再次解压缩插入的数据。 到达 PCTFREE 触发压 缩。 数据块 PCTFREE 限制 表压缩的概念 该幻灯片显示了压缩表中的数据块的演化过程,应按从左到右的顺序阅读。开始的时候, 该数据块是空的,可以插入数据。开始在此块中插入数据时,数据以未压缩的格式存储 (就像在未压缩的表中一样)。但是,只要到达了该块的 PCTFREE,数据将被自动压 缩,以减少其原来占据的空间。这样一来,可以在相同的块中插入新的未压缩数据,直到 再一次到达 PCTFREE。此时会再一次触发压缩以减少块中的占用空间。 注:压缩可以消除删除操作造成的空隙,最大化块中的连续空闲空间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-20 版权所有 ©2007,Oracle。保留所有权利。9-20 使用表压缩 • 数据库兼容级别需要在 11.1 或更高 • 新的语法扩展了 COMPRESS 关键字: – COMPRESS [FOR {ALL | DIRECT_LOAD} OPERATIONS] – FOR DIRECT_LOAD 是默认值:引用以前版本中的批量装载操作 – FOR ALL OPERATIONS:OLTP + 直接装载 • 对新表启用压缩: • 对现有的表启用压缩: – 对现有的行不触发压缩 CREATE TABLE t1 COMPRESS FOR ALL OPERATIONS; ALTER TABLE t2 COMPRESS FOR ALL OPERATIONS; 使用表压缩 要使用新的压缩算法,必须使用 COMPRESS FOR ALL OPERATIONS 子句标记表。可以 在创建表时或在创建表之后执行此操作。幻灯片中的示例演示了此操作。 如果使用 COMPRESS 子句但没有指定任何 FOR 选项,或者使用 COMPRESS FOR DIRECT_LOAD OPERATIONS 子句,则将退回到以前版本中提供的旧压缩机制。 也可以在分区级别或表空间级别启用压缩。例如,可以使用 CREATE TABLESPACE 命令 的 DEFAULT 存储子句,根据需要指定 COMPRESS FOR 子句。 注:可以使用 DBA_TABLES 和 DBA_TAB_PARTITIONS 等视图中的 COMPRESS 列和 COMPRESS_FOR 列查看表的压缩标志。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-21 版权所有 ©2007,Oracle。保留所有权利。9-21 SQL 访问指导:概览 工作量 SQL 访问指导解决方案 CBO 的组件 提供实施脚本 不需要专业知识 DBA 要优化整个工作量, 需要哪些分区、索引 和 MV? SQL 访问指导:概览 如何定义适当的访问结构以优化 SQL 查询一直是 Oracle DBA 关心的问题。因此,为了解 决该问题,相关人员已经写了大量的论文和脚本,还开发了一些高端工具。此外,随着分 区和实体化视图技术的发展,确定访问结构也变得更加复杂。 作为 Oracle Database 10g 和 11g 中的可管理性增强功能,引入了 SQL 访问指导来解决这 个非常关键的需求。 SQL 访问指导可以推荐要创建、删除或保留的索引、实体化视图、实体化视图日志或分 区,从而确定并帮助解决与执行 SQL 语句相关的性能问题。可以从 Database Control 或者 从命令行使用 PL/SQL 过程来运行 SQL 访问指导。 SQL 访问指导将输入实际工作量,或者根据方案导出一个假想工作量。然后,它会推荐 速度较快的执行路径的访问结构。SQL 访问指导具有以下优点: • 不需要拥有专业知识 • 根据基于成本的优化程序中实际存在的规则做决定 • 与优化程序以及 Oracle DB 增强功能同步 • 是涵盖 SQl 访问方法所有方面的单个指导 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-22 SQL 访问指导:概览(续) • 提供用户友好的简单 GUI 向导 • 生成可用于实施建议案的脚本 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-23 版权所有 ©2007,Oracle。保留所有权利。9-23 SQL 访问指导:使用模型 索引 实体化视图 实体化视图日志 SQL 访问指导 假想 SQL 高速缓存 过滤选项 STS 工作量 已分区的对象 SQL 访问指导:使用模型 SQL 访问指导将输入一个从多个来源派生出来的工作量: •SQL 高速缓存,采用 V$SQL 的当前内容 • 假想工作量,根据维模型生成一个可能工作量。在初次设计系统时,这个选项比较有用 •SQL 优化集,来自工作量资料档案库 SQL 访问指导还提供强大的工作量过滤功能,可用于确定优化目标。例如,用户可以指定 SQL 访问指导只观察工作量中 30 个资源最密集的语句(根据优化程序开销确定)。对于指定 的工作量,SQL 访问指导随后会执行以下操作: • 同时考虑索引解决方案、实体化视图解决方案、分区解决方案或者全部三个解决方案的 组合 • 考虑存储的创建和维护成本 • 不为部分工作量生成删除建议案 • 优化实体化视图以最大化查询重写使用率和快速刷新 • 建议用于快速刷新的实体化视图日志 • 建议对表、索引和实体化视图进行分区 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-24 SQL 访问指导:使用模型(续) • 将类似的索引组合为单个索引 • 生成支持多个工作量查询的建议案 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-25 版权所有 ©2007,Oracle。保留所有权利。9-25 可能的建议案 是是修改现有的实体化视图日志以添加新列或子句。 是是对现有的未分区表或索引进行分区。 是是添加新的实体化视图日志。 否是删除未使用的实体化视图(日志)。 是是添加新的(已分区)实体化视图。 是是通过在末尾添加列修改现有的索引。 否是通过更改索引类型修改现有索引。 否是删除未使用的索引。 是是对表或实体化视图添加新的(已分区)索引。 有限全面建议案 可能的建议案 SQL 访问指导会仔细考虑建议案的整体影响,并仅使用已知的工作量和提供的信息生成 建议案。可以使用两种工作量分析方法: • 全面:SQL 访问指导通过这种方法解决优化分区、实体化视图、索引和实体化视图日 志的所有方面。SQL 访问指导假定工作量包含一个完整的有代表性的应用程序 SQL 语句集。 • 有限:与全面的工作量方法不同,有限的工作量方法假定工作量仅包含有问题的 SQL 语句。因此,将寻求提高一部分应用程序环境性能的建议。 如果选择了全面的工作量分析,则 SQL 访问指导将生成一个较好的全局优化调整集,但 所需分析时间会比较长。如表中所示,选择的工作量方法可决定 SQL 访问指导生成的建 议案类型。 注:分区建议案仅对至少包含 10,000 行的表以及在 NUMBER 或 DATE 类型的列上有一些 谓词或联接的工作量有效。只能针对这些类型的列生成分区建议。此外,只能为单列间隔 分区和散列分区生成分区建议。间隔分区建议案可作为范围语法输出,但间隔是默认值。 执行散列分区只是为了利用智能化分区联接。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-26 版权所有 ©2007,Oracle。保留所有权利。9-26 SQL 访问指导会话:初始选项 SQL 访问指导会话:初始选项 接下来的几张幻灯片将介绍一个典型的 SQL 访问指导会话。可以通过数据库主页上的 “Advisor Central(指导中心)”链接访问 SQL 访问指导向导,也可以通过单个预警页或 性能页进行访问,这些页可能包含用于简化性能问题解决过程的链接。SQL 访问指导向 导包括多个步骤,可在执行这些步骤的过程中提供要优化的 SQL 语句,以及要使用的访 问方法类型。 使用“SQL Access Advisor: Initial Options(SQL 访问指导:初始选项)”页可以选择在启 动向导前用来植入默认选项的模板或任务。可以单击“Continue(继续)”启动向导,或 者单击“Cancel(取消)”返回到“Advisor Central(指导中心)”页。 注:在生成建议案的过程中,SQL 访问向导可能会中断,从而允许您复查结果。 有关使用 SQL 访问指导的常规信息,请参阅《Oracle Data Warehousing Guide》“SQL Access Advisor”一课中的“Overview of the SQL Access Advisor”部分。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-27 版权所有 ©2007,Oracle。保留所有权利。9-27 SQL 访问指导会话:初始选项 SQL 访问指导会话:初始选项(续) 如果在“Initial Options(初始选项)”页上选择了“Inherit Options from a Task or Template(从任务或模板继承选项)”选项,则可以选择一个现有的任务或模板以继承 SQL 访问指导的选项。默认情况下,将使用 SQLACCESS_EMTASK 模板。 通过选择相应的对象并单击“View Options(查看选项)”,可以查看任务或模板定义的 各种选项。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-28 版权所有 ©2007,Oracle。保留所有权利。9-28 SQL 访问指导:工作量来源 SQL 访问指导:工作量来源 可以从三个不同的来源中选择工作量来源: • Current and Recent SQL Activity(当前和最近的 SQL 活动):此来源对应于仍高速 缓存在 SGA 中的 SQL 语句。 • Use an existing SQL Tuning Set(使用现有的 SQL 优化集):也可以创建并使用存放 语句的 SQL 优化集。 • Hypothetical Workload(假想的工作量):此选项将提供允许指导搜索维表并生成工 作量的方案。此来源在初始设计方案时很有用。 使用“Filter Options(过滤选项)”部分可以进一步过滤工作量来源。过滤选项有: • Resource Consumption(资源消耗):按优化程序成本、缓冲区获取数、CPU 时间、 磁盘读取数、占用时间、执行数排序的语句数量。 •Users(用户) •Tables(表) • SQL Text(SQL 文本) • Module IDs(模块 ID) • Actions(操作) 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-29 版权所有 ©2007,Oracle。保留所有权利。9-29 SQL 访问指导:建议案选项 SQL 访问指导:建议案选项 使用“Recommendations Options(建议案选项)”页可以选择是否限制 SQL 访问指导基 于单个访问方法提出建议案。可以选择 SQL 访问指导要推荐的结构的类型。如果没有选 择三个可能值中的任何一个,则 SQL 访问指导将评估现有的结构,而不尝试推荐新结 构。 可以使用“Advisor Mode(指导模式)”部分,以两种模式之一运行指导。这些模式会 影响建议案的质量和处理所需的时间。在“Comprehensive Mode(综合模式)”中,SQL 访问指导将搜索候选的大型池,以便得到最高质量的建议案。在“Limited Mode(限制模 式)”中,SQL 访问指导将快速执行,通过仅处理最高成本的语句来限制候选建议案。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-30 版权所有 ©2007,Oracle。保留所有权利。9-30 SQL 访问指导:建议案选项 SQL 访问指导:建议案选项(续) 可以选择“Advanced Options(高级选项)”以显示或隐藏选项,这些选项可用于设置空 间限制、优化选项和默认存储位置。使用“Workload Categorization(工作量类别)”部 分可以设置“Workload Volatility(工作量不稳定性)”和“Workload Scope(工作量范 围)”选项。对于工作量不稳定性,可以选择关注只读操作,也可以考虑生成建议案时被 引用对象的不稳定性。对于工作量范围,可以选择“Partial Workload(部分工作量)”, 其中不包括要删除未使用访问结构的建议案;或者选择“Complete Workload(全部工 作量)”,其中包括要删除未使用访问结构的建议案。 使用“Space Restrictions(空间限制)”部分可指定硬性空间限制,强制指导仅使用不超 过指定限制的总空间要求生成建议案。使用“Tuning Options(优化选项)”部分可指定 用于定制指导生成的建议案的选项。使用“Prioritize Tuning of SQL Statements by(确定优 化 SQL 语句优先级的依据)”下拉列表,可以按“Optimizer Cost(优化程序成本)”、 “Buffer Gets(缓冲区获取数)”、“CPU Time(CPU 时间)”、“Disk Reads(磁盘读 取数)”、“Elapsed Time(占用时间)”和“Execution Count(执行计数)”划分优 先级。使用“Default Storage Locations(默认存储位置)”部分可以覆盖为方案和表空间 位置定义的默认值。默认情况下,索引放置在所引用表的方案和表空间中。实体化视图放 置在相应用户的方案和表空间中,该用户将执行为实体化视图建议案提供信息的一个查 询。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-31 SQL 访问指导:建议案选项(续) 注:Oracle 强烈建议您为实体化视图指定默认方案和表空间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-32 版权所有 ©2007,Oracle。保留所有权利。9-32 SQL 访问指导:调度和复查 SQL 访问指导:调度和复查 您随后可以通过指定调度程序的各种参数,调度并提交新的分析。本幻灯片的屏幕快照中 显示了可能的选项。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-33 版权所有 ©2007,Oracle。保留所有权利。9-33 SQL 访问指导:结果 SQL 访问指导:结果 通过“Advisor Central(指导中心)”页,可以检索用于分析的任务详细资料。通过选择 “Advisor Central(指导中心)”页上“Results(结果)”部分中的任务名称,可以访问 “Results for Task(任务结果)”的“Summary(概要)”页;可在此页上看到 SQL 访问 指导查找结果的概览。该页中显示了图表和统计信息,为建议案提供了整体工作量性能和 改善查询执行时间方面的可能性。使用该页可以显示语句计数和建议案操作计数。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-34 版权所有 ©2007,Oracle。保留所有权利。9-34 SQL 访问指导:结果 SQL 访问指导:结果(续) 要查看 SQL 访问指导任务结果的其它方面,可选择该页上其它三个选项卡之一: “Recommendations(建议案)”、“SQL Statements(SQL 语句)”或“Details(详细 资料)”。 在“Recommendation(建议案)”页上,可以细化到各个建议案。对于其中的每个建议 案,可以查看“Select Recommendations for Implementation(选择要实施的建议案)”表 中的重要信息。然后,可以选择一个或多个建议案,并安排实施。 如果单击特定建议案的 ID,则将进入“Recommendation(建议案)”页,该页显示了指 定建议案的所有操作,可以根据需要修改语句的表空间名称。完成了任何更改后,单击 “OK(确定)”将应用更改。通过该页可以查看一个操作的完整文本,方法是选择指定 操作的“Action(操作)”字段中的链接。单击“Show SQL(显示 SQL)”可以查看建 议案中所有操作的 SQL。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-35 版权所有 ©2007,Oracle。保留所有权利。9-35 SQL 访问指导:结果 SQL 访问指导:建议案实施 可以使用简单的 SQL DDL 语句在生产系统中执行大多数建议案。在这些情况下,SQL 指 导会生成可执行的 SQL 语句。在有些情况下(例如,重新分区现有的已分区表或现有的 从属索引),简单的 SQL 是不够的。此时,SQL 指导将生成调用外部程序包的脚本 (如 DBMS_REDEFINITION),使用户可以实施建议的更改。 在幻灯片的示例中,SQL 访问指导建议按 CUST_CREDIT_LIMIT 列对 SH.CUSTOMERS 表进行分区。该建议案使用 INTERVAL 分区方案,并将第一个值范围定义为小于 1600。 间隔分区是基于数值范围或日期时间间隔的分区。间隔分区是范围分区的一种扩展,它会 在插入表中的数据超过了所有范围分区时,指示数据库自动创建特定间隔的分区。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-36 版权所有 ©2007,Oracle。保留所有权利。9-36 SQL 访问指导:结果 SQL 访问指导:结果 “SQL Statements(SQL 语句)”页显示了一个图表和一个对应的表,其中列出了按成本 改善程度由高到低初始排序的 SQL 语句。最上面的 SQL 语句通过实施关联建议案得到了 最大程度的改善。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-37 版权所有 ©2007,Oracle。保留所有权利。9-37 SQL 访问指导:结果 SQL 访问指导:结果(续) “Details(详细资料)”页显示了创建任务时所用的工作量和任务选项。此页还提供了在 任务执行过程中记录的所有日记条目。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-38 版权所有 ©2007,Oracle。保留所有权利。9-38 SQL 访问指导:PL/SQL 过程流程 SQL 访问指导任务 CREATE_TASK UPDATE_TASK_ATTRIBUTES DELETE_TASK QUICK_TUNE SET_TASK_PARAMETER RESET_TASK ADD_STS_REF DELETE_STS_REF EXECUTE_TASK INTERRUPT/CANCEL_TASK MARK_RECOMMENDATION UPDATE_REC_ATTRIBUTES GET_TASK_REPORT GET_TASK_SCRIPT 步骤 1 步骤 2 步骤 3 报表/脚本 与任务相关 与指导相关 SQL 访问指导:PL/SQL 过程流程 图形显示了 DBMS_ADVISOR 程序包中 SQL 访问指导过程的典型操作流程。有关其中每个 过程的完整说明,请参阅《Oracle Database PL/SQL Packages and Types Reference》指南。 • 步骤 1:创建并管理任务和数据。此步骤将使用一个 SQL 访问指导任务。 • 步骤 2:准备任务以进行各种操作。此步骤将使用 SQL 访问指导参数。 • 步骤 3:准备并分析数据。此步骤将使用 SQL 优化集和 SQL 访问指导任务。使用 Oracle Database 11g R1,除了文本之外,GET_TASK_REPORT 还可以使用 HTML 或 XML 返回报告。 注:DBMS_ADVISOR.QUICK_TUNE 过程是一种快捷方式,可以执行分析单个 SQL 语句 所必需的所有操作。该操作将创建一个所有参数都为默认值的任务,工作量仅由指定的语 句组成。最后将执行任务,并将结果保存到资料档案库中。也可以指示该过程实施最终建 议案。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-39 版权所有 ©2007,Oracle。保留所有权利。9-39 SQL 访问指导:PL/SQL 示例 BEGIN dbms_advisor.create_task(dbms_advisor.sqlaccess_advisor,'MYTASK'); END; BEGIN dbms_advisor.add_sts_ref('MYTASK','SH','MYSTS'); dbms_advisor.execute_task('MYTASK'); dbms_output.put_line(dbms_advisor.get_task_script('MYTASK')); END; 1 3 BEGIN dbms_advisor.set_task_parameter('MYTASK','ANALYSIS_SCOPE','ALL'); dbms_advisor.set_task_parameter('MYTASK','MODE','COMPREHENSIVE'); END; 2 SQL 访问指导:PL/SQL 示例 与前一张幻灯片中所示的顺序相配合,此幻灯片中的示例显示了使用 PL/SQL 代码的一个 可能的 SQL 访问指导优化会话。 第一个 PL/SQL 块创建了一个新的优化任务 MYTASK。此任务使用 SQL 访问指导。 第二个 PL/SQL 块设置了 MYTASK 任务的 SQL 访问指导参数。在该示例中您将 ANALYSIS_SCOPE 设置为 ALL,表示将为索引、实体化视图和分区生成建议案。然后, 将 MODE 设置为 COMPREHENSIVE,以包括与将来任务关联的 SQL 优化集中的所有 SQL 语句。 第三个 PL/SQL 块将一个工作量与 MYTASK 任务关联起来。此处使用了一个现有的 SQL 优化集 MYSTS。现在,可以执行优化任务了。此任务执行完成后,可以生成对应的建议 案脚本,如幻灯片中第三个示例所示。 注:有关 SQL 访问指导参数的完整列表(大约有 50 个),请参阅《Oracle Database PL/SQL Packages and Types Reference》指南。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-40 版权所有 ©2007,Oracle。保留所有权利。9-40 小结 在本课中,您应该已经学会: • 实施新的分区方法 • 采用数据压缩 • 使用 Enterprise Manager 创建 SQL 访问指导分析会话 • 使用 PL/SQL 创建 SQL 访问指导分析会话 • 设置 SQL 访问指导分析以获取分区建议案 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-41 版权所有 ©2007,Oracle。保留所有权利。9-41 练习 9:概览 本练习包含以下主题: • 使用新的分区方案 • 使用表压缩 • 使用 SQL 访问指导获取分区建议 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 9-42 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 使用 RMAN 增强功能 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-2 版权所有 ©2007,Oracle。保留所有权利。10-2 课程目标 学完本课后,应能完成以下工作: • 描述 Oracle Database 11g 中新增的和增强的 RMAN 功能 • 配置归档日志删除策略 • 使用 Oracle 网络复制活动的数据库(无备份) • 以多个部分的形式备份大型文件 • 创建归档备份以进行长期存储 • 管理恢复目录,例如合并多个目录版本 • 描述虚拟专用目录的用法 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-3 版权所有 ©2007,Oracle。保留所有权利。10-3 RMAN:新增功能 • 以下改进提高了性能: – 物理备用数据库上的快速增量备份 – 改进的块介质恢复 图像副本 备份片段 备份数据 数据文件 快速恢复区 辅助 数据库 更改 跟踪 文件 Recovery Manager (RMAN) 目标数据库 RMAN 的新增功能 备份和恢复操作是一个关键的重要部分,即使存在各种级别的潜在故障和错误时,它也可 保证信息对组织的可用性。使用 Oracle Database 11g,Recovery Manager (RMAN) 增强功 能可以提供以下优势: 物理备用数据库上的快速增量备份 可以在物理备用数据库上启用块更改跟踪(使用现有的 ALTER DATABASE ENABLE/DISABLE BLOCK CHANGE TRACKING SQL 语句)。之后 RMAN 便会在备用 受管恢复期间跟踪更改的块。这样便可以卸载对备用数据库的块跟踪,并且相同的快速增 量备份可以使用主数据库上可用的更改跟踪文件。此功能支持在物理备用数据库上以比以 前版本更快的速度进行增量备份。 改进的块介质恢复性能 可使用 RECOVER 命令(以前的 BLOCKRECOVER 命令)恢复单个数据块。如果启用了闪 回事件记录,并且此事件记录包含比较旧而又完好的块,则 RMAN 可以使用这些块,从 而提高块介质恢复的速度。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-4 版权所有 ©2007,Oracle。保留所有权利。10-4 优化的备份 • 使用 ZLIB 算法加快了压缩速度 • 增强了检测块损坏的功能,因而强化了保护功能 CONFIGURE COMPRESSION ALGORITHM TO ZLIB; 优化的备份 保留备份空间的同时加快了压缩速度 可使用 CONFIGURE 命令为 RMAN 备份选择 BZIP2 或 ZLIB 压缩算法。新的 ZLIB 备份 压缩算法比以前的 BZIP2 算法快 40%。一个大型制药公司的实际数据仓库数据库使用这 两种算法的情况如下:使用 BZIP2 算法时压缩比率为 2.0:1,而使用 ZLIB 算法时压缩比 率为 1.68:1。用下列命令配置备份压缩算法(用 BZIP2 或 ZLIB 替换 alg_name): CONFIGURE COMPRESSION ALGORITHM TO 'alg_name'; 注:有关详细信息,请参阅《Oracle Database Backup and Recovery Reference》。 加强了块损坏的检测功能 除 RMAN 检测到的块损坏外,Oracle Database 11g 还在 V$DATABASE_BLOCK_CORRUPTION 视图中记录活动的块损坏。检测或修复块损坏后, Oracle DB 会自动更新此视图。由于新增了许多选项(如 VALIDATE ... BLOCK 和 VALIDATE DATABASE 等),VALIDATE 命令得到了增强。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-5 版权所有 ©2007,Oracle。保留所有权利。10-5 优化的备份 • 优化的还原备份可自动减少备份时间和存储空间 • 灵活使用支持 VSS 的软件 – 允许数据库参与由符合 VSS 的备份管理工具和存储产品 协调的快照 – 通过 RMAN 根据快照还原自动恢复数据库 优化的备份(续) 优化的还原备份 对于事务处理恢复不需要的还原数据(例如,对于已提交的事务处理),不进行备份。优 点是从总体上减少了备份时间和存储空间,因为它不备份应用到已提交的事务处理的还原 数据。此优化是自动启用的。 与支持 VSS 的应用程序集成 卷影复制服务 (VSS) 是 Windows 上的一个基础结构。Oracle VSS 写进程与支持 VSS 的应 用程序相集成。因此,可以使用支持 VSS 的软件和存储系统备份和还原 Oracle DB。其主 要优点是可以制作打开的数据库的影子副本。还可以在 RMAN 中使用 BACKUP INCREMENTAL LEVEL 1 ...FROM SCN 命令生成 VSS 卷影副本的增量备份。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-6 版权所有 ©2007,Oracle。保留所有权利。10-6 优化的备份 • 简化了多组件环境中的归档日志管理 • 通过将备份故障转移到可选目标提高了可用性 图像副本 备份片段 备份数据 数据文件 快速恢复区 目标数据库 冗余归档 日志文件 归档日志 文件 X 优化的备份(续) 简化了多组件环境中的归档日志管理 此功能简化了多组件环境中的归档日志管理。它还提高了当快速恢复区中的归档日志丢失 或无法访问时,备份归档日志时的可用性。 增强了删除策略的配置 仅当任何必需的组件(如 Data Guard、流、闪回数据库等)不需要归档重做日志时,才能 将其删除。 在 Data Guard 环境中,将归档日志标识为删除之前,需要考虑所有备用目标(而不仅仅 考虑必需的目标)。此配置是使用 CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY 命令指定的。 配置了归档日志删除策略后,该配置会应用到所有归档目标,包括快速恢复区。像快速恢 复区一样,BACKUP ...DELETE INPUT 和 DELETE...ARCHIVELOG 都使用此配置。 备份恢复区时,如果快速恢复区中的归档重做日志不可访问或已损坏,则 RMAN 可以故 障转移至其它归档重做日志目标。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-7 版权所有 ©2007,Oracle。保留所有权利。10-7 RMAN:新增功能 后面的页提供了关于以下内容的详细信息: • 通过 Intrafile 并行备份和还原来优化备份并提高备份的 速度 • 简化活动数据库的复制 • 简化归档备份以进行长期存储 • 通过合并目录简化信息基础结构 • 通过限制 DBA 备份目录访问所拥有的数据库“虚拟专 用目录”来增强安全性 RMAN 的新增功能 对超大型文件应用 Intrafile 并行备份和还原 在备份单一大型数据文件时,现在可以使用多个并行服务器进程和“通道”来有效地分配 工作量。这种使用多个部分的方法改善了备份的性能。 简化了活动数据库的复制 可以使用具有网络感知功能的 DUPLICATE 命令通过网络创建副本或备用数据库,而不必 预先拥有数据库备份。通过 Enterprise Manager GUI 这种易用性表现得尤为明显。 要长期存储的归档备份 备份联机时,使用 KEEP 选项创建的长期备份将不再需要保留所有的归档日志。相反,会 备份需要将指定的数据文件恢复到一致时间点的归档日志(以及指定的数据文件和控制文 件)。此功能减少了联机的长期 KEEP 备份所需的归档日志备份存储,并通过对需要还原 和恢复备份的所有文件使用单一格式字符串简化了命令。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-8 RMAN 的新增功能(续) 通过合并 RMAN 目录简化了信息基础结构 使用新的 IMPORT CATALOG 命令可以将一个目录方案合并到另一个目录方案(可以是整 个方案,也可以是该目录中特定数据库的元数据)。因为可以将在不同版本中创建的多个 单独目录方案合并到单一目录方案中,因此简化了目录管理。 限制 DBA 备份目录访问所拥有的数据库 恢复目录的所有者可授予或撤消数据库用户对目录子集的访问权限。此子集称为虚拟专用 目录。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-9 版权所有 ©2007,Oracle。保留所有权利。10-9 对超大型文件应用并行备份和还原 对单个文件进行多部分备份: • 由 RMAN 创建,具有指定的大小值 • 独立进行处理(串行或并行) • 生成多片段备份集 • 提高了备份的性能 对超大型文件应用并行备份和还原 Oracle 数据文件最大为 128 TB。在以前的版本中,RMAN 备份的最小单位是整个文件。 这对于如此大的文件不适用。在 Oracle Database 11g 中,将在多个并行服务器进程之间分 配各个文件的工作量。如果指定了 SECTION SIZE 选项,则 RMAN 可以将一个大文件 分解为多个部分,然后独立备份和还原这些部分。换句话说,RMAN 可以对每个文件使 用多个通道。每个通道备份一个文件部分。 每个文件部分都是文件中一系列连续的块。可按串行或并行方式独立处理每个文件部分。 以多个单独部分的形式备份文件,既可以提高性能又可以重新启动大型文件备份。 多部分备份作业可生成一个多片段备份集。每个片段都包含一个文件部分。多部分备份的 所有部分的大小都相同(最后一部分可能除外)。每个文件最多有 256 个部分。 提示:在备份驻留在少量磁盘上的大型文件时,不宜使用很高的并行度。 此功能已内置到 RMAN 中。除 Oracle Database 11g 的常规安装外,不需要其它安装。因 为早期版本无法还原多部分备份,所以必须至少将 COMPATIBLE 设置为 11.0。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-10 版权所有 ©2007,Oracle。保留所有权利。10-10 使用 RMAN 多部分备份 BACKUP 和 VALIDATE DATAFILE 命令选项: 第 1 部分 第 2 部分 第 3 部分 第 4 部分 通道 1 通道 2 通道 3 通道 4 一个大型数据文件 SECTION SIZE [M | K | G] 使用 RMAN 多部分备份 BACKUP 和 VALIDATE DATAFILE 命令接受新的选项: SECTION SIZE [M | K | G]. 为每个备份部分指定计划的大小。该选项既是备份命令也是备份规范级别选项,所以可以 在同一备份作业中对不同的文件应用不同的部分大小。 查看有关特定多部分备份的元数据: • V$BACKUP_SET 和 RC_BACKUP_SET 视图都有一个 MULTI_SECTION 列,用于表明 是否为多部分备份。 • V$BACKUP_DATAFILE 和 RC_BACKUP_DATAFILE 视图都有一个 SECTION_SIZE 列,用于指定多部分备份的每个部分中的块数。零意味着对整个文件进行备份。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-11 版权所有 ©2007,Oracle。保留所有权利。10-11 复制数据库 • 使用网络(不需要备份) • 包括自定义 SPFILE • 通过 Enterprise Manager 或 RMAN 命令行 活动的源数据库 目标或 AUXILIARY 数据库 TCP/IP 复制数据库 在 Oracle Database 11g 之前,可以使用 RMAN 创建数据库复本以作为测试数据库或备用 数据库。这需要源数据库、目标系统上的备份副本以及目标数据库本身。 Oracle Database 11g 大大简化了此过程。通过使用 Enterprise Manager 或 RMAN DUPLICATE 命令的 FROM ACTIVE DATABASE 子句,可以指示源数据库直接将图像副 本和归档日志副本复制到辅助实例,而不再需要预先拥有备份。 通过实例间的网络连接将数据库文件从源数据库复制到目标数据库或 AUXILIARY 实例。 RMAN 随后使用“内存脚本”(仅包含在内存中)完成恢复并打开数据库。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-12 版权所有 ©2007,Oracle。保留所有权利。10-12 活动的数据库复制:选择源 活动的数据库复制 活动的数据库复制使用说明 • Oracle Net 必须知道源数据库和目标数据库。FROM ACTIVE DATABASE 子句表示网 络操作。 • 如果源数据库是打开的,则它必须已启用了归档事件记录。 • 如果源数据库处于已装载状态(并且不是备用数据库),则必须完全关闭该源数据 库。 • 活动的数据库复制不影响源数据库的可用性。但是源数据库实例提供了 CPU 周期和网 络带宽。 Enterprise Manager 界面 在 Enterprise Manager 中,选择“Data Movement(数据移动)> Clone Database (克隆数据库)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-13 版权所有 ©2007,Oracle。保留所有权利。10-13 选择目标 选择目标 活动的数据库复制使用说明 将口令文件复制到目标。目标数据库与源数据库必须拥有相同的 SYS 用户口令。换句话 说,在活动的数据库复制过程之初,两个数据库(源和目标)必须有口令文件。 创建备用数据库时,来自主数据库的口令文件将覆盖备用数据库上的当前(临时)口令文 件。使用命令行而且不复制备用数据库时,需要使用 PASSWORD 子句(通过 RMAN DUPLICATE 命令的 FROM ACTIVE DATABASE 子句)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-14 版权所有 ©2007,Oracle。保留所有权利。10-14 自定义目标选项 自定义目标选项 在 Oracle Database 11g 之前,由于需要对 SPFILE 进行适合目标环境的更改,所以不复制 SPFILE。在以 NOMOUNT 模式或在打开新复制的数据库之前要使用的 RMAN 命令行中启 动实例时,必须将 SPFILE 复制到新的位置,对其进行编辑和指定。 使用 Oracle Database 11g,您只要提供参数列表、所需的值,系统就可对其进行设置。最 明显的参数是那些其值包含目录规范的参数。系统会添加所有与您的选择相匹配的参数值 (DB_FILE_NAME_CONVERT 和 LOG_FILE_NAME_CONVERT 参数除外)。 请注意参数的大小写区分:大小写必须与 PARAMETER_VALUE_CONVERT 匹配。对于 FILE_NAME_CONVERT 参数,模式匹配是操作系统特定的。 在还原 SPFILE 和发出 ALTER SYSTEM SET 命令修改该参数文件后(装载该实例之 前),该功能等同于暂停数据库复制。 此幻灯片中的示例演示了如何使用不同的顶级磁盘位置在相同的主机上和相同的 Oracle 主目录中克隆数据库。源目录在 u01 下,目标目录在 u02 下:需要确认您的选择。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-15 版权所有 ©2007,Oracle。保留所有权利。10-15 选择数据库配置 选择数据库配置 请注意观察新数据库如何使用您输入的信息。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-16 版权所有 ©2007,Oracle。保留所有权利。10-16 调度作业执行 调度作业执行 现在,可遵循向导中的步骤调度作业,以便作业根据您的规范变为活动作业。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-17 版权所有 ©2007,Oracle。保留所有权利。10-17 查看作业 查看作业 向下滚动以查看更多的详细信息并提交作业。请注意,ORCL 数据库将在相同主机上的 /u02 目录结构中创建 DBTEST 数据库。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-18 版权所有 ©2007,Oracle。保留所有权利。10-18 复制数据库:作业运行 复制数据库:作业运行 “Job Run(作业运行)”页的示例显示了下列步骤: 1. 准备源数据库 2. 创建控制文件 3. 创建目标目录 4. 副本初始化和口令文件 * 跳过副本或者传输控制文件 5. 准备目标数据库 6. 复制数据库 * 跳过创建备用控制文件 * 跳过切换克隆类型 7. 恢复数据库 8. 添加临时文件 9. 检查数据库和运行克隆后脚本 10. 添加 EM 目标 11. 清除源临时目录 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-19 版权所有 ©2007,Oracle。保留所有权利。10-19 RMAN DUPLICATE 命令 DUPLICATE TARGET DATABASE TO dbtest FROM ACTIVE DATABASE SPFILE PARAMETER_VALUE_CONVERT '/u01', '/u02' SET SGA_MAX_SIZE = '200M' SET SGA_TARGET = '125M' SET LOG_FILE_NAME_CONVERT = '/u01','/u02' DB_FILE_NAME_CONVERT = '/u01','/u02'; RMAN DUPLICATE 命令 该示例假设您先前已连接到源和目标实例,它们有公用的目录结构但具有不同的顶级磁 盘。该目标实例使用自动配置的通道。 • 此 RMAN DUPLICATE 命令可复制打开的数据库。 • FROM ACTIVE DATABASE 子句表明您将不使用备份(这表示网络操作),目标处 于打开或已装载状态。 • SPFILE 子句表示在打开数据库之前还原和修改 SPFILE。 • 重复的 SET 子句实际上将发出 ALTER SYSTEM SET param = value SCOPE=SPFILE 命令。可以根据需要提供任意多这样的子句。 先决条件 • AUXILIARY 实例处于 NOMOUNT 状态,该实例是使用最低 PFILE 选项启动的。 • PFILE 只需要 DB_NAME 和 REMOTE_LOGIN_PASSWORFILE 参数。 • 口令文件必须存在,并且与目标具有相同的 SYS 用户口令。 • 目录结构必须具有适当的权限。 • 将网络服务名用作 SYS 用户连接到 AUXILIARY。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-20 版权所有 ©2007,Oracle。保留所有权利。10-20 使用 DUPLICATE 命令创建备用数据库 DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE SPFILE PARAMETER_VALUE_CONVERT '/u01', '/u02' SET "DB_UNIQUE_NAME"="FOO" SET SGA_MAX_SIZE = "200M" SET SGA_TARGET = "125M" SET LOG_FILE_NAME_CONVERT = '/u01','/u02' DB_FILE_NAME_CONVERT = '/u01','/u02'; 复制备用数据库 该幻灯片中的示例假设,您将连接到目标和辅助实例,并且这两种环境都具有相同的磁盘 和目录结构。 FOR STANDBY FROM ACTIVE DATABASE 子句将启动备用数据库的创建过程,并且不使 用备份。 该示例将 u01 用作源磁盘、u02 用作顶级目标目录。在 SPFILE 中替换所有与您的选择相 匹配的参数值(DB_FILE_NAME_CONVERT 和 LOG_FILE_NAME_CONVERT 参数除外)。 如果 PARAMETER_VALUE_CONVERT 设置了参数指定的文件名,而 SET 也设置了该参数 指定的文件名,则 SET 值会覆盖 PARAMETER_VALUE_CONVERT 设置。 如果在 DUPLICATE 命令中指定了 DB_FILE_NAME_CONVERT 子句,则其文件名设置会覆 盖 SPFILE SET 指定的相应设置。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-21 版权所有 ©2007,Oracle。保留所有权利。10-21 使用 EM 创建归档备份 使用 EM 创建归档备份 如果您的业务需要长时间保留记录,则可以使用 RMAN 创建数据库或表空间的自包含归 档备份。RMAN 不对此备份应用常规保留策略。将归档备份放到快速恢复区以外的其它 长期存储区。 要长期保留备份,请在 Enterprise Manager 中执行下列步骤: 1. 选择“Availability(可用性)> Schedule Backup(调度备份)> Schedule Customized Backup(调度定制备份)”。 2. 按照“Schedule Customized Backup(调度定制备份)”向导中的步骤进行操作,直 到进入“Settings(设置)”页。 3. 单击“Override Current Settings(覆盖当前设置)> Policy(策略)”。在“Override Retention Policy(覆盖保留策略)”部分中,可选择将备份保留指定的天数。还原 点是基于备份作业名称生成的。 使用 KEEP 选项创建的备份包括 SPFILE、控制文件以及还原此备份所需的归档重做日志 文件和数据文件。此备份是数据库在某个时间点的快照,可用于将数据库还原到另一个 主机。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-22 版权所有 ©2007,Oracle。保留所有权利。10-22 使用 RMAN 创建归档备份 • 指定 KEEP 子句,当数据库联机时包括数据文件和归档 日志备份集: • 列出 RMAN 资料档案库已知的所有还原点: • 显示特定的还原点: KEEP {FOREVER | UNTIL TIME [=] ' date_string '} NOKEEP [RESTORE POINT rsname] LIST RESTORE POINT ALL; LIST RESTORE POINT 'rsname'; 使用 RMAN 创建归档备份 在 Oracle Database 11g 之前,如果需要将联机备份保留指定的一段时间,则 RMAN 假定 您可能希望在这段时间内的任何时间执行时间点恢复,并且 RMAN 在该时间段内保留所 有归档日志,除非您指定了 NOLOGS。但是,您可能需要仅在指定的时间内保留备份(并 使其保持一致和可恢复)。 通过 Oracle Database 11g,可以使用 KEEP 选项生成归档数据库备份以满足业务或法律需 求。KEEP 选项是备份集(而不是单个备份片段)或副本的属性。KEEP 选项可覆盖任何 为此备份配置的保留策略。可以保留归档备份,这样可以将这些备份视为在指定的时间后 废弃 (KEEP UNTIL) 或永不废弃 (KEEP FOREVER)。KEEP FOREVER 子句需要使用恢复 目录。 RESTORE POINT 子句将在控制文件中创建“一致性”点。它为特定的 SCN 分配名称。 SCN 是在完成备份数据文件后捕获的。可在此时间点还原和恢复归档备份,使数据库处 于打开状态。与之相反,UNTIL TIME 子句指定了备份必须保留到的日期。 RMAN 包含数据文件、归档日志文件(仅那些需要恢复联机备份的文件)、相关自动备 份文件和 spfile。所有这些文件必须转到相同的介质系列(或磁带组)并具有相同的 KEEP 属性。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-23 版权所有 ©2007,Oracle。保留所有权利。10-23 管理归档数据库备份 1. 归档数据库备份: 2. 更改数据库副本的状态: CHANGE COPY OF DATABASE CONTROLFILE NOKEEP; CONNECT TARGET / CONNECT CATALOG rman/rman@catdb CHANGE BACKUP TAG 'consistent_db_bkup' KEEP FOREVER; 管理归档数据库备份 CHANGE 命令会更改与配置的保留策略有关的备份或副本的免除状态。例如,可以指定 CHANGE ...NOKEEP,用于生成当前从适合于 OBSOLETE 状态的保留策略中免除的备 份。 此幻灯片中的第一个示例将一致的备份更改为归档备份,计划在场外存储该归档备份。因 为该数据库是一致的,所以无需对其进行恢复,不需要与备份一起保存归档重做日志。 第二个示例指定数据文件和控制文件的任何长期图像副本都应失去其免除状态,以便根据 现有保留策略变为过期: 废弃的子句:KEEP [LOGS | NOLOGS] 首选语法:KEEP RESTORE POINT 注:RESTORE POINT 选项对 CHANGE 无效。 无法对存储在快速恢复区中的文件使用 CHANGE ...UNAVAILABLE 或 KEEP。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-24 版权所有 ©2007,Oracle。保留所有权利。10-24 管理恢复目录 管理恢复目录: 1. 创建恢复目录。 2. 在恢复目录中注册目标数据库。 3. 如果需要,合并恢复目录。 4. 如果需要,编录任何早期备份。 5. 如果需要,为特定用户创建虚拟恢复目录。 6. 保护恢复目录。 管理恢复目录 管理恢复目录的基本工作流并不陌生。但是,其中的两个重要功能发生了变化,以增强整 体性能:RMAN 资料档案库和虚拟专用目录已合并在一起,以允许分离责任。 1. 创建恢复目录。 2. 在恢复目录中注册目标数据库。此步骤使 RMAN 可以在恢复目录中存储目标数据库 的元数据。 3. 如果需要,还可以使用 IMPORT CATALOG 命令合并恢复目录(Oracle Database 11g 中的新增功能)。 4. 如果需要,编录其记录不再存储在目标控制文件中的任何早期备份。 5. 如果需要,为特定用户创建虚拟恢复目录并确定允许其访问的元数据(Oracle Database 11g 中的新增功能)。 6. 通过在备份和恢复策略中包含恢复目录来保护恢复目录。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-25 管理恢复目录(续) 已知功能和新增功能 恢复目录包含与各个已注册目标数据库中 RMAN 操作有关的元数据。该目录包含下列类 型的元数据: • 数据文件和归档重做日志备份集以及备份片段 • 数据文件副本 • 归档重做日志及其副本 • 目标数据库中的表空间和数据文件 • 存储脚本,它们是用户创建的已命名的 RMAN 命令序列 • 持久的 RMAN 配置设置 在恢复目录中登记目标数据库以供 RMAN 使用称为注册。建议的做法是在单个恢复目录 中注册所有目标数据库。例如,可以在 catdb 数据库中 catowner 方案拥有的单个目录 中注册 prod1、prod2 和 prod3 数据库。 集中恢复目录(又称基本恢复目录)的所有者,可授予或撤消其他数据库用户对目录的有 限访问权限。所有的元数据都存储在基础目录方案中。 每个受限用户都拥有对其元数据的完整读写权限,这称为虚拟专用目录。 恢复目录从每个已注册目标数据库的控制文件获得重要的 RMAN 元数据。重新同步恢复 目录可确保 RMAN 从控制文件获得的元数据是最新的。 可以将存储脚本用作命令文件的替代项,以用于管理经常使用的 RMAN 命令序列。该脚 本存储在恢复目录中,而不是文件系统中。本地存储的脚本与创建脚本时 RMAN 连接到 的目标数据库相关联,仅当连接到此目标数据库时才能执行该脚本。可针对在恢复目录中 注册的任意数据库运行全局存储的脚本。 可以在您使用的环境中或已使用了不同版本的数据库的环境中使用恢复目录。因此,您的 环境中可包含不同版本的 RMAN 客户机、恢复目录数据库、恢复目录方案和目标数据 库。在 Oracle Database 11g 中,为了便于管理可以将一个恢复目录(或目录中特定数据 库的元数据)合并到另一个恢复目录中。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-26 版权所有 ©2007,Oracle。保留所有权利。10-26 管理目录:使用 EM 32 1 管理目录:使用 EM 在 Enterprise Manager 中,选择“Availability(可用性)> Recovery Catalog Settings(恢复 目录设置)”,然后按照需要执行操作。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-27 版权所有 ©2007,Oracle。保留所有权利。10-27 IMPORT CATALOG 命令 1. 连接到目标恢复目录: 2. 导入所有已注册数据库的元数据: 3. 导入两个已注册数据库的元数据: 4. 导入多个目录的元数据: IMPORT CATALOG cat102/oracle@srcdb; IMPORT CATALOG cat102/rman@srcdb; IMPORT CATALOG cat101/rman@srcdb; IMPORT CATALOG cat92/rman@srcdb NO UNREGISTER; IMPORT CATALOG cat92/oracle@catdb DBID=1423241, 1423242; CONNECT CATALOG cat111/oracle@destdb; IMPORT CATALOG 命令 使用 IMPORT CATALOG 命令,可以将元数据从一个恢复目录方案导入到另一个目录方 案。如果创建了不同版本的目录方案来存储多个目标数据库的元数据,则使用此命令可以 为所有数据库维护单个目录方案。 1. RMAN 必须连接到目标恢复目录(如 cat111 方案),这是要将目录数据导入到其 中的目录。下面是此幻灯片显示的所有示例中的第一个步骤。 IMPORT CATALOG [DBID = [, ,…]] [DB_NAME=[, 是源恢复目录连接字符串。该源恢复目录方案的版本必须等于 RMAN 可执行文件的当前版本。如果需要,将源目录升级到当前 RMAN 版本。 DBID:可以指定应从源目录方案导入其元数据的数据库 ID 的列表。没有指定时,RMAN 会将所有数据库 ID 的元数据从源目录方案合并到目标目录方案。如果已在恢复目录方案 中注册了元数据已合并的数据库,则 RMAN 会发出错误。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-28 IMPORT CATALOG 命令(续) DB_NAME:可以指定应导入其元数据的数据库名称的列表。如果数据库名称不明确,则 RMAN 会发出错误。 NO UNREGISTER:默认情况下,成功导入后会从源恢复目录方案中注销导入的数据库 ID。使用 NO UNREGISTER 选项,可以强制 RMAN 将导入的数据库 ID 保留在源目录方 案中。 导入示例(续) 2. 在此示例中,cat102 用户拥有 srcdb 数据库中的 RMAN 目录(10.2 版)。您希望 RMAN 导入所有已注册数据库后在源目录中注销它们。 3. cat92 用户拥有 srcdb 数据库中的 RMAN 目录(9.2 版)。您希望 RMAN 导入 DBID 为 1423241 和 1423242 的数据库,然后在源目录中注销这些数据库。 4. srcdb 数据库包含三种不同的恢复目录。RMAN 在 destdb 数据库中将这些目录中 所有已注册的数据库 ID 的元数据导入到 cat111 方案中。除在 cat92 方案中注册的 数据库之外,所有导入的目标数据库都会从其源目录中注销。 更多使用情况详细信息 • 确保不要同时在源目录方案和目标目录方案中注册目标数据库。如果在两个方案中都 注册了目标数据库,则从源目录注销此数据库,然后重试进行导入。 • 如果该操作在导入过程中失败,则将回退导入。不会存在部分导入的状态。 • 如果源目录方案和目标目录方案中存储的脚本出现名称冲突,则 RMAN 会重命名源 目录方案的存储脚本。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-29 版权所有 ©2007,Oracle。保留所有权利。10-29 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-30 版权所有 ©2007,Oracle。保留所有权利。10-30 使用 RMAN 虚拟专用目录 1. 创建 RMAN 基础目录: 2. 为 VPC 所有者授予 RECOVERY_CATALOG_OWNER 权 限: 3a. 为 VPC 所有者授予 REGISTER 权限,或者: 3b. 为 VPC 所有者授予 CATALOG FOR DATABASE 权限: RMAN> CONNECT CATALOG catowner/oracle@catdb; RMAN> CREATE CATALOG; SQL> CONNECT SYS/oracle@catdb AS SYSDBA SQL> GRANT RECOVERY_CATALOG_OWNER to vpcowner RMAN> CONNECT CATALOG catowner/oracle@catdb; RMAN> GRANT REGISTER DATABASE TO vpcowner; RMAN>GRANT CATALOG FOR DATABASE db10g TO vpcowner 使用 RMAN 虚拟专用目录 可以为数据库和用户组创建虚拟专用 RMAN 目录。 1. 目录所有者将创建基础目录。 2. 目录数据库上的 DBA 将创建拥有该虚拟专用目录 (VPC) 的用户,并为其授予 RECOVERY_CATALOG_OWNER 权限。 3. 基础目录所有者可为 VPC 所有者授予对先前注册的数据库的访问权限,或者为 VPC 所有者授予 REGISTER 权限。GRANT CATALOG 命令如下: GRANT CATALOG FOR DATABASE prod1, prod2 TO vpcowner; GRANT REGISTER 命令如下: GRANT REGISTER DATABASE TO vpcowner; 然后,虚拟目录所有者可连接到特定目标的目录,或者注册一个目标数据库。完成 VPC 配置之后,VPC 所有者将像使用标准基础目录一样使用该目录。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-31 版权所有 ©2007,Oracle。保留所有权利。10-31 使用 RMAN 虚拟专用目录 4a. 为 11g 客户机创建虚拟目录,或者: 4b. 为 11g 之前的客户机创建虚拟目录: 5. 在目录中注册新的数据库: 6. 使用虚拟目录: RMAN> CONNECT CATALOG vpcowner/oracle@catdb; RMAN> CREATE VIRTUAL CATALOG; SQL> CONNECT vpcowner/oracle@catdb SQL> exec catowner.dbms_rcvcat.create_virtual_catalog; RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb; RMAN> REGISTER DATABASE; RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb; RMAN> BACKUP DATABASE; 使用 RMAN 虚拟专用目录(续) 4. 创建虚拟专用目录。 a. 如果目标数据库是 Oracle Database 11g 数据库并且 RMAN 客户机是 11g 客户 机,则可使用 RMAN 命令: CREATE VIRTUAL CATALOG; b. 如果目标数据库是 Oracle Database 10g 版本 2 或者更早版本(使用兼容客户 机),则必须执行 SQL*Plus 提供的过程: base_catalog_owner.dbms_rcvcat.create_virtual_catalog; 5. 使用 VPC 所有者登录名连接到该目录,将其作为常规目录使用。 6. 虚拟目录所有者只能看到对其有访问权限的数据库。要执行大多数 RMAN 操作,还 需要拥有对目标数据库的 SYSDBA 或 SYSOPER 权限。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-32 版权所有 ©2007,Oracle。保留所有权利。10-32 小结 在本课中,您应该已经学会: • 描述 Oracle Database 11g 中新增的和增强的 RMAN 功能 • 配置归档日志删除策略 • 使用 Oracle 网络复制活动的数据库(无备份) • 以多个部分的形式备份大型文件 • 创建归档备份以进行长期存储 • 管理恢复目录,例如合并多个目录版本 • 描述虚拟专用目录的用法 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 10-33 版权所有 ©2007,Oracle。保留所有权利。10-33 练习 10:使用 RMAN 增强功能概览 本练习包含以下主题: • 复制活动的数据库 • 合并目录 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 使用闪回和 LogMiner 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-2 版权所有 ©2007,Oracle。保留所有权利。11-2 课程目标 学完本课后,应能完成以下工作: • 描述闪回和 LogMiner 的新增功能 • 使用闪回数据归档创建、保护和使用历史记录数据 – 准备数据库 – 创建、更改和删除闪回数据归档 – 查看闪回数据归档元数据 • 使用闪回事务处理回退 – 设置闪回事务处理先决条件 – 查询有相关性及没有相关性的事务处理 – 选择回退选项和闪回事务处理 • 使用 EM LogMiner 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-3 版权所有 ©2007,Oracle。保留所有权利。11-3 闪回和 LogMiner 的新增功能和增强功能 在 Oracle Database 11g 中易于使用: • 闪回数据归档功能可自动跟踪和安全存储在某个记录的 生存期(而非应用程序逻辑)内对该记录进行的所有事 务处理更改。 • 闪回事务处理和相关事务处理或作业回退提高了处理还 原逻辑错误的灵活性 • 采用与闪回事务处理集成在一起的基于浏览器的 Enterprise Manager (EM) LogMiner 界面 闪回和 LogMiner 的新增功能和增强功能 组织经常需要跟踪和存储在某个记录的生存期内对该记录进行的所有事务处理更改。现在 不必再将此智能功能内置到应用程序中。闪回数据归档功能以安全的方式满足了长期保留 需求(超过还原保留期)。 使用 Oracle Database 11g 您可以闪回所选事务处理和所有相关事务处理。此恢复操作使用 还原数据创建并执行相应的校正事务处理,使受影响的数据还原到其原始状态。闪回事务 处理或“作业回退”只使用一个命令即可在保持数据库联机的同时,轻松并快速地回退某 一特定事务处理或一组事务处理及其相关事务处理,从而提高了逻辑恢复期间的可用性。 在早期版本中,管理员需要为 LogMiner 安装并使用单独的 Java 控制台。使用 Enterprise Manager 界面,管理员可以使用一个与闪回事务处理集成在一起的界面,因此少了一个安 装任务。 这些增强功能提供了基于任务的直观方法(通过 EM 图形化用户界面),或者降低了应用 程序的复杂性,因此增强了易用性并节省了时间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-4 版权所有 ©2007,Oracle。保留所有权利。11-4 闪回数据归档概览:“Oracle Total Recall” 以非常安全、高效且透明的方式跟踪对所有 Oracle 数据的 历史记录更改 • “安全” – 无法修改历史记录数据 – 根据规范进行保留 – 基于保留策略自动清除 • “高效” – 采用特殊的内核优化,最小化捕获历史记录数据的性能开销 – 以压缩形式存储在表空间中,最小化存储要求 – 对应用程序是完全透明的 – 易于设置 闪回数据归档:概览 闪回数据归档是一个新的数据库对象,是存储历史记录信息的逻辑容器。它存储在一个或 多个表空间中,跟踪一个或多个表的历史记录。您需要为每个闪回数据归档指定保留持续 时间。可在闪回数据归档中按保留要求分组历史记录表数据。多个表可以共享相同的保留 和清除策略。 使用“Oracle Total Recall”选项,Oracle Database 11g 得到了显著增强,它可以跟踪历史记 录,同时保持性能受到的影响最小,并且可以使用压缩形式存储历史记录数据。此效率是 使用您自己的触发器所无法达到的,这些触发器还需要花费时间和精力进行设置和维护。 系统不允许执行使历史记录失效或阻止历史记录捕获的操作,例如删除或截断表。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-5 版权所有 ©2007,Oracle。保留所有权利。11-5 闪回数据归档比较 每个数据库一个每个表任意数目访问时间点 粒度 操作 主要优点 使整个数据库实际回退到某个 时间点 访问任何时间点的数据而不会 更改当前数据 数据库表 脱机操作,需要预配置和资源 闪回数据库 联机操作,启用跟踪,使用最 少的资源 闪回数据归档 闪回数据归档比较 闪回数据归档技术与闪回数据库的比较: • 使用闪回数据归档可以访问任意时间点的数据,而不会实际更改当前数据。这与闪回 数据库相反,闪回数据库会使数据库实际返回到某个时间点。 • 必须启用跟踪才能访问历史记录,而闪回数据库需要预配置。闪回数据库属于脱机操 作,需要资源。闪回数据归档属于联机操作(历史记录访问与当前访问无缝共存)。 由于使用了新的后台进程,所以它对现有的进程几乎没有影响。 • 闪回数据归档在表级别启用,而闪回数据库只能在数据库级别运行。 • 使用闪回数据归档,可以返回到一个表的不同行或多个不同表的多个不同时间点,而 使用闪回数据库则只能返回到特定调用的一个时间点。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-6 版权所有 ©2007,Oracle。保留所有权利。11-6 闪回数据归档:概览 缓冲区 高速缓存 还原数据 DML 操作 中的原始数据 存储在表空间中的 闪回数据归档 1 年 2 年 5 年 示例:三个闪回数据 归档,保留期分别为: 对于超过还原保留期的长期保留要求 FBDA 还原数据 闪回数据归档:概览 闪回数据归档是一种历史记录数据存储。Oracle Database 11g 通过新的闪回数据归档后台 进程 FBDA 自动跟踪和归档启用了闪回数据归档的表中的数据。使用此功能可满足超过还 原保留期的长期保留要求。闪回数据归档可确保闪回查询能够获得对数据库对象版本的 SQL 级别访问权限,而不会出现快照太旧的错误。 闪回数据归档由一个或多个表空间(或其中的几部分)组成。您可以拥有多个闪回数据归 档。每个闪回数据归档都具有特定的保留持续时间。您应根据保留持续时间的要求创建不 同的闪回数据归档,例如,为必须保留一年的所有记录创建一个闪回数据归档,为必须保 留两年的所有记录创建另一个闪回数据归档等。 FBDA 将异步收集原始数据并将其写入闪回数据归档。它并不包括原始索引,因为检索历 史记录信息的模式与检索当前信息的模式可能大不相同。 注:您可能需要针对历史记录查询持续时间创建适合的索引。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-7 版权所有 ©2007,Oracle。保留所有权利。11-7 闪回数据归档:体系结构 历史记录或归档表: - 压缩存储 - 使用自动数字粉碎 缓冲区高速缓存 FBDA 使用的 DML 更改 原来的值 还原 FBDA 闪回数据归档 1 2 3 表空 间 表空 间 表空 间 闪回数据归档:体系结构 闪回数据归档后台进程 (FBDA) 随数据库启动。 1. FBDA 首先对缓冲区高速缓存中的还原数据执行操作。 2. 如果还原数据已不在缓冲区高速缓存中,FBDA 也可以从还原段读取所需值。 3. FBDA 将合并启用了闪回归档的表中的修改行,并将其写入相应的历史记录表,这些 表将组成闪回数据归档。 您可以通过查询 *_FLASHBACK_ARCHIVE_TABLES 视图查找历史记录表的内部分配名 称。历史记录表是压缩的数据,并已在内部进行了分区。 数据库将在保留期到期后的第一天自动清除所有历史记录信息(删除数据,而不破坏闪回 数据归档)。例如,如果保留期为 10 天,则会在每 10 天后的第一天删除最旧的信息,在 归档中仅保留 10 天的信息。这是实现数字粉碎的一种方法。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-8 版权所有 ©2007,Oracle。保留所有权利。11-8 准备数据库 要满足长期保留要求,请使用闪回数据归档。首先执行下列 步骤: • 对于归档管理员: – 为数据归档创建一个或多个表空间并授予对表空间的 QUOTA 权限。 – 授予创建和维护闪回归档所需的 FLASHBACK ARCHIVE ADMINISTER 系统权限。 • 对于归档用户: – 授予 FLASHBACK ARCHIVE 对象权限(用于对给定闪回归 档中的特定表启用历史记录跟踪)。 – 授予查询特定对象所需的 FLASHBACK 和 SELECT 权限。 准备数据库 要启用闪回数据归档,请务必执行下列任务: 为数据归档创建一个或多个表空间,并对“归档管理员”授予访问权限和适合的限额。 同时,为归档管理员授予 FLASHBACK ARCHIVE ADMINISTER 系统权限,允许其执行 下列语句: • CREATE FLASHBACK ARCHIVE • ALTER FLASHBACK ARCHIVE • DROP FLASHBACK ARCHIVE 要允许特定用户使用特定闪回数据归档,请为归档用户授予对该闪回数据归档的 FLASHBACK ARCHIVE 对象权限。这样,归档用户可以使用特定闪回数据归档对表启用 闪回归档。 以归档管理员身份执行以下示例: GRANT FLASHBACK ARCHIVE ON FLA1 TO HR; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-9 准备数据库(续) 用户很有可能会使用其它闪回功能。要允许在查询期间访问特定对象,请授予对查询涉及的 所有对象的 FLASHBACK 和 SELECT 权限。 如果用户需要访问 DBMS_FLASHBACK 程序包,则需要为他们授予对此程序包的 SELECT 权 限。这样,用户就可以使用 DBMS_FLASHBACK.ENABLE 和 DBMS_FLASHBACK.DISABLE 过程来启用或禁用闪回数据归档。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-10 版权所有 ©2007,Oracle。保留所有权利。11-10 准备数据库 • 配置还原: – 创建还原表空间(默认设置为:可自动扩展的表空间) – 启用自动还原管理(11g 的默认设置) – 了解还原的自动优化: — 固定大小的表空间:可获得最佳保留期的自动优化 — 可自动扩展的还原表空间:可获得运行时间最长的 查询的自动优化 – 建议对闪回使用以下设置:固定大小的还原表空间 在还原表空间中 还原数据 保留期:15 分钟 准备数据库(续) Oracle Database 11g 使用下列默认数据库初始化参数: • UNDO_MANAGEMENT='AUTO' • UNDO_TABLESPACE='UNDOTBS1' • UNDO_RETENTION=900 换句话说,默认情况下启用自动还原管理。如果需要,请按《Oracle 数据库管理员指南》 中的说明启用自动还原管理。 可自动扩展的还原表空间基于数据库安装而创建。 • 对于固定大小的还原表空间,Oracle DB 会自动优化系统,以便为还原表空间提供可 能的最佳还原保留期。 • 对于可自动扩展的还原表空间(默认),Oracle DB 会保留还原数据,其保留时间至 少满足运行时间最长的查询所需的保留期,以及 UNDO_RETENTION 参数指定的还原 保留期阈值。 使用固定大小的还原表空间,自动优化还原保留期通常会产生较好的结果。如果由于此原 因或其它原因而希望将还原表空间更改为固定大小,还原指导可帮助您确定要分配的正确 固定大小。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-11 准备数据库(续) 如果不能确定空间要求或者无法访问还原指导,请执行以下步骤: 1. 以可自动扩展的还原表空间开始。 2. 在一个业务循环(例如,1 天或 2 天或更长时间)中观察它。 3. 使用 V$UNDO_STAT 视图收集还原块信息,计算空间要求,并使用它们创建大小适合 的固定还原表空间(《Oracle 数据库管理员指南》中提供了计算公式)。 4. 查询 V$UNDOSTAT.TUNED_UNDORETENTION 以确定对于当前还原表空间还原数据 的保留持续时间。设置 UNDO_RETENTION 参数并不能保证未到期的还原数据不会被 覆盖。如果系统需要较多的空间,Oracle DB 可以用最新生成的还原数据覆盖未到期 的还原数据。 - 为还原表空间指定 RETENTION GUARANTEE 子句,以确保不会丢弃未到期的还 原数据。 - 为了满足超过还原保留期的长期保留要求,可创建闪回数据归档。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-12 版权所有 ©2007,Oracle。保留所有权利。11-12 闪回数据归档:工作流 1. 创建闪回数据归档。 2. 指定默认闪回数据归档(可选)。 3. 启用闪回数据归档。 4. 查看闪回数据归档数据。 闪回数据归档:工作流 第一步是创建闪回数据归档。闪回数据归档由一个或多个表空间组成。您可以拥有多个闪 回数据归档。 第二步是为系统指定默认的闪回数据归档,该步骤是可选的。闪回数据归档配置有保留时 间。将在此保留时间内保留在闪回数据归档中归档的数据。 在第三步中,可以对表先启用闪回归档(然后再禁用它)。对表启用闪回归档时,系统不 允许对该表执行某些 DDL 语句。默认情况下,不对任何表启用闪回归档。 在第四步中,当查询的数据超过了可能的还原保留期时,会以透明方式重新编写该查询以 使用闪回数据归档中的历史记录表。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-13 版权所有 ©2007,Oracle。保留所有权利。11-13 使用闪回数据归档 访问历史记录数据的基本工作流: 1. 创建闪回数据归档: 2. 对 FLA1 归档中的表启用历史记录跟踪: 3.查看历史记录数据: CREATE FLASHBACK ARCHIVE fla1 TABLESPACE tbs1 QUOTA 10G RETENTION 5 YEAR; ALTER TABLE inventory FLASHBACK ARCHIVE fla1; SELECT product_number, product_name, count FROM inventory AS OF TIMESTAMP TO_TIMESTAMP ('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'); 闪回数据归档:方案 使用 CREATE FLASHBACK ARCHIVE 语句创建闪回数据归档。 • 可以为系统指定默认的闪回数据归档(可选)。如果省略此选项,则以后仍可以将此 闪回数据归档指定为默认选项。 • 需要提供闪回数据归档的名称。 • 需要提供闪回数据归档的第一个表空间的名称。 • 可以确定表空间中闪回数据归档可以使用的最大空间量。默认设置是不受限制。如果 第一个表空间中的空间限额不是无限制的,则必须指定该值,否则会引发 ORA- 55621。 • 需要提供保留时间(表的闪回数据归档数据的保留天数)。 创建并使用闪回数据归档的基本工作流只包含三个步骤: 1. 归档管理员创建名为 fla1 的闪回数据归档,这最多占用 10 GB 的 tbs1 表空间,其 中的数据会保留五年。 2. 在第二步中,归档用户启用闪回数据归档。如果自动还原管理处于禁用状态,则在试 图修改表时会出现错误 ORA-55614。 3. 第三步使用 AS OF 查询显示所访问的历史记录数据。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-14 版权所有 ©2007,Oracle。保留所有权利。11-14 配置默认闪回数据归档 使用默认闪回归档: 1. 创建默认闪回数据归档: 2. 对表启用历史记录跟踪: 注:因为使用了默认的闪回数据归档,所以不需要提供闪回数据归档 名称。 3. 禁用历史记录跟踪: CREATE FLASHBACK ARCHIVE DEFAULT fla2 TABLESPACE tbs1 QUOTA 10G RETENTION 2 YEAR; ALTER TABLE stock_data FLASHBACK ARCHIVE; ALTER TABLE stock_data NO FLASHBACK ARCHIVE; 配置默认闪回数据归档 在 FLASHBACK ARCHIVE 子句中,可以指定将在其中存储表的历史记录数据的闪回数据 归档。默认情况下,系统没有闪回数据归档。在前面的示例中,为系统指定了默认闪回数 据归档。 可使用以下两种方式之一创建默认闪回归档: • 在 ALTER FLASHBACK ARCHIVE 语句的 SET DEFAULT 子句中,指定现有闪回数 据归档的名称。 • 创建闪回数据归档时,CREATE FLASHBACK ARCHIVE 语句中包含 DEFAULT。 可使用 ALTER TABLE 命令对表启用和禁用闪回归档。可通过指定闪回数据归档名称将 内部归档表分配给特定闪回数据归档。如果省略了名称,将使用默认闪回数据归档。指定 NO FLASHBACK ARCHIVE 可禁用表归档。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-15 版权所有 ©2007,Oracle。保留所有权利。11-15 填充闪回数据归档空间 闪回数据归档填满后,会发生什么? • 空间使用率达到 90% • 引发错误: – ORA-55623 "Flashback Archive \"%s\" is blocking and tracking on all tables is suspended" – ORA-55617 "Flashback Archive \"%s\" runs out of space and tracking on \"%s\" is suspended" • 生成预警日志条目 • 挂起跟踪 填充闪回数据归档空间 用尽闪回数据归档中的空间后,FBDA 及所有生成跟踪还原的前台进程会引发 ORA- 55617 或 ORA-55623 错误。会增加一个预警日志条目,表明“闪回归档 fla1 已满,归 档已挂起。\n”默认情况下,分配空间的使用率达到 90% 后即会发生此错误。 示例: • 55623, 00000, "Flashback Archive \"%s\" is blocking and tracking on all tables is suspended" // *Cause: Flashback archive tablespace has run out of space. // *Action: Add tablespace or increase tablespace quota for the flashback archive. // • 55617, 00000, "Flashback Archive \"%s\" runs out of space and tracking on \"%s\" is suspended“ // *Cause: Flashback archive tablespace quota is running out. // *Action: Add tablespace or increase tablespace quota for the flashback archive. 注:此后,由于 FBDA 无法归档这些操作,新的事务处理会受到阻止。跟踪数据中不会因 丢失的操作而出现间断。提高限额或扩展分配的表空间会导致 FBDA 先处理未归档的事务 处理,然后再处理正在进行的事务处理或新的事务处理。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-16 版权所有 ©2007,Oracle。保留所有权利。11-16 维护闪回数据归档 1. 增加空间: 2. 更改保留时间: 3. 清除数据: 4. 删除闪回数据归档: ALTER FLASHBACK ARCHIVE fla1 ADD TABLESPACE tbs3 QUOTA 5G; ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' day); ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 2 YEAR; DROP FLASHBACK ARCHIVE fla1; 维护闪回数据归档 1. 示例 1 为闪回数据归档 FLA1 最多增加 5 GB 的 TBS3 表空间(归档管理员不能超过 由 DBA 授予的表空间限额)。 2. 示例 2 将闪回数据归档 FLA1 的保留时间更改为两年。 3. 示例 3 从闪回数据归档 FLA1 中清除了一天前的所有历史记录数据。通常会在保留时 间到期后的第一天执行自动清除。也可以覆盖此设置以进行临时清除。 4. 示例 4 删除闪回数据归档 FLA1 和历史记录数据,但不删除其表空间。使用 ALTER FLASHBACK ARCHIVE 命令,可以: - 更改闪回数据归档的保留时间 - 清除部分或全部数据 - 增加、修改和删除表空间 注:删除闪回数据归档的全部表空间会引发错误。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-17 版权所有 ©2007,Oracle。保留所有权利。11-17 闪回数据归档:示例 1. 强制执行数字粉碎: 2. 访问历史记录数据: 3.恢复数据: CREATE FLASHBACK ARCHIVE tax7_archive TABLESPACE tbs1 RETENTION 7 YEAR; SELECT symbol, stock_price FROM stock_data AS OF TIMESTAMP TO_TIMESTAMP ('2006-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS') INSERT INTO employees SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('2007-06-12 11:30:00','YYYY-MM-DD HH24:MI:SS') WHERE name = 'JOE'; 闪回数据归档:示例 出于某些目的,组织需要存储历史记录数据。闪回数据归档功能可通过“as of”查询提供 对历史记录数据的无缝访问。可将闪回数据归档功能用于兼容性报告、审计报表、数据分 析和决策支持。 • 假设您希望建立自己的数据库,以便在 7 年后的第一天自动删除 TAX7_ARCHIVE 中 的信息。要实现此目的,只需指定示例 1 中所示的命令。 • 要在 2006 年 12 月 31 日营业时间结束时检索股票行情,请使用示例 2 中所示的查 询。 • 如果发现错误删除了 JOE 的雇员记录,但该记录在 2007 年 6 月 12 日 11:30 时仍然存 在,可以如示例 3 中所示重新将其插入。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-18 版权所有 ©2007,Oracle。保留所有权利。11-18 闪回数据归档:DDL 限制 对启用了闪回数据归档功能的表使用下述任一 DDL 语句都 会导致错误 ORA-55610: • 执行以下任一操作的 ALTER TABLE 语句: – 删除、重命名或修改列 – 执行分区或子分区操作 – 将 LONG 列转换为 LOB 列 – 包括 UPGRADE TABLE 子句(不管有无 INCLUDING DATA 子句) • DROP TABLE 语句 • TRUNCATE TABLE 语句 闪回数据归档:DDL 限制 出于安全性和合法兼容性方面的考虑,上述限制可确保闪回数据归档中的数据不会失效。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-19 版权所有 ©2007,Oracle。保留所有权利。11-19 查看闪回数据归档 查看结果: 显示有关闪回数据归档的信息*_FLASHBACK_ARCHIVE 显示有关启用了闪回归档的表的信息*_FLASHBACK_ARCHIVE_TABLES 显示闪回数据归档的表空间 说明 *_FLASHBACK_ARCHIVE_TS 视图名称 查看闪回数据归档 可使用动态数据字典视图查看跟踪表和闪回数据归档元数据。要访问 USER_FLASHBACK 视图,需要拥有表的所有权。对于其它视图,则需要拥有 SYSDBA 权限。 示例: • 查询闪回数据归档的创建时间: SELECT FLASHBACK_ARCHIVE_NAME, CREATE_TIME, STATUS FROM DBA_FLASHBACK_ARCHIVE; • 列出闪回数据归档使用的表空间: SELECT * FROM DBA_FLASHBACK_ARCHIVE_TS; • 列出特定表的归档表名称: SELECT ARCHIVE_TABLE_NAME FROM USER_FLASHBACK_ARCHIVE_TABLES WHERE TABLE_NAME = 'EMPLOYEES'; 无法从动态性能 (V$) 视图中检索过去的数据。对此类视图中的查询总是返回当前数据。 不过,您可以在静态数据字典视图(如 *_TABLES)中对过去的数据执行查询。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-20 版权所有 ©2007,Oracle。保留所有权利。11-20 标准和使用提示 • 查询过去的数据前执行 COMMIT 或 ROLLBACK • 使用当前的会话设置 • 使用 DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER 函数获取 SCN • 使用以下公式计算过去的某个时间: (SYSTIMESTAMP - INTERVAL '10' MINUTE) • 在要求一定精度(时间戳的粒度为三秒)的情况下使用系 统更改号 (SCN)。 标准和使用提示 • 为了确保数据库的一致性,应始终在查询过去的数据前执行 COMMIT 或 ROLLBACK 操作。 • 请记住,所有闪回处理都使用当前的会话设置(如国家语言和字符集),而不使用查 询时生效的设置。 • 要获得稍后与闪回功能一起使用的 SCN,可以使用 DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER 函数。 • 要计算或检索查询中使用的过去某个时间,请使用函数返回值作为时间戳或 SCN 参 数。例如,将 SYSTIMESTAMP 函数的值加上或减去一个 INTERVAL 值。 • 要查询某个精确时间的过去数据,请使用 SCN。如果使用时间戳,查询的实际时间可 以比指定的时间最多早 3 秒。Oracle DB 在内部使用 SCN 并将其映射到粒度为 3 秒的 时间戳。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-21 版权所有 ©2007,Oracle。保留所有权利。11-21 闪回事务处理回退 • 用于回退特定事务处理及其所有相关事务处理的逻辑 恢复选项 – 使用还原、重做日志以及补充事件记录功能 – 创建并执行校正事务处理 – 您以提交或回退操作来结束更改 • 比费力的手动方法更快、更容易 相关事务处理包括: 连续编写 (WAW) 和 主键约束条件, 而不是外键约束条件 闪回事务处理回退 闪回事务处理回退是一个逻辑恢复选项,用于回退特定事务处理及相关事务处理,同时保 持数据库联机。相关事务处理通过连续编写 (WAW) 关系或主键约束关系相关联,在前者 中事务处理对目标事务处理更改的同一数据进行修改,而在后者中事务处理重新插入由目 标事务处理删除的同一主键值。闪回事务处理利用为还原块生成的还原和重做来创建并执 行校正事务处理,以将受影响的数据还原到其原始状态。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-22 版权所有 ©2007,Oracle。保留所有权利。11-22 闪回事务处理 • 建立闪回事务处理的先决条件 • 逐步完成可能的工作流 • 使用闪回事务处理向导 • 查询有相关性及没有相关性的事务处理 • 选择回退选项和闪回事务处理 • 检查结果 闪回事务处理 可从 Enterprise Manager 或 PL/SQL 程序包中使用闪回事务处理功能。 DBMS_FLASHBACK.TRANSACTION_BACKOUT 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-23 版权所有 ©2007,Oracle。保留所有权利。11-23 先决条件 … 而且数据库必须处于 ARCHIVELOG 模式 先决条件 要使用此功能,必须启用补充事件记录功能并建立正确的权限。例如,HR 方案中的 HR 用户决定对 REGIONS 表使用闪回事务处理。SYSDBA 可确保数据库处于归档日志模式, 并在 SQL*Plus 中执行以下设置步骤: alter database add supplemental log data; alter database add supplemental log data (primary key) columns; grant execute on dbms_flashback to hr; grant select any transaction to hr; HR 用户需要拥有表(和上一示例中的情况相同)或拥有 SELECT、UPDATE、DELETE 和 INSERT 权限,这样才能执行校正还原 SQL 代码。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-24 版权所有 ©2007,Oracle。保留所有权利。11-24 闪回事务处理 • 可使用 Enterprise Manager 或命令行闪回事务处理。 • EM 使用闪回事务处理向导,该向导使用 NOCASCADE 选项调用 DBMS_FLASHBACK.TRANSACTION_BACKOUT 过程。 • 如果 PL/SQL 调用成功完成,即意味着事务处理不具有 任何相关性,并且已成功回退单个事务处理。 闪回事务处理 安全权限 要闪回或回退事务处理,也就是创建校正事务处理,您必须对所有受影响的表具有 SELECT、FLASHBACK 和 DML 权限。 使用条件 • 相冲突的 DDL 不支持事务处理回退。 • 事务处理回退从 LogMiner 中继承数据类型支持。要查看支持的数据类型,请参阅 Oracle Database 11g 文档。 建议 • 发现需要回退事务处理时,尽快启动回退操作的效果会比较好。重做日志太大和事务 处理率过高会降低事务处理回退操作的速度。 • 为回退操作提供事务处理名称有利于稍后的审计工作。如果没有提供事务处理名称, 会自动生成一个名称。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-25 版权所有 ©2007,Oracle。保留所有权利。11-25 可能的工作流 • 查看表中的数据 • 发现逻辑问题 • 使用闪回事务处理 – 执行查询 – 选择事务处理 – 闪回事务处理(如果没有冲突) – 选择其它回退选项(如果存在冲突) • 查看闪回事务处理结果 可能的工作流 假定有如下所示的几个事务处理: connect hr/hr INSERT INTO hr.regions VALUES (5,'Pole'); COMMIT; UPDATE hr.regions SET region_name='Poles' WHERE region_id = 5; UPDATE hr.regions SET region_name='North and South Poles' WHERE region_id = 5; COMMIT; INSERT INTO hr.countries VALUES ('TT','Test Country',5); COMMIT; connect sys/ as sysdba ALTER SYSTEM ARCHIVE LOG CURRENT; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-26 版权所有 ©2007,Oracle。保留所有权利。11-26 查看数据 查看数据 要在 Enterprise Manager 中查看表中的数据,请选择“Schema(方案)> Tables (表)”。 查看 HR.REGIONS 表中的内容时,发现存在一个逻辑问题。区域 20 的名称错误。您决定 立即解决此问题。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-27 版权所有 ©2007,Oracle。保留所有权利。11-27 闪回事务处理向导 闪回事务处理向导 在 Enterprise Manager 中,选择“Schema(方案)> Tables(表)> HR.REGIONS”,然后 在“Actions(操作)”下拉列表中选择“Flashback Transaction(闪回事务处理)”,单 击“Go(执行)”。此时会针对选定表调用闪回事务处理向导,“Flashback Transaction: Perform Query(闪回事务处理:执行查询)”页将显示出来。 选择适当的时间范围,然后添加查询参数(指定的范围越小,搜索闪回事务处理向导用的 时间就越短)。 在 Enterprise Manager 中,闪回事务处理与 LogMiner 无缝集成在一起(如此页中所示)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-28 闪回事务处理向导(续) 如果没有 Enterprise Manager,请使用 DBMS_FLASHBACK.TRANSACTION_BACKOUT 过 程(《PL/SQL Packages and Types Reference》中提供了有关此过程的说明)。实际上,您 可以将事务处理 ID 数组作为相关性搜索的起点。例如: CREATE TYPE XID_ARRAY AS VARRAY(100) OF RAW(8); CREATE OR REPLACE PROCEDURE TRANSACTION_BACKOUT( numberOfXIDs NUMBER, -- number of transactions passed as input xids XID_ARRAY, -- the list of transaction ids options NUMBER default NOCASCADE, -- back out dependent txn timeHint TIMESTAMP default MINTIME -- time hint on the txn start ); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-29 版权所有 ©2007,Oracle。保留所有权利。11-29 闪回事务处理向导 闪回事务处理向导(续) “Flashback Transaction: Select Transaction(闪回事务处理:选择事务)”页将根据以前输 入的规范显示事务处理。首先,显示事务处理的详细信息以确认正在闪回正确的事务处 理。然后,选择违规事务处理并继续按照向导执行操作。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-30 版权所有 ©2007,Oracle。保留所有权利。11-30 闪回事务处理向导 1 2 闪回事务处理向导(续) 虽然此时闪回事务处理向导会生成还原脚本并闪回事务处理,但借此您可以控制对此闪回 的提交。单击事务处理 ID 可检查其校正 SQL 语句。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-31 版权所有 ©2007,Oracle。保留所有权利。11-31 闪回事务处理向导 1 2 闪回事务处理向导(续) 在提交事务处理前,可使用“Flashback Transaction: Review(闪加事务处理:复查)”页 底部的“Execute SQL(执行 SQL)”区域查看提交的结果。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-32 版权所有 ©2007,Oracle。保留所有权利。11-32 闪回事务处理向导 COMMIT 完成 在“Flashback Transaction: Review(闪回事务处理:复查)”页中,单击“Show Undo SQL Script(显示还原 SQL 脚本)”按钮以查看校正 SQL 命令。单击“Finish(完成)” 提交校正事务处理。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-33 版权所有 ©2007,Oracle。保留所有权利。11-33 选择其它回退选项 选择其它回退选项 TRANSACTION_BACKOUT 过程可检查相关性,例如: • 连续编写 (WAW) • 主约束条件和唯一约束条件 事务处理可以具有 WAW 相关性,这意味着事务处理将更新或删除由相关事务处理插入 或更新的行。例如,在主(或唯一)约束条件和强制外键约束条件的主/从关系中会发生 这种情况。 要了解 NONCONFLICT_ONLY 和 NOCASCADE_FORCE 选项之间的差异,可以假定 T1 事 务处理更改了 R1 行、R2 行和 R3 行,T2 事务处理更改了 R1 行、R4 行和 R5 行。在此方 案中,因为两个事务处理都更新了 R1 行,因此 R1 成了“冲突”行。T2 事务处理与 T1 事务处理具有 WAW 相关性。使用 NONCONFLICT_ONLY 选项,可回退 R2 和 R3,因为 R2 和 R3 不存在冲突并且假定您知道处理 R1 行的方法。使用 NOCASCADE_FORCE 选 项,可回退全部三个行(R1、R2 和 R3)。 注:此屏幕快照不是工作流示例的一部分,但它显示了较复杂情况的其它详细信息。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-34 版权所有 ©2007,Oracle。保留所有权利。11-34 选择其它回退选项 选择其它回退选项(续) 闪回事务处理向导按以下方式运行: • 如果带有 NOCASCADE 选项的 DBMS_FLASHBACK.TRANSACTION_BACKOUT 过程失 败(因为存在相关事务),则可以更改恢复选项。 • 使用 NONCONFLICT_ONLY 选项,可回退事务处理中的非冲突行,从而保持了数据库 的一致性(虽然为了修复数据而破坏了事务处理的原子性)。 • 如果希望不考虑相关事务处理而强制回退给定的事务处理,请使用 NOCASCADE_FORCE 选项。服务器按照与提交时间相反的顺序仅对给定事务处理执行 校正 DML 命令。如果没有违反约束条件,您可以继续提交更改,否则会回退。 • 要按投寄顺序完全删除给定事务处理及其所有相关事务处理,请使用 CASCADE 选 项。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-35 版权所有 ©2007,Oracle。保留所有权利。11-35 最后步骤(不使用 EM) 选择回退选项后,会在 DBA_FLASHBACK_TXN_STATE 和 DBA_FLASHBACK_TXN_REPORT 表中生成相关性报告。 • 检查显示了已回退的所有事务处理的相关性报表。 • 提交更改使其成为永久更改。 • 回退以放弃更改。 最后步骤(不使用 EM) DBA_FLASHBACK_TXN_STATE 视图包含事务处理的当前状态:在系统中是处于活动状态 还是已被有效回退。系统将使用校正事务处理以原子方式维护此表。对于每个校正事务处 理,可能存在多个行,其中每行都会提供校正事务处理已校正的事务处理间的相关性关 系。 DBA_FLASHBACK_TXN_REPORT 视图可提供关于数据库中已提交的所有校正事务处理的 详细信息。此视图中的每一行都与一个校正事务处理相关联。 有关这些表的详细说明,请参阅《Oracle 数据库参考》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 11-36 版权所有 ©2007,Oracle。保留所有权利。11-36 查看闪回事务处理元数据 显示相关的 XML 信息*_FLASHBACK_TXN_REPORT 显示已回退的事务处理的事务处理标识符 说明 *_FLASHBACK_TXN_STATE 视图名称 SQL> SELECT * FROM DBA_FLASHBACK_TXN_STATE; COMPENSATING_XID XID BACKOUT_MODE DEPENDENT_XID USER# ---------------- ---------------- ------------ --------------- -------- 0500150069050000 03000000A9050000 4 0 0500150069050000 05001E0063050000 4 03000000A9050000 0 查看闪回事务处理元数据 可使用数据字典视图查看关于闪回事务处理回退的信息。 DBA_ FLASHBACK_TXN_REPORT 的示例内容: COMPENSATING_XID ---------------- COMPENSATING_TXN_NAME ----------------------------------------------------------------------------- COMMIT_TI --------- XID_REPORT ----------------------------------------------------------------------------- USER# ---------- 0500150069050000 26-JUN-07 使用 ADRCI 查看预警日志 还可以使用 ADRCI 查看预警日志文件的内容。可以选择更改当前的 ADR 主目录。使用 SHOW HOMES 命令列出所有 ADR 主目录,然后使用 SET HOMEPATH 命令更改当前的 ADR 主目录。 请确保已正确设置了操作系统环境变量(如 ORACLE_HOME),然后在操作系统命令提示 符下输入以下命令:adrci。 该实用程序会启动,并显示如幻灯片中所示的提示符。 然后,使用 SHOW ALERT 命令。要限制输出,可以使用 –TAIL 选项查看最近的记录。 这将显示预警日志的最后部分(大约 20 到 30 条消息),然后等待更多消息进入预警日志 中。这些刚刚进入到预警日志的消息也会显示出来。使用此命令,可以对预警日志进行实 时监视。按 CTRL-C 可停止等待并返回到 ADRCI 提示符处。如果需要,还可以指定要打 印的行数。 还可以过滤 SHOW ALERT 命令的输出,如该幻灯片中示例底部所示,您希望只显示包含 字符串 ORA-600 的预警日志消息。 注:ADRCI 允许您将输出假脱机到文件中,与在 SQL*Plus 中使用的方法非常相似。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-12 版权所有 ©2007,Oracle。保留所有权利。12-12 问题和意外事件 问题 意外事件 问题关键字 问题 ID 意外事件 ID 严重错误 DBA 自动创建 手动创建 自动转换 关闭 数据已清除 正在跟踪 就绪 正在收集 意外事件状态 MMON ADR 自动清除 涌进控制 跟踪 非严重错误 要发送到 Oracle 技术支持 的程序包 问题和意外事件 为了简化严重错误的诊断和解决过程,故障可诊断性基础结构对 Oracle DB 引入了两个概 念:问题和意外事件。 • 问题是指数据库中的严重错误。ADR 将对问题进行跟踪。每个问题都由唯一的问题 ID 标识,并具有问题关键字,问题关键字是描述问题的属性集。问题关键字中包括 ORA 错误编号、错误参数值和其它信息。下面是一个可能的严重错误列表: - 所有内部错误 - ORA-60x 错误 - 所有系统非法访问 -(SEGV、SIGBUS) - ORA-4020(库对象上出现死锁)、ORA-8103(对象不再存在)、ORA-1410 (ROWID 无效)、ORA-1578(数据块已损坏)、ORA-29740(节点逐出)、 ORA-255(未装载数据库)、ORA-376(此时无法读取文件)、ORA-4030(进程 内存不足)、ORA-4031(无法分配更多字节的共享内存)、ORA-355(更改号次 序混乱)、ORA-356(更改说明中的长度不一致)、ORA-353(日志损坏)、 ORA-7445(操作系统异常) • 意外事件是指出现一次的问题。如果问题出现多次(这种情况较常见),则每次出现 时都会创建一个意外事件。ADR 将对意外事件进行跟踪。每个意外事件都由数字意外 事件 ID 标识,此 ID 在一个 ADR 主目录中是唯一的。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-13 问题和意外事件(续) 如果发生意外事件,数据库会在预警日志中创建一个条目,收集关于该意外事件的诊断数 据(堆栈跟踪、进程状态转储和其它重要数据结构转储),使用意外事件 ID 标记诊断数 据,然后将数据存储在为该意外事件创建的 ADR 子目录中。每个意外事件均具有问题关 键字,并映射到一个问题。如果两个意外事件的问题关键字相匹配,则认为它们的根本原 因相同。如果大量会话都出现相同的严重错误,则会迅速创建很多诊断信息,此时多于一 定数量的意外事件的诊断信息是不必要的。因此,ADR 提供了涌进控制,以便在给定时 间间隔内仅转储一定数量的属于同一问题的意外事件。请注意,受到涌进控制的意外事件 仍然会生成意外事件,它们只是跳过转储操作。默认情况下,对于某个给定问题每小时只 允许五个转储。 可以将问题视为具有相同故障现象的一组意外事件。引入此概念的主要原因是为了使用户 能够更轻松地管理自己系统中的错误。例如,一个出现 20 次的故障现象将仅报告给 Oracle 一次。您通常需要管理问题而不是意外事件,可使用 IPS 将问题打包发送到 Oracle 技术支持。如果出现严重错误,系统会自动创建最常见的意外事件,但是,您也可以通过 EM 支持工作台提供的 GUI 手动创建意外事件。当希望报告的问题不带有在 Oracle 代码 中引发的严重错误时,一般会手动创建意外事件。 随着时间的推移,ADR 中会累积越来越多的意外事件。使用保留策略,可以指定诊断数 据的保留时间。ADR 意外事件由两个不同的策略控制: • 意外事件元数据保留策略控制元数据的保留时间。此策略的默认设置为一年。 • 意外事件文件和转储保留策略控制生成的转储文件的保留时间。此策略的默认设置为 一个月。 可使用 EM 的“Support Workbench(支持工作台)”页上的“Incident Package Configuration(意外事件程序包配置)”链接来更改这些设置。在 RDBMS 组件中, MMON 负责自动清除过期的 ADR 数据。 意外事件状态反映了该意外事件所处的状态。意外事件可以处于以下任一状态: • 正在收集:已新建了意外事件,该意外事件正在收集诊断信息。在此状态下,意外事 件数据可能不完整,此时不应打包,而应谨慎地查看。 • 就绪:数据收集阶段已完成。现在可以使用意外事件进行分析,或将意外事件打包发 送到 Oracle 技术支持。 • 正在跟踪:DBA 正在处理意外事件,并且选择将该意外事件无期限地保留在资料档 案库中。必须手动将意外事件状态更改为此值。 • 关闭:此时,意外事件处于完成状态。在此状态下,ADR 可以选择在超过保留策略 后清除的意外事件。 • 数据已清除:已经从该意外事件中删除了相关联的文件。在某些情况下,即使意外事 件文件实际上可能仍然存在,也建议用户不要查看这些文件,因为它们可能处于不一 致的状态。请注意,意外事件的意外事件元数据本身仍有效,可以进行查看。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-14 问题和意外事件(续) 可使用 ADRCI (show incident -mode detail) 查看意外事件状态,也可以直接在 支持工作台中查看。 如果意外事件处于正在收集或就绪状态的时间已超过其保留期长度的两倍,则该意外事件 将自动更改为关闭状态。可以手动清除意外事件文件。 为简单起见,由 ADR 内部维护问题元数据。问题是在(问题关键字的)第一个意外事件 出现时自动创建的。将最后一个意外事件从资料档案库中删除后,问题元数据也会被删 除。 注:无法对严重错误禁用自动创建意外事件功能。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-15 版权所有 ©2007,Oracle。保留所有权利。12-15 意外事件打包服务 (IPS) • 可以使用多条规则,将 ADR 中给定问题的所有相关转储与 跟踪关联起来,以将其打包发送到 Oracle 技术支持。 • 规则可以涉及大概在同一时间生成且与相同客户端、相同 错误代码等相关联的文件。 • DBA 可以在打包前显式添加/编辑或删除文件。 • 可通过 EM 或 ADRCI 访问 IPS。 意外事件打包服务 通过意外事件打包服务 (IPS),您可以自动并轻松地收集与严重错误相关的所有诊断数据 (跟踪、转储、健康状况检查报告、SQL 测试案例等),并将数据打包成 zip 文件以传送 给 Oracle 技术支持。因为与严重错误有关的所有诊断数据都使用该错误的意外事件编号 进行了标记,所以不必搜索跟踪文件、转储文件等来确定执行分析所需的文件;意外事件 打包服务会自动标识所有必需的文件并将其添加到程序包中。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-16 版权所有 ©2007,Oracle。保留所有权利。12-16 • 意外事件程序包是 ADR 中的 一个逻辑结构,用于描绘 一个或多个问题。 • 程序包是一个 zip 文件, 包含与某个意外事件程序包 有关的转储信息。 • 默认情况下,意外事件程序包 中只包含每个问题的前三个 意外事件和后三个意外事件。 • 可以生成完整的 zip 文件, 也可以生成增量 zip 文件。 意外事件程序包 ORA600HAH_20070818131159_COM_1.zip alert cdump (其它)hmincpkg incident 元数据 pkg_1 pkg_n… trace diag rdbms DB 名称 SID ADR 基目录 ADR 主目录 意外事件程序包 要将诊断数据上载到 Oracle 支持服务,请先收集意外事件程序包中的数据。创建意外事 件程序包时,可以选择要添加到意外事件程序包中的一个或多个问题,支持工作台随后自 动将与所选问题相关联的意外事件信息、跟踪文件和转储文件添加到意外事件程序包中。 因为一个问题可以有多个意外事件(相同问题多次出现),所以默认情况下只将每个问题 的前三个意外事件和后三个意外事件添加到意外事件程序包中。可以在“Incident Packaging Configuration(意外事件打包配置)”页中更改此默认数量,可从“Support Workbench(支持工作台)”页访问此页。 创建意外事件程序包后,可以将任何类型的外部文件添加到意外事件程序包中,也可以从 意外事件程序包中删除选定文件,或者编辑意外事件程序包中的选定文件以删除敏感数 据。在根据意外事件程序包内容创建物理文件之前,意外事件程序包只是一种逻辑结构, 也就是说,意外事件程序包最初只是 ADR 中的元数据集合。添加和删除意外事件程序包 内容时,只是修改元数据。如果要将数据上载到 Oracle 支持服务,可以调用支持工作台 或 ADRCI 函数,以收集元数据引用的所有文件,将其放入 zip 文件,然后将该 zip 文件上 载到 MetaLink。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-17 意外事件程序包(续) 注:默认情况下,ADRCI 在当前目录下生成程序包,而支持工作台在 /u01/app/oracle/product/11.1.0/db_1// sysman/emd/state 目录下生成程序包。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-18 版权所有 ©2007,Oracle。保留所有权利。12-18 EM 支持工作台:概览 • 一个向导,引导您完成处理问题的过程 • 可以使用支持工作台执行下列任务: – 查看问题和意外事件的详细资料。 – 运行健康状况检查。 – 生成更多的诊断数据。 – 运行指导以帮助解决问题。 – 通过 MetaLink 创建和跟踪服务请求。 – 生成意外事件程序包。 – 关闭已解决的问题。 EM 支持工作台:概览 支持工作台是一个 Enterprise Manager 向导,可以帮助您完成处理严重错误的过程。它将 显示意外事件通知,并提供意外事件详细资料,还允许您选择意外事件以进行进一步的处 理。进一步处理包括运行额外的健康状况检查、调用 IPS 以将有关意外事件的所有诊断数 据打包、将 SQL 测试案例和选定用户文件添加到程序包、填写提交给 Oracle 技术支持的 技术支持请求 (TAR)、将打包的意外事件信息发送到 Oracle 技术支持,以及在 TAR 的整 个生命周期内对其进行跟踪。 可以使用支持工作台执行下列任务: • 查看问题和意外事件的详细资料。 • 手动运行健康状况检查以收集问题的更多诊断数据。 • 生成其它转储和 SQL 测试案例以添加到问题的诊断数据中。 • 运行指导以帮助解决问题。 • 通过 MetaLink 创建和跟踪服务请求,并将服务请求编号添加到问题数据中。 • 将与一个或多个问题相关的所有诊断数据收集到一个意外事件程序包中,然后将该意 外事件程序包上载到 Oracle 支持服务。 • 关闭已解决的问题。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-19 版权所有 ©2007,Oracle。保留所有权利。12-19 Oracle Configuration Manager Oracle Configuration Manager Enterprise Manager 支持工作台使用 Oracle Configuration Manager 将 IPS 生成的物理文件上 载到 MetaLink。如果未安装或未正确配置 Oracle Configuration Manager,上载过程可能会 失败。在这种情况下,会显示一条消息,其中包含意外事件程序包 zip 文件的路径并请求 将该文件手动上载到 Oracle 技术支持。可以通过 MetaLink 手动上载。 在 Oracle Database 11g 安装过程中,Oracle Universal Installer 有一个如幻灯片中所示的特 殊“Oracle Configuration Manager Registration(Oracle Configuration Manager 注册)”屏 幕。在此屏幕中,需要选中“Enable Oracle Configuration Manager(启用 Oracle Configuration Manager)”复选框,接受许可协议,然后才能输入客户标识号 (CSI)、 MetaLink 帐户用户名和相应国家/地区代码。 如果不配置 Oracle Configuration Manager,则仍然可以手动将意外事件程序包上载到 MetaLink。 注:有关 Oracle Configuration Manager 的详细信息,请参阅以下 URL 上的“Oracle Configuration Manager Installation and Administration Guide”: http://www.oracle.com/technology/documentation/oem.html 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-20 版权所有 ©2007,Oracle。保留所有权利。12-20 EM 支持工作台流程 查看 Enterprise Manager 中的 严重错误预警。 查看问题 详细资料。 收集更多 诊断信息。 创建服务请求。 将诊断数据打包 并上载到 Oracle 技术支持。 跟踪 SR 并实施修复。 关闭意外事件。 1 2 3 4 5 6 7 EM 支持工作台流程 此图形概述了为了使用 Enterprise Manager 支持工作台进行调查、报告以及在某些情况下 解决问题而需要完成的任务: 1. 首先访问 Enterprise Manager 中的数据库主页并查看严重错误预警。选择要查看其详 细资料的预警。 2. 检查问题详细资料并查看为该问题记录的所有意外事件列表。显示自动运行的所有健 康状况检查的查找结果。 3. (可选)运行其它健康状况检查并调用 SQL Test Case Builder,以收集所有与 SQL 问 题相关的必需数据,并将该信息以 Oracle 技术支持能再现该问题的方式打包。SQL Test Case Builder 收集的信息类型包括:正在执行的查询、表和索引定义(但没有数 据)、优化程序统计信息和初始化参数设置。 4. 使用 MetaLink 创建服务请求并根据需要记录服务请求编号和问题信息。 5. 调用向导以自动将收集的有关问题的所有诊断数据打包并上载到 Oracle 技术支持。可 以根据需要编辑数据,以在上载前删除敏感信息。 6. (可选)在支持工作台中维护服务请求的活动日志。运行 Oracle 指导以帮助修复 SQL 故障或损坏的数据。 7. 将该问题的某个、某些或所有意外事件的状态设置为“关闭”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-21 版权所有 ©2007,Oracle。保留所有权利。12-21 在 Enterprise Manager 中查看严重错误预警 在 Enterprise Manager 中查看严重错误预警 可通过查看数据库主页中的严重错误预警展开问题(严重错误)的调查过程。要查看严重 错误预警,可访问 Enterprise Manager 中的数据库主页。在该主页上,可以查看 “Diagnostic Summary(诊断概要)”部分,如果存在意外事件,可单击该部分中的 “Active Incidents(活动意外事件)”链接。还可以使用“Alerts(预警)”部分查找标记 为意外事件的严重预警。 单击“Active Incidents(活动意外事件)”链接后,可访问“Support Workbench(支持工 作台)”页,在此页中可检索有关所有问题和相应意外事件的详细资料,还可以在此页中 检索所有健康状况监视器检查运行和创建的程序包。 注:此部分介绍的任务全部基于 Enterprise Manager。也可以使用 ADRCI 命令行实用程序 完成这些任务。有关 ADRCI 实用程序的详细信息,请参阅《Oracle 数据库实用程序》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-22 版权所有 ©2007,Oracle。保留所有权利。12-22 查看问题详细资料 查看问题详细资料 在“Support Workbench(支持工作台)”页的“Problems(问题)”子页上,单击要调查 的问题的 ID。此时将进入相应的“Problem Details(问题详细资料)”页。 在此页上,可以看到与问题相关的所有意外事件。可以将问题与 MetaLink 服务请求和 bug 号相关联。在此页的“Investigate and Resolve(调查并解决)”部分中,有一个“Self Service(自助)”子页,其中包含直接指向可对此问题执行的操作的链接。在此部分中, “Oracle Support(Oracle 技术支持)”子页包含直接指向 MetaLink 的链接。 “Activity Log(活动日志)”子页显示了到目前为止已对此问题执行的由系统生成的操 作。使用此子页,可以在调查问题时添加自己的注释。 在“Incidents(意外事件)”子页中,可以单击相关意外事件 ID 以转到相应的“Incident Details(意外事件详细资料)”页。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-23 版权所有 ©2007,Oracle。保留所有权利。12-23 查看意外事件详细资料 查看意外事件详细资料 打开“Incident Details(意外事件详细资料)”页后,“Dump Files(转储文件)”子页就 会显示出来,并列出所有相应转储文件。然后,可以单击一个特定转储文件的眼镜图标来 查看文件内容及其各个部分。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-24 版权所有 ©2007,Oracle。保留所有权利。12-24 查看意外事件详细资料 查看意外事件详细资料(续) 在“Incident Details(意外事件详细资料)”页上,单击“Checker Findings(检查器查找 结果)”查看“Checker Findings(检查器查找结果)”子页。此页会显示在检测到严重 错误时自动运行的所有健康状况检查的查找结果。大多数情况下,可选择一个或多个查找 结果,并调用一个指导来修复问题。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-25 版权所有 ©2007,Oracle。保留所有权利。12-25 创建服务请求 创建服务请求 在将问题的诊断信息打包并上载到 Oracle 技术支持前,必须创建一个服务请求。要创建 服务请求,首先需要转到 MetaLink。单击该页“Investigate and Resolve(调查并解决)” 部分中的“Go to Metalink(转到 Metalink)”按钮,即可直接从“Problem Details(问题 详细资料)”页访问 MetaLink。打开 MetaLink 后,按常规方式登录并创建服务请求。 完成后,可选择输入相应问题的服务请求。此项操作是可选操作,仅供参考。 在“Summary(概要)”部分中,单击 SR# 标签旁边的“Edit(编辑)”按钮,在打开的 窗囗中输入 SR#,然后单击“OK(确定)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-26 版权所有 ©2007,Oracle。保留所有权利。12-26 将诊断数据打包并上载到 Oracle 技术支持 将诊断数据打包并上载到 Oracle 技术支持 支持工作台提供了两种创建和上载意外事件程序包的方法:快速打包方法和定制打包方 法。该幻灯片中的示例说明了如何使用快速打包方法。 快速打包是步骤最少、自动化程度最高的一种方法。选择一个问题,提供意外事件程序包 名称及说明,然后安排意外事件程序包立即上载或在指定日期和时间上载。支持工作台会 自动将与该问题相关的诊断数据放入意外事件程序包中,完成意外事件程序包,创建 zip 文件,然后上载该文件。使用此方法时,无法添加、编辑或删除意外事件程序包文件或添 加其它诊断数据(如 SQL 测试案例)。要将诊断数据打包并上载到 Oracle 技术支持,请执 行以下操作: 1. 在“Problem Details(问题详细资料)”页上的“Investigate and Resolve(调查并解 决)”部分中,单击“Quick Package(快速打包)”。此时会显示快速打包向导中的 “Create New Package(新建程序包)”页。 2. 输入程序包名称及说明。 3. 输入标识问题的服务请求号。 4. 单击“Next(下一步)”,继续完成快速打包向导的其它页。在“Review(复查)” 页上,单击“Submit(提交)”上载该程序包。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-27 版权所有 ©2007,Oracle。保留所有权利。12-27 跟踪 SR 并实施修复 跟踪 SR 并实施修复 将诊断信息上载到 Oracle 技术支持后,可能需要执行多项活动来跟踪服务请求并实施修 复。这些活动包括: 将 Oracle Bug 号添加到问题信息中。为此,在“Problem Details(问题详细资料)”页 上,单击 Bug# 标签旁边的“Edit(编辑)”按钮。此操作仅供参考。 在问题活动日志中添加注释。为此,请完成下列步骤: 1. 访问该问题的“Problem Details(问题详细资料)”页。 2. 单击“Activity Log(活动日志)”显示“Activity Log(活动日志)”子页。 3. 在“Comment(注释)”字段中输入注释,然后单击“Add Comment(添加注 释)”。该注释将记录在活动日志中。 响应 Oracle 技术支持的请求,提供更多的诊断信息。Oracle 技术支持代表可能会提供有 关收集和上载更多诊断数据的说明。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-28 版权所有 ©2007,Oracle。保留所有权利。12-28 跟踪 SR 并实施修复 跟踪 SR 并实施修复(续) 在“Incident Details(意外事件详细资料)”页上,可运行 Oracle 指导以实施修复。可从 以下位置之一访问建议的指导: • “Problem Details(问题详细资料)”页的“Investigate and Resolve(调查并解决)” 部分中的“Self-Service(自助)”选项卡 • 如该幻灯片所示的“Incident Details(意外事件详细资料)”页的“Checker Findings (检查器查找结果)”子页 用于帮助修复严重错误的指导有: • 数据恢复指导:损坏的块、损坏或缺失的文件以及其它数据故障 • SQL 修复指导:SQL 语句故障 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-29 版权所有 ©2007,Oracle。保留所有权利。12-29 关闭意外事件和问题 关闭意外事件和问题 如果不再关注特定的意外事件,则可将其关闭。默认情况下,“Problem Details(问题详 细资料)”上不显示已关闭的意外事件。所有意外事件(无论是否关闭)在 30 天后都会 被清除。可以在“Incident Details(意外事件详细资料)”页上禁用某个意外事件的清除 功能。 要关闭意外事件,请执行以下操作: 1. 访问“Support Workbench(支持工作台)”主页。 2. 选择所需问题,然后单击“View(查看)”。此时将显示“Problem Details(问题详 细资料)”页。 3. 选择要关闭的意外事件,然后单击“Close(关闭)”。此时将显示“Confirmation (确认)”页。 4. 在“Confirmation(确认)”页上单击“Yes(是)”关闭该意外事件。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-30 版权所有 ©2007,Oracle。保留所有权利。12-30 意外事件打包配置 意外事件打包配置 如上所述,可以配置保留规则和打包生成的多个方面。使用支持工作台,通过单击 “Incident Packaging Configuration(意外事件打包配置)”链接,可从“Support Workbench (支持工作台)”页的“Related Links(相关链接)”部分访问“Incident Packaging Configuration(意外事件打包配置)”页。可更改以下参数: • 意外事件元数据的保留期:元数据基本上是关于数据的信息。对于意外事件来说,元数 据是指意外事件时间、ID、大小、问题等。数据是指意外事件的实际内容(如跟踪)。 • 包含意外事件的中断期限:此值指定程序包中包含到目前为止的一个时间范围内的意外 事件。例如,如果中断日期是 90 天,则系统只包括最后 90 天内的意外事件。 • 前导意外事件计数:对于程序包中包含的每个问题,系统将根据开头(前导)和结尾 (后续)选择问题的一定数量的意外事件。例如,如果该问题包含 30 个意外事件,而 前导意外事件计数为 5 个,后续意外事件计数为 4,则系统将包含前 5 个意外事件和最 后 4 个意外事件。 • 后续意外事件计数:请参阅以上内容。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-31 意外事件打包配置(续) • 相关时间近似值:此参数是精确的时间间隔,用于定义“同时发生”这个概念。存在 意外事件/问题与特定意外事件/问题相关联的概念,即问题与所述问题似乎有某种关 联。关联的一个标准是时间关联:查找与问题中的意外事件同时发生的意外事件。 • 程序包内容的时间窗囗:包含内容的时间窗口是从第一个所包含的意外事件前的 x 个 小时到最后一个意外事件后的 x 个小时(x 是该字段中指定的数字)。 注:如果使用的是 ADRCI 界面,则可访问更多参数。要查看所有可能的可配置参数的完 整说明,请在 ADRCI 中发出 ips show configuration 命令。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-32 版权所有 ©2007,Oracle。保留所有权利。12-32 定制打包:新建程序包 定制打包:新建程序包 与快速打包相比,定制打包方法的手动操作比较多,但使用这种方法可以更多地控制意外 事件程序包内容。可以新建一个包含一个或多个问题的意外事件程序包,也可以将一个或 多个问题添加到现有的意外事件程序包。然后,可以对新的或更新过的意外事件程序包执 行多项操作,包括: • 添加或删除问题或意外事件 • 添加、编辑或删除意外事件程序包中的跟踪文件 • 添加或删除任何类型的外部文件 • 添加其它诊断数据(如 SQL 测试案例) • 手动完成意外事件程序包,然后查看意外事件程序包内容,以确定是否必须编辑或删 除敏感数据,或者删除文件以减小意外事件程序包大小 使用这种定制打包方法,可将创建 zip 文件和请求上载到 Oracle 技术支持分为两个单独的 步骤来执行。可以立即执行其中的每个步骤,也可以安排在将来的某一日期和时间执行。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-33 定制打包:新建程序包(续) 要使用定制打包方法来打包和上载问题,请执行以下操作: 1. 在“Support Workbench(支持工作台)”主页底部的“Problems(问题)”子页中, 选择要打包的第一个问题,然后单击“Package(程序包)”。 2. 在“Package: Select packaging mode(程序包:选择打包模式)”子页上,选择 “Custom Packaging(定制打包)”选项,然后单击“Continue(继续)”。 3. 此时将显示“Custom Packaging: Select Package(定制打包:选择程序包)”页。要新 建意外事件程序包,请选择“Create New Package(新建程序包)”选项,输入意外 事件程序包名称及说明,然后单击“OK(确定)”。要将选定问题添加到现有的意 外事件程序包中,请选择“Select from Existing Packages(从现有的程序包中选 择)”选项,选择要更新的意外事件程序包,然后单击“OK(确定)”。 在前一幻灯片提供的示例中,您决定新建一个程序包。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-34 版权所有 ©2007,Oracle。保留所有权利。12-34 定制打包:处理意外事件程序包 定制打包:处理意外事件程序包 在“Customize Package(定制程序包)”页上,可看到新程序包已创建的确认消息。 此页显示了意外事件程序包中包含的意外事件,以及可选择的打包任务。可对新意外事件 程序包或更新过的现有意外事件程序包运行这些任务。 正如在幻灯片中看到的,可以排除/包括意外事件或文件以及许多其它可能的任务。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-35 版权所有 ©2007,Oracle。保留所有权利。12-35 定制打包:完成意外事件程序包 定制打包:完成意外事件程序包 使用完成意外事件程序包步骤可以向程序包中添加其它组件(如健康状况监视器)中的相 关文件。该程序包还包含最新的跟踪文件和日志文件。 如此幻灯片中所示,可通过单击“Packaging Tasks(打包任务)”部分中的“Finish Contents Preparation(完成内容准备)”链接完成程序包。此时将显示“confirmation(确 认)”页,其中列出了将包含在物理程序包中的所有文件。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-36 版权所有 ©2007,Oracle。保留所有权利。12-36 定制打包:生成程序包 定制打包:生成程序包 完成意外事件程序包后,可生成程序包文件。需要返回到相应的程序包页,单击 “Generate Upload File(生成上载文件)”。 此时将显示“Generate Upload File(生成上载文件)”页。在此页上,选择“Full(完 全)”或“Incremental(增量)”选项以生成完全意外事件程序包 zip 文件或增量意外事 件程序包 zip 文件。 对于完全意外事件程序包 zip 文件,系统始终将意外事件程序包(原始内容和所有相关数 据)的所有内容添加到 zip 文件。 对于增量意外事件程序包 zip 文件,系统仅将自上次为同一意外事件程序包创建 zip 文件 后出现的新或修改过的诊断信息添加到 zip 文件。 完成后,选择“Schedule(调度)”,并单击“Submit(提交)”。如果立即安排生成, 则将显示“Processing(正在处理)”页,直到打包过程完成。随后将显示“Confirmation (确认)”页,可在该页中单击“OK(确定)”。 注:如果从未为意外事件程序包创建物理文件,则“Incremental(增量)”选项不可用。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-37 版权所有 ©2007,Oracle。保留所有权利。12-37 定制打包:上载程序包 定制打包:上载程序包 生成物理程序包后,可以返回至“Customize Package(定制程序包)”页,然后在 “Packaging Tasks(打包任务)”部分中单击“View/Send Uploaded Files(查看/发送上载 的文件)”链接。 此时将转到“View/Send Upload Files(查看/发送上载的文件)”页,可在此页中选择程 序包,然后单击“Send to Oracle(发送到 Oracle)”按钮。 此时会显示“Send to Oracle(发送到 Oracle)”页。可以在此页中输入问题的服务请求号 并选择一个调度。然后,可单击“Submit(提交)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-38 版权所有 ©2007,Oracle。保留所有权利。12-38 查看和修改意外事件程序包 查看和修改意外事件程序包 创建程序包后,始终可以通过定制选项对其进行修改。 例如,转到“Support Workbench(支持工作台)”页,然后单击“Packages(程序包)” 选项卡。此时将转到“Packages(程序包)”子页。在此页中,可以选择一个程序包并将 其删除,也可以单击程序包链接转到“Package Details(程序包详细资料)”页。然后, 单击此页上的“Customize(定制)”转到“Customize Package(定制程序包)”页,在 该页中可通过增加/删除问题、意外事件或文件来处理该程序包。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-39 版权所有 ©2007,Oracle。保留所有权利。12-39 创建用户报告的问题 创建用户报告的问题 系统会将数据库内部生成的严重错误自动添加到自动诊断资料档案库 (ADR),并在支持工 作台中对其进行跟踪。但是,有时您希望手动将观察到的问题添加到 ADR,以让支持工 作台工作流对此问题进行处理。例如,在数据库或特定查询的性能突然出现明显的降低 时。支持工作台包括一种机制,可供您创建和处理此类用户报告的问题。 要创建用户报告的问题,请打开“Support Workbench(支持工作台)”页,然后单击 “Related Links(相关链接)”部分中的“Create User-Reported Problem(创建用户报告的 问题)”链接。此时将转到“Create User-Reported Problem(创建用户报告的问题)” 页,在此页中,您需要运行相应的指导,然后才能继续执行操作。只有对问题不确定时, 才需要运行指导。但是,如果完全了解要发生的情况,则可选择代表了所遇到的大多数问 题类型的问题,并单击“Continue with Creation of Problem(继续创建问题)”。 单击此按钮通常会在支持工作台中创建一个伪问题。这样便会使用之前见到的用于处理严 重错误的支持工作台工作流处理此问题。因此,最后会显示针对您的问题的“Problem Details(问题详细资料)”页。请注意,起初此问题没有任何与其关联的诊断数据。此 时,需要创建一个程序包并通过定制此程序包上载所需的跟踪文件。前面的内容中已对此 进行了介绍。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-40 版权所有 ©2007,Oracle。保留所有权利。12-40 使用 ADRCI 调用 IPS IPS CREATE PACKAGE INCIDENT PROBLEM | PROBLEMKEY Ø SECONDS | TIME IPS ADDNEW INCIDENTS FILE INCIDENT IPS COPY IN FILE OUT FILE IPS REMOVE FILE INCIDENT IPS FINALIZE PACKAGE IPS GENERATE PACKAGE IPS SET CONFIGURATION 使用 ADRCI 调用 IPS 创建程序包的过程包括两个步骤:首先创建逻辑程序包,然后生成 zip 文件形式的物理程 序包。这两个步骤均可以使用 ADRCI 命令执行。要创建逻辑程序包,请使用 IPS CREATE PACKAGE 命令。此命令有一些变体,您可以用来选择内容: • IPS CREATE PACKAGE 用于创建空的程序包。 • IPS CREATE PACKAGE PROBLEMKEY 用于创建基于问题关键字的程序包。 • IPS CREATE PACKAGE PROBLEM 用于创建基于问题 ID 的程序包。 • IPS CREATE PACKAGE INCIDENT 用于创建基于意外事件 ID 的程序包。 • IPS CREATE PACKAGE SECONDS 用于创建包含从数秒前到现在为止这个时间间隔 内生成的所有意外事件的程序包。 • IPS CREATE PACKAGE TIME 用于创建基于指定时间范围的程序包。 也可以向现有程序包添加内容。例如: • IPS ADD INCIDENT PACKAGE 用于将意外事件添加到现有程序包。 • IPS ADD FILE PACKAGE 用于将 ADR 中的文件添加到现有程序包。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-41 使用 ADRCI 调用 IPS(续) IPC COPY 可在 ADR 和外部文件系统之间复制文件。它有两种形式: • IN FILE,可将外部文件复制到 ADR 中,将其与现有程序包(也可以是意外事件) 相关联 • OUT FILE,可将文件从 ADR 复制到 ADR 之外的位置 IPS COPY 本质上用于 COPY OUT 文件、编辑文件和将其重新 COPY IN 到 ADR 中。 IPS FINALIZE 用于完成程序包以进行传送,这意味着要调用其它组件(如健康状况监 视器)以将其相关文件添加到程序包。该程序包还包含最新的跟踪文件和日志文件。如果 需要,此步骤可在生成程序包时自动运行。 要生成物理文件,请使用 IPS GENERATE PACKAGE 命令。语法为: IPS GENERATE PACKAGE IN [COMLPETE | INCREMENTAL] 此命令将为现有逻辑程序包生成物理 zip 文件。文件名中包含 COM(代表 complete)或 INC(代表 incremental),后跟一个在每次生成 zip 文件时都会递增的序列号。 IPS SET CONFIGURATION 用于设置 IPS 规则。 注:有关 ADRCI 的详细信息,请参阅《Oracle 数据库实用程序》指南。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-42 版权所有 ©2007,Oracle。保留所有权利。12-42 健康状况监视器:概览 严重错误 DBA 被动 手动 健康状况监视器 EM 或 DBMS_HM DB 结构完整性检查 数据块完整性检查 事务处理完整性检查 还原段完整性检查 字典完整性检查 DB 联机 DB 脱机 ADR V$HM_RUN DBMS_HM ADRCI EM hm (报表) V$HM_CHECK V$HM_CHECK 重做完整性检查 健康状况监视器:概览 从版本 11g 开始,Oracle DB 将包含称为健康状况监视器的框架,用于对数据库的各个组件 运行诊断检查。 健康状况监视器将检查数据库的各个组件(包括文件、内存、事务处理完整性、元数据和进 程使用情况)。这些检查器将生成查找结果报表以及解决问题的建议。健康状况监视器检查 可按两种方式运行: • 被动:故障可诊断性基础结构可以自动运行健康状况监视器检查以对严重错误做出响 应。 • 手动:DBA 可以使用 DBMS_HM PL/SQL 程序包或 Enterprise Manager 界面手动运行健康 状况监视器检查。 此幻灯片中显示了健康状况监视器可以运行的部分检查。有关所有可能检查的完整描述, 请查看 V$HM_CHECK。这些健康状况检查分为两个类别: • DB 联机:可以在数据库打开(即处于 OPEN 模式或 MOUNT 模式)时运行这些检查。 • DB 脱机:除在数据库打开时是“可运行的”以外,这些检查还可在实例可供使用及数 据库本身已关闭(即处于 NOMOUNT 模式)时运行。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-43 健康状况监视器:概览(续) 检查器运行后,将生成一个执行报告。此报告包含有关检查器查找结果的信息,包括查找 结果的优先级(低、高或严重)、查找结果及其后果的说明,以及关于执行的基本统计信 息。健康状况监视器可生成 XML 格式的报表并将其存储在 ADR 中。可使用 V$HM_RUN、DBMS_HM、ADRCI 或 Enterprise Manager 查看这些报表。 注:可以运行的检查大约有 20 项: SQL> select name,offline_capable,description,internal_check from v$hm_check; NAME O DESCRIPTION I --------------------- - --------------------------------------------- - N Y HM Test Check Y Check for HM Functionality Y DB Structure Integrity Check Y Checks integrity of all database files N Data Block Integrity Check Y Checks integrity of a datafile block N Redo Integrity Check Y Checks integrity of redo log content N Logical Block Check N Checks logical content of a block Y Transaction Integrity Check N Checks a transaction for corruptions N Undo Segment Integrity Check N Checks integrity of an undo segment N All Control Files Check Y Checks all control files in the database Y CF Member Check Y Checks a multiplexed copy of the control file Y All Datafiles Check Y Check for all datafiles in the database Y Single Datafile Check Y Checks a datafile Y Log Group Check Y Checks all members of a log group Y Log Group Member Check Y Checks a particular member of a log group Y Archived Log Check Y Checks an archived log Y Redo Revalidation Check Y Checks redo log content Y IO Revalidation Check Y Checks file accessability Y Block IO Revalidation Check Y Checks file accessability Y Txn Revalidation Check N Revalidate corrupted txn Y Failure Simulation Check Y Creates dummy failures Y Dictionary Integrity Check N Checks dictionary integrity N 21 rows selected. SQL> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-44 版权所有 ©2007,Oracle。保留所有权利。12-44 手动运行健康状况检查:EM 示例 手动运行健康状况检查:EM 示例 Enterprise Manager 提供了运行健康状况监视器检查的界面。可以在“Advisor Central(指 导中心)”页上的“Checker(检查器)”选项卡中发现此界面。此页列出了每种检查器 类型,可以单击一个检查器来运行它,然后在输入运行参数后单击相应检查器页上的 “OK(确定)”。此幻灯片显示了如何手动运行数据块检查器。 完成检查后,可以从“Results(结果)”表中选择检查器运行并单击“Details(详细资 料)”,以查看相应检查器运行的详细资料。检查器运行可以是被动的也可以是手动的。 在“Findings(查找结果)”子页上,可以看到从 V$HM_RUN、V$HM_FINDING 和 V$HM_RECOMMENDATION 提取的各种查找结果和相应建议。 如果在“Runs(运行)”子页上单击“View XML Report(查看 XML 报告)”,则可看 到 XML 格式的运行报告。如果 ADR 中尚未生成该 XML 报告,则在 Enterprise Manager 中查看该报告时会首次生成它。然后,可以使用 ADRCI 查看此报告,而无需生成它。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-45 版权所有 ©2007,Oracle。保留所有权利。12-45 手动运行健康状况检查:PL/SQL 示例 SQL> set long 100000 SQL> select dbms_hm.get_run_report('DicoCheck') from dual; DBMS_HM.GET_RUN_REPORT('DICOCHECK') -------------------------------------------------------------------------------- Basic Run Information (Run Name,Run Id,Check Name,Mode,Status) Input Paramters for the Run TABLE_NAME=tab$ CHECK_MASK=ALL Run Findings And Recommendations Finding Finding Name : Dictionary Inconsistency Finding ID : 22 Type : FAILURE Status : OPEN Priority : CRITICAL Message : SQL dictionary health check: invalid column number 8 on object TAB$ failed Message : Damaged rowid is AAAAACAABAAAS7PAAB - description: Object SCOTT.TABJFV is referenced SQL> exec dbms_hm.run_check('Dictionary Integrity Check', 'DicoCheck',0,'TABLE_NAME=tab$'); 手动运行健康状况检查:PL/SQL 示例 可以使用 DBMS_HM.RUN_CHECK 过程运行健康状况检查。要调用 RUN_CHECK,请提供 在 V$HM_CHECK 中找到的检查的名称、运行名称(这就是稍后用于检索报告的标签)和 控制其执行的一组相应的输入参数。可使用 V$HM_CHECK_PARAM 查看这些参数。 在此幻灯片的示例中,您希望为 TAB$ 表运行字典完整性检查。您调用此 DICOCHECK 运行,而且不希望为此检查设置任何超时。 执行 DICOCHECK 后,将执行 DBMS_HM.GET_RUN_REPORT 函数以获得从 V$HM_RUN、 V$HM_FINDING 和 V$HM_RECOMMENDATION 中提取的报告。输出明确地显示了在 TAB$ 中发现了严重错误。此表包含一个条目,表明一个表具有无效的列数。此外,此报 告还提供 TAB$ 中损坏的表的名称。 调用 GET_RUN_REPORT 函数时,会在 ADR 的 HM 目录中生成 XML 报告文件。在此示例 中,该文件称为 HMREPORT_DicoCheck.hm。 注:有关 DBMS_HM 的详细信息,请参阅《Oracle Database PL/SQL Packages and Types Reference》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-46 版权所有 ©2007,Oracle。保留所有权利。12-46 使用 ADRCI 实用程序查看 HM 报告 adrci> show hm_run … ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl: ************************************************************************* HM RUN RECORD 1 ********************************************************** RUN_ID 1 RUN_NAME HM_RUN_1 CHECK_NAME DB Structure Integrity Check NAME_ID 2 MODE 2 START_TIME 2007-07-02 17:31:54.271917 +07:00 RESUME_TIME END_TIME 2007-07-02 17:31:57.579834 +07:00 MODIFIED_TIME 2007-07-02 17:31:57.579834 +07:00 TIMEOUT 0 FLAGS 0 STATUS 5 SRC_INCIDENT_ID 0 NUM_INCIDENTS 0 ERR_NUMBER 0 REPORT_FILE … adrci> create report hm_run HM_RUN_1 Adrci> show report hm_run HM_RUN_1 … 使用 ADRCI 实用程序查看 HM 报告 可以使用 ADRCI 实用程序创建和查看健康状况监视器检查报告。要执行该操作,请确保 操作系统环境变量(如 ORACLE_HOME)设置正确,然后在操作系统命令提示符下输入以 下命令:adrci。 该实用程序会启动,并显示如幻灯片中所示的提示符。可以选择更改当前的 ADR 主目 录。使用 SHOW HOMES 命令列出所有 ADR 主目录,然后使用 SET HOMEPATH 命令更改 当前的 ADR 主目录。 然后,可以输入 SHOW HM_RUN 命令列出 ADR 中注册的且在 V$HM_RUN 中可以看到的所 有检查器运行。找到要为其创建报告的检查器运行,记下使用相应 RUN_NAME 字段的检 查器运行名称。如果此检查器运行的报告已存在,则 REPORT_FILE 字段中将包含一个 文件名。否则,可以使用 CREATE REPORT HM_RUN 命令生成报告,如幻灯片中所示。 要查看报告,请使用 SHOW REPORT HM_RUN 命令。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-47 版权所有 ©2007,Oracle。保留所有权利。12-47 SQL 修复指导:概览 DBA SQL 语句 执行 语句崩溃 在 ADR 中自动 生成意外事件 DBA 运行 SQL 修复指导 DBA 收到预警 SQL 修复指导调查 生成 SQL 补丁程序 DBA 接受 SQL 补丁程序 语句再次 成功执行 对 SQL 语句 进行了修补 执行 跟踪文件 SQL 修复指导:概览 如果 SQL 语句因出现在 ADR 中生成问题的严重错误而失败,可以运行 SQL 修复指导。 此指导将对语句进行分析,多数情况下会建议一个补丁程序来修复语句。如果实施此建 议,则应用的 SQL 补丁程序将让查询优化程序选择将来执行的备用执行计划,以此来避 免故障。这可以在不更改 SQL 语句的情况下完成。 注:如果 SQL 修复指导未找到解决方法,您仍然可以打包意外事件文件并将相应的诊断 数据发送到 Oracle 技术支持。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-48 版权所有 ©2007,Oracle。保留所有权利。12-48 使用 EM 访问 SQL 修复指导 使用 EM 访问 SQL 修复指导 从 Enterprise Manager 访问 SQL 修复指导的方法主要有两种。 第一种方法,也是最简单的方法,就是当您在数据库主页的“Diagnostic Summary(诊断 概要)”部分中得到预警时可以访问 SQL 修复指导。SQL 语句崩溃时会在 ADR 中生成 意外事件,之后系统将自动通过“Active Incidents(活动意外事件)”字段向您发出预 警。可单击相应的链接进入“Support Workbench Problems(支持工作台问题)”页,在 该页中可以单击相应的问题 ID 链接。此时将转到“Problem Details(问题详细资料)” 页, 可在该页中单击“Investigate and Resolve(研究并解决)”部分中的“SQL Repair Advisor (SQL 修复指导)”链接。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-49 版权所有 ©2007,Oracle。保留所有权利。12-49 使用 EM 访问 SQL 修复指导 使用 EM 访问 SQL 修复指导(续) 如果 SQL 语句崩溃意外事件不再处于活动状态,则始终可以转到“Advisor Central(指导 中心)”页,在该页中可单击“SQL Advisors(SQL 指导)”链接,然后在“SQL Advisors(SQL 指导)”页的“SQL Advisors(SQL 指导)”部分中选择“Click here to go to Support Workbench(单击此处转至支持工作台)”链接。这样,您可直接访问 “Problem Details(问题详细资料)”页,并在此页的“Investigate and Resolve(调查并解 决)”部分中单击“SQL Repair Advisor(SQL 修复指导)”链接。 注:要在出现非意外事件 SQL 故障的情况下访问 SQL 修复指导,可以转到“SQL Details (SQL 详细资料)”页或转到“SQL Worksheet(SQL 工作表)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-50 版权所有 ©2007,Oracle。保留所有权利。12-50 从 EM 使用 SQL 修复指导 从 EM 使用 SQL 修复指导 在“SQL Repair Advisor: SQL Incident Analysis(SQL 修复指导:SQL 意外事件分析)” 页上,指定“Task Name(任务名称)”、“Task Description(任务说明)”和 “Schedule(调度)”。完成后,单击“Submit(提交)”以安排 SQL 诊断分析任务。 如果指定立即执行,则会出现“Processing: SQL Repair Advisor Task(正在处理:SQL 修 复指导任务)”页,其中显示了执行任务的各个步骤。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-51 版权所有 ©2007,Oracle。保留所有权利。12-51 从 EM 使用 SQL 修复指导 从 EM 使用 SQL 修复指导(续) 执行 SQL 修复指导任务后,您会转到该任务的“SQL Repair Results(SQL 修复结果)” 页。在此页上,可以查看相应的“Recommendations(建议案)”部分,尤其在生成了用 于解决问题的 SQL 补丁程序时。如幻灯片中所示,可以选择要对其应用生成的 SQL 补丁 程序的语句并单击“View(查看)”。此时将转到“SQL ID 修复建议案”页,在此页 中,可在选择相应的“Findings(查找结果)”后单击“Implement(实施)”,要求系统 实施 SQL 修补。您随后会得到一条确认实施的消息,并可再次执行 SQL 语句。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-52 版权所有 ©2007,Oracle。保留所有权利。12-52 从 PL/SQL 使用 SQL 修复指导:示例 declare rep_out clob; t_id varchar2(50); begin t_id := dbms_sqldiag.create_diagnosis_task( sql_text => 'delete from t t1 where t1.a = ''a'' and rowid <> (select max(rowid) from t t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d)', task_name => 'sqldiag_bug_5869490', problem_type => DBMS_SQLDIAG.PROBLEM_TYPE_COMPILATION_ERROR); dbms_sqltune.set_tuning_task_parameter(t_id,'_SQLDIAG_FINDING_MODE', dbms_sqldiag.SQLDIAG_FINDINGS_FILTER_PLANS); dbms_sqldiag.execute_diagnosis_task (t_id); rep_out := dbms_sqldiag.report_diagnosis_task (t_id, DBMS_SQLDIAG.TYPE_TEXT); dbms_output.put_line ('Report : ' || rep_out); end; / execute dbms_sqldiag.accept_sql_patch(task_name => 'sqldiag_bug_5869490', task_owner => 'SCOTT', replace => TRUE); 从 PL/SQL 使用 SQL 修复指导:示例 也可以直接从 PL/SQL 调用 SQL 修复指导。 在得到有关意外事件 SQL 故障的预警后,可以使用幻灯片中所示的 DBMS_SQLDIAG.CREATE_DIGNOSIS_TASK 函数执行 SQL 修复指导任务。需要指定要 对其进行分析的 SQL 语句以及要分析的任务名称和问题类型(可能的值为 PROBLEM_TYPE_COMPILATION_ERROR 和 PROBLEM_TYPE_EXECUTION_ERROR)。 然后,可以使用 DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER 过程提供所创建的 任务参数。 准备就绪后,可以使用 DBMS_SQLDIAG.EXECUTE_DIAGNOSIS_TASK 过程执行任务。 最后,可以使用 DBMS_SQLDIAG.REPORT_DIAGNOSIS_TASK 函数获得任务报告。 在此幻灯片提供的示例中,假定报告要求实施 SQL 修补以解决问题。然后,可以使用 DBMS_SQLDIAG.ACCEPT_SQL_PATCH 过程实施 SQL 修补。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-53 版权所有 ©2007,Oracle。保留所有权利。12-53 查看、禁用或删除 SQL 补丁程序 查看、禁用或删除 SQL 补丁程序 使用 SQL 修复指导应用 SQL 补丁程序后,您可能希望进行查看以确认其是否存在,然后 禁用或删除它。如果安装了更高版本的 Oracle DB,以解决在未经过修补的 SQL 语句中导 致故障的问题,则可以删除补丁程序。 要查看、禁用/启用或删除 SQL 补丁程序,请访问 Enterprise Manager 中的“Server (服务器)”页,并在此页的“Query Optimizer(查询优化程序)”部分中单击“SQL Plan Control(SQL 计划控制)”链接。此时将转到“SQL Plan Control(SQL 计划控 制)”页。在此页上,单击“SQL Patch(SQL 补丁程序)”选项卡。 在出现的“SQL Patch(SQL 补丁程序)”子页中,通过检查相关联的 SQL 语句找到所需 的补丁程序。选择补丁程序并执行相应的任务:禁用、启用或删除。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-54 版权所有 ©2007,Oracle。保留所有权利。12-54 使用 SQL Test Case Builder 使用 SQL Test Case Builder 使用 SQL Test Case Builder,可以自动执行费力又耗时的信息收集过程,以收集尽可能多 的关于 SQL 相关问题及问题发生环境的信息,这样 Oracle 技术支持就能够再现问题并对 其进行测试。SQL Test Case Builder 收集的信息包括正在执行的查询、表和索引定义 (并非实际数据)、PL/SQL 函数、过程和程序包、优化程序统计信息和初始化参数设 置。 要从“Support Workbench(支持工作台)”页访问 SQL Test Case Builder,请执行以下 操作: 1. 单击相应的问题 ID 打开问题详细资料页。 2. 单击“Oracle Support(Oracle 技术支持)”选项卡。 3. 单击“Generate Additional Dumps and Test Cases(生成附加转储和测试案例)”。 4. 在“Additional Dumps and Test Cases(附加转储和测试案例)”页上,单击“Go To Task(转到任务)”列中的图标以针对特定意外事件 ID 运行 SQL Test Case Builder。 SQL Test Case Builder 的输出是一个 SQL 脚本,其中包含重新创建所有必要对象和环境所 需的命令。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-55 使用 SQL Test Case Builder(续) 注:也可以使用 DBMS_SQLDIAG.EXPORT_SQL_TESTCASE_DIR_BY_INC 函数调用 SQL Test Case Builder。此函数会获取意外事件 ID 以及目录对象。它为指定目录中的相应 意外事件生成输出。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-56 版权所有 ©2007,Oracle。保留所有权利。12-56 数据恢复指导 • Oracle DB 提供了可以修复问题的强大工具。 – 丢失的文件、损坏的块等 • 分析基本问题和选择正确的解决方案所需的时间通常是停机时 间的最大组成部分。 • 指导会根据故障现象对故障进行分析。 – 例如,“打开失败”是由于数据文件缺失 • 它会明智地确定修复策略。 – 聚集故障以进行高效修复 — 例如,如果存在许多损坏的块,则还原整个文件 – 只显示可行的修复选项 — 是否有备份? — 是否有备用数据库? – 按修复时间和数据丢失排列 • 指导可自动执行修复。 智能的解决方法:数据恢复指导 数据恢复指导:Enterprise Manager 与数据库健康状况检查和 RMAN 集成在一起来显示数 据损坏问题、评估问题程度(严重、高优先级或低优先级)、描述问题的影响、建议修复 选项、对客户选择的选项进行可行性检查以及自动执行修复过程。 注:有关数据恢复指导的详细信息,请参阅本课程中的相应课节。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-57 版权所有 ©2007,Oracle。保留所有权利。12-57 小结 在本课中,您应该已经学会: • 设置自动诊断资料档案库 • 使用支持工作台 • 运行健康状况检查 • 使用 SQL 修复指导 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 12-58 版权所有 ©2007,Oracle。保留所有权利。12-58 练习 12:概览 本练习包含以下主题: • 使用健康状况监视器和支持工作台 • 使用 SQL 修复指导 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 使用数据恢复指导 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-2 版权所有 ©2007,Oracle。保留所有权利。13-2 课程目标 学完本课后,应能完成以下工作: • 描述用于修复数据故障的选项 • 使用新的 RMAN 数据修复命令可执行以下操作: – 列出故障 – 接收修复建议 – 修复故障 • 执行预防性故障检查 • 查询数据恢复指导视图 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-3 版权所有 ©2007,Oracle。保留所有权利。13-3 修复数据故障 • Data Guard 提供到备用数据库的故障转移功能,以使 操作不受停机时间的影响。 • 数据恢复指导是 Oracle Database 11g 的新增功能, 它基于故障现象分析故障并确定修复策略: – 将多个故障聚集在一起以进行有效的修复 – 提供一个建议的修复选项 – 按照要求执行修复 • 闪回技术保护行的生命周期并帮助修复逻辑问题。 修复数据故障 “数据故障”是指缺失、损坏或不一致的数据、日志、控件或其它文件,Oracle 实例无法 访问其内容。数据库出现问题时,分析基本原因并选择正确的解决方案通常占用了大部分 的停机时间。Oracle Database 11g 提供了几个新工具和增强的工具,用于分析和修复数据 库问题。 • Data Guard 允许您故障转移至备用数据库(有自己的数据副本),使您可以在主数据 库发生数据故障时继续进行操作。这样,在故障转移至备用数据库后,便可以修复出 现故障的数据库(旧的主数据库),而无需担心它会对应用程序造成影响。Data Guard 有许多改进。 • 数据恢复指导是一种内置的工具,可自动诊断数据故障并报告相应的修复选项。例 如,如果数据恢复指导发现存在许多损坏的块,它会建议还原整个文件,而不是分别 修复这些块。因此,它有助于您执行正确的故障修复。可以手动修复数据故障,也可 以请求数据恢复指导为您执行修复,从而缩短故障恢复的时间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-4 修复数据故障(续) 可以使用闪回技术修复逻辑问题。 • 闪回归档可在指定的时间段内维护表数据的持续更改,从而使您可以访问归档数据。 • 闪回事务处理使您通过一次单击即可回退事务处理和所有冲突的事务处理。有关详细 信息,请参阅“使用闪回和 LogMiner”一课。 您已了解到以下信息: • RMAN 自动执行数据文件介质恢复(避免逻辑故障和物理故障的一种常见恢复形 式)和块介质恢复(恢复单个块而不是整个数据文件)。有关详细信息,请参阅“使 用 RMAN 增强功能”一课。 • 自动存储管理 (ASM) 可防止出现存储故障。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-5 版权所有 ©2007,Oracle。保留所有权利。13-5 数据恢复指导 • 快速检测、分析和修复故障 • 将对用户的干扰降低到最小 • 修复停机时故障和运行时故障 • 提供的用户界面: – EM GUI 界面 – (多个路径) – RMAN 命令行 • 支持的数据库配置: – 单一实例 – 非 RAC – 支持故障转移至备用数据库,但不支持分析和修复备用 数据库 数据恢复指导的功能 数据恢复指导在遇到错误时会自动收集数据故障信息。此外,它还能预先检查故障。在此 模式中,它可以在数据库进程发现损坏并发送错误消息之前检测和分析数据故障(请注 意,修复始终在人为控制之下进行)。 数据故障可能非常严重。例如,如果缺少最新的日志文件,则无法启动数据库。一些数据 故障(如数据文件中的块损坏)不是灾难性故障,因为它们不会使数据库停机,也不会阻 止您启动 Oracle 实例。数据恢复指导可处理以下两种情况:一种情况是您无法启动数据 库(因为缺少一些必需的数据库文件,或者这些数据库文件不一致或已损坏),另一种情 况是运行时发现文件损坏。 解决严重数据故障的首选方法是首先将故障转移至备用数据库(前提是在 Data Guard 配 置下),这样用户就可以尽快恢复联机。然后,需要修复数据故障的主要原因,但幸运的 是,此操作不会影响用户。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-6 用户界面 可从 Enterprise Manager (EM) Database Control 和 Grid Control 中使用数据恢复指导。存在故 障时,有几种方法可以访问数据恢复指导。下列示例都从“Database Instance(数据库实 例)”主页开始: • “Availability(可用性)”选项卡页 > Perform Recover(执行恢复)> Advise and Recover(建议和恢复) • “Active Incidents(活动意外事件)”链接 >“Support Workbench(支持工作台)”的 “Problems(问题)”页:“Checker Findings(检查器查找结果)”选项卡页 > Launch Recovery Advisor(启动恢复指导) • Database Instance Health(数据库实例健康状况)> 单击特定的链接,例如,“Incidents (意外事件)”部分中的 ORA 1578 >“Support Workbench(支持工作台)”的 “Problems Detail(问题详细资料)”页 > Data Recovery Advisor(数据恢复指导) • Database Instance Health(数据库实例健康状况)>“Related Links(相关链接)”部 分:Support Workbench(支持工作台)>“Checker Findings(检查器查找结果)”选项 卡页:“Launch Recovery Advisor(启动恢复指导)” • 相关链接:Advisor Central(指导中心)>“Advisors(指导)”选项卡页:“Data Recovery Advisor(数据恢复指导)” • 相关链接:Advisor Central(指导中心)>“Checkers(检查器)”选项卡页:Details (详细资料)>“Run Detail(运行详细资料)”选项卡页:“Launch Recovery Advisor (启动恢复指导)” 也可以通过 RMAN 命令行使用它。例如: rman target / nocatalog rman> list failure all; 支持的数据库配置 在当前版本中,数据恢复指导支持单一实例数据库,不支持 Oracle Real Application Clusters (RAC) 数据库。 数据恢复指导无法使用从备用数据库转移出来的块或文件修复主数据库上的故障。同时, 您也无法使用数据恢复指导诊断并修复备用数据库上的故障。然而,作为一个修复选项数 据恢复指导确实支持将故障转移到备用数据库(如上所述)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-7 版权所有 ©2007,Oracle。保留所有权利。13-7 数据恢复指导 通过理清混乱缩短停机时间: 1. 评估数据故障。 2. 按严重性列出故障。 4. 选择和执行修复。 3. 提供修复建议。 5. 执行预防性检查。 数据 恢复 指导 健康状况监视器 DBA 数据恢复指导 Oracle Database 11g 中的自动诊断工作流可为您执行工作流步骤。使用数据恢复指导,您 只需启动建议和修复。 1. 健康状况监视器会自动执行检查,并将故障及其故障现象作为“查找结果”记录到自 动诊断资料档案库 (ADR) 中。有关健康状况监视器的详细信息,请参阅 eStudy 中的 Diagnosability 部分内容 。 2. 数据恢复指导将查找结果与故障合并在一起。它列出了先前执行的评估结果,其中包 含故障严重程度(严重或高)。 3. 如果您要求系统提供有关故障的修复建议,数据恢复指导会将故障映射到自动和手动 修复选项,检查基本可行性,并为您提供修复建议。 4. 可以选择手动执行修复或者请求数据恢复指导为您执行此操作。 5. 除了健康状况监视器和数据恢复指导自动执行的主要“被动”检查之外,Oracle 还建 议使用 VALIDATE 命令进行“预防性”检查。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-8 版权所有 ©2007,Oracle。保留所有权利。13-8 评估数据故障 数据库实例健康状况 . . . 1 2 3 错误链接 问题详细资料 评估数据故障 此幻灯片显示了不同的访问路径,可以使用这些访问路径在健康状况监视器和数据恢复指 导之间进行导航。它还显示了健康状况监视器和数据恢复指导的交互操作。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-9 版权所有 ©2007,Oracle。保留所有权利。13-9 数据故障 数据故障 可通过检查来检测数据故障,检查是评估数据库或其组件健康状况的诊断过程。每个检查 都可以诊断一个或多个故障,这些故障将映射到修复。 检查可以是被动检查,也可以是预防性检查。数据库中出现错误时,将自动执行“被动检 查”。也可以进行“预防性检查”,例如,通过执行 VALIDATE DATABASE 命令。 在 Enterprise Manager 中,如果发现数据库处于“停机”或“已装载”状态,请选择 “Availability(可用性)> Perform Recovery(执行恢复)”,或单击“Perform Recovery (执行恢复)”按钮。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-10 版权所有 ©2007,Oracle。保留所有权利。13-10 数据故障:示例 • 组件不可访问,例如: – 缺失操作系统级别的数据文件 – 访问权限不正确 – 表空间脱机等 • 物理损坏,如块校验和故障或块头字段值无效 • 逻辑损坏,如字典不一致、行片段损坏、索引条目损坏 或事务处理损坏 • 不一致,如控制文件比数据文件和联机重做日志旧或新 • I/O 故障,如超过打开的文件数限制、通道不可访问、网 络或 I/O 错误 数据故障:示例 数据恢复指导可以分析故障并建议问题修复选项,如幻灯片中所述。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-11 版权所有 ©2007,Oracle。保留所有权利。13-11 列出数据故障 列出数据故障 在“Perform Recovery(执行恢复)”页上,单击“Advise and Repair(建议和修复)”。 “View and Manage Failures(查看和管理故障)”页是数据恢复指导的主页。屏幕快照中 的示例显示了数据恢复指导列出数据故障及详细资料的方式。您可以启动的活动包括建 议、设置优先级和关闭故障。 基本 RMAN LIST FAILURE 命令也可以显示数据故障及详细资料。这里没有启动故障评 估;以前在 ADR 中执行并存储过它们。 故障按优先级的降序顺序列出:“CRITICAL(严重)”、“HIGH(高)”和“LOW (低)”。具有相同优先级的故障按时间戳的升序顺序列出。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-12 版权所有 ©2007,Oracle。保留所有权利。13-12 修复建议 1 2a 2b (1) 手动修复后 (2) 自动修复 修复建议 在“View and Manage Failures(查看和管理故障)”页上,单击“Advise(建议)”按钮 后,数据恢复指导将生成一个手动核对清单。可能显示两种类型的故障: • 需要人工干预的故障。如磁盘缆线未插入时出现的连接故障。 • 如果撤消前面的错误操作便会得以快速修复的故障。例如,如果错误地重命名了某个 数据文件,将数据文件重命名回原来的名称比从备份启动 RMAN 还原要快。 可以执行以下操作: • 执行手动修复后,单击“Re-assess Failures(重新评估故障)”。已解决的故障会隐式 关闭;其它剩余故障将显示在“View and Manage Failures(查看和管理故障)”页 中。 • 单击“Continue with Advise(继续执行建议)”以启动自动修复。数据恢复指导在生 成自动修复选项时会生成一个脚本,用于显示 RMAN 计划如何修复故障。要执行自动 修复,请单击“Continue(继续)”。如果不希望数据恢复指导自动修复故障,可从该 脚本开始执行手动修复。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-13 版权所有 ©2007,Oracle。保留所有权利。13-13 执行修复 一秒内 . . . 执行修复 在上面的示例中,数据恢复指导执行了一次成功的修复。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-14 版权所有 ©2007,Oracle。保留所有权利。13-14 数据恢复指导 RMAN 命令行界面 更改或关闭一个或多个故障CHANGE FAILURE 显示建议的修复选项ADVISE FAILURE 修复和关闭故障 (在同一 RMAN 会话中的 ADVISE 命令后) REPAIR FAILURE LIST FAILURE RMAN 命令 列出先前执行的故障评估 操作 数据恢复指导:RMAN 命令行界面 如果您怀疑或已知道数据库出现故障,则可使用 LIST FAILURE 命令获得关于这些故障 的信息。可以列出所有故障或部分故障并以多种方式限制输出。故障由故障号进行唯一标 识。请注意,这些故障号不是连续的,因此它们之间的间隔没有任何意义。 ADVISE FAILURE 命令将显示为指定故障建议的修复选项。它可打印输入故障概要并隐 式关闭已修复的所有打开的故障。没有使用任何选项时,默认行为是对记录在 ADR 中优 先级为 CRITICAL 和 HIGH 的所有故障提供建议。 在同一 RMAN 会话中 REPAIR FAILURE 命令在 ADVISE FAILURE 命令后使用。默认 情况下,该命令使用当前会话中上次执行 ADVISE FAILURE 命令时建议的一个修复选 项。如果没有任何修复选项,REPAIR FAILURE 命令将启动隐式 ADVISE FAILURE 命 令。修复完成后,该命令会关闭故障。 CHANGE FAILURE 命令将更改故障优先级或关闭一个或多个故障。仅可以更改 HIGH 或 LOW 故障优先级。修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-15 版权所有 ©2007,Oracle。保留所有权利。13-15 列出数据故障 RMAN LIST FAILURE 命令可列出先前执行的故障评估。 • 包括新诊断的故障 • 删除关闭的故障(默认情况下) 语法: LIST FAILURE [ ALL | CRITICAL | HIGH | LOW | CLOSED | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum[,failnum,…] ] [ DETAIL ] 列出数据故障 RMAN LIST FAILURE 命令可列出故障。如果目标实例使用恢复目录,它可以处于 STARTED 模式下,否则必须处于 MOUNTED 模式下。LIST FAILURE 命令不启动诊断新故障 检查;它将列出先前执行的评估结果。重复执行 LIST FAILURE 命令将重新验证所有现有的 故障。如果数据库诊断出新的故障(在命令执行之间),则会显示这些新故障。如果用户手 动修复故障或临时故障消失,则数据恢复指导会将这些故障从 LIST FAILURE 输出中删除。 以下是语法说明: • failnum:为其显示修复选项的故障数。 • ALL:列出所有优先级的故障。 • CRITICAL:列出优先级为 CRITICAL 且处于 OPEN 状态的故障。这些故障使整个数据 库不可用(如控制文件缺失),因此需要立即引起注意。 • HIGH:列出优先级为 HIGH 且处于 OPEN 状态的故障。这些故障使数据库部分不可用或 不可恢复,因此应尽快修复(如归档重做日志缺失)。 • LOW:列出优先级为 LOW 且处于 OPEN 状态的故障。低优先级的故障可以等到修复了更 重要的故障后再进行修复。 • CLOSED:仅列出关闭的故障。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-16 列出数据故障(续) • EXCLUDE FAILURE:从列表中排除指定的故障号。 • DETAIL:通过展开合并的故障列出故障。例如,如果一个文件中有多个块损坏,则 DETAIL 选项将列出每个块损坏。 有关命令语法的详细信息,请参阅《Oracle 数据库备份和恢复参考》。 列出数据故障示例 [oracle1@stbbv06 orcl]$ rman Recovery Manager: Release 11.1.0.6.0 - Production on Thu Jun 21 13:33:52 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN> connect target sys/oracle@orcl connected to target database: ORCL (DBID=1153427045) RMAN> RMAN> LIST FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing RMAN> LIST FAILURE DETAIL; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable RMAN> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-17 版权所有 ©2007,Oracle。保留所有权利。13-17 修复建议 RMAN ADVISE FAILURE 命令有以下用途: • 显示输入故障列表概要 • 包括警告(如果 ADR 中出现新故障) • 显示手动核对清单 • 列出一个建议的修复选项 • 生成修复脚本(用于自动或手动修复) . . . Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979 128860.hm RMAN> 修复建议 RMAN ADVISE FAILURE 命令可显示指定故障的建议修复选项。如果从 Enterprise Manager 中执行此命令,则 Data Guard 将显示一个修复选项(但是,如果直接从 RMAN 命令行执行此命令,则 Data Guard 不会显示修复选项)。ADVISE FAILURE 命令可打印 输入故障概要。该命令会隐式关闭已修复的所有打开的故障。 没有使用任何选项时,默认行为是对记录在自动诊断资料档案库 (ADR) 中优先级为 CRITICAL 和 HIGH 的所有故障提供建议。如果自上次执行 LIST FAILURE 命令后 ADR 中记录了新故障,则在对所有 CRITICAL 和 HIGH 故障提供建议前,该命令将包含 一个 WARNING。 执行两个常规修复选项:无数据丢失修复和数据丢失修复。 数据恢复指导在生成自动修复选项时会生成一个脚本,用于显示 RMAN 计划如何修复故 障。如果不希望数据恢复指导自动修复故障,可从该脚本开始执行手动修复。该脚本的操 作系统 (OS) 位置将显示在命令输出的末尾。可以检查此脚本,并对其进行自定义(如果 需要),还可以手动执行该脚本(例如在审计线索要求建议执行手动操作时)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-18 修复建议(续) 语法 ADVISE FAILURE [ ALL | CRITICAL | HIGH | LOW | failnum[,failnum,…] ] [ EXCLUDE FAILURE failnum [,failnum,…] ] 命令行示例 RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 142 HIGH OPEN 21-JUN-07 One or more non-system datafiles are missing List of child failures for parent failure ID 142 Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 306 HIGH OPEN 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Impact: Some objects in tablespace EXAMPLE might be unavailable 300 HIGH OPEN 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Impact: Some objects in tablespace USERS might be unavailable analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=152 device type=DISK analyzing automatic repair options complete Mandatory Manual Actions ======================== no manual actions available Optional Manual Actions ======================= 1. If file /u01/app/oracle/oradata/orcl/users01.dbf was unintentionally renamed or moved, restore it 2. If file /u01/app/oracle/oradata/orcl/example01.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description ------ ------------------ 1 Restore and recover datafile 4; Restore and recover datafile 5 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3909424189.hm RMAN> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-19 版权所有 ©2007,Oracle。保留所有权利。13-19 执行修复 RMAN REPAIR FAILURE 命令有以下用途: • 遵循 ADVISE FAILURE 命令 • 修复指定的故障 • 关闭已修复的故障 语法: 示例: REPAIR FAILURE [PREVIEW] [NOPROMPT] RMAN> repair failure; 执行修复 此命令应在同一 RMAN 会话中的 ADVISE FAILURE 命令后使用。默认情况下(没有选 项),该命令使用当前会话中上次执行 ADVISE FAILURE 时建议的一个修复选项。如果 没有任何修复选项,REPAIR FAILURE 命令将启动隐式 ADVISE FAILURE 命令。 默认情况下,您需要确认是否执行该命令,因为可能需要花费时间完成大量更改。在执行 修复期间,该命令的输出将表明正在执行的修复阶段。 修复完成后,该命令会关闭故障。 无法运行多个并发修复会话。但是,允许并发 REPAIR … PREVIEW 会话。 • PREVIEW 表示:不执行修复,而是显示先前生成的包含所有修复操作和注释的 RMAN 脚本。 • NOPROMPT 表示:不要求确认。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-20 修复故障示例 RMAN> REPAIR FAILURE PREVIEW; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; RMAN> REPAIR FAILURE; Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2101176755.hm contents of repair script: # restore and recover datafile restore datafile 4; recover datafile 4; Do you really want to execute the above repair (enter YES or NO)? YES executing repair script Starting restore at 21-JUN-07 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_nnnd f_TAG20070621T043615_37m7gpfp_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_ mf_nnndf_TAG20070621T043615_37m7gpfp_.bkp tag=TAG20070621T043615 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 21-JUN-07 Starting recover at 21-JUN-07 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 20 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 0_37m7lhgx_.arc archived log for thread 1 with sequence 21 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 1_37m7llgp_.arc archived log for thread 1 with sequence 22 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 2_37m7logv_.arc archived log for thread 1 with sequence 23 is already on disk as file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1_mf_1_2 3_37n046y3_.arc 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-21 修复故障示例(续) channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=16 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=17 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=18 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=19 channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o1_mf_an nnn_TAG20070621T043805_37m7l46t_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_06_21/o 1_mf_annnn_TAG20070621T043805_37m7l46t_.bkp tag=TAG20070621T043805 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc thread=1 sequence=16 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_16_37n7ptq0_.arc RECID=20 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc thread=1 sequence=17 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_17_37n7ptrv_.arc RECID=22 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc thread=1 sequence=18 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_18_37n7ptqo_.arc RECID=21 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc thread=1 sequence=19 channel default: deleting archived log(s) archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_19_37n7ptsh_.arc RECID=23 STAMP=625844810 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_20_37m7lhgx_.arc thread=1 sequence=20 archived log file name=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_06_21/o1 _mf_1_21_37m7llgp_.arc thread=1 sequence=21 media recovery complete, elapsed time: 00:00:01 Finished recover at 21-JUN-07 repair failure complete Do you want to open the database (enter YES or NO)? YES database opened RMAN> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-22 版权所有 ©2007,Oracle。保留所有权利。13-22 分类(和关闭)故障 RMAN CHANGE FAILURE 命令有以下用途: • 更改故障优先级(除 CRITICAL 外) • 关闭一个或多个故障 示例: RMAN> change failure 5 priority low; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary ---------- -------- --------- ------------- ------- 5 HIGH OPEN 20-DEC-06 one or more datafiles are missing Do you really want to change the above failures (enter YES or NO)? yes changed 1 failures to LOW priority 分类(和关闭)故障 CHANGE FAILURE 命令用于更改故障优先级或关闭一个或多个故障。 语法 CHANGE FAILURE { ALL | CRITICAL | HIGH | LOW | failnum[,failnum,…] } [ EXCLUDE FAILURE failnum[,failnum,…] ] { PRIORITY {CRITICAL | HIGH | LOW} | CLOSE } - 将故障的状态更改为已关闭 [ NOPROMPT ] - 不要求用户进行确认 只能将故障优先级从 HIGH 更改为 LOW 和从 LOW 更改为 HIGH。更改 CRITICAL 优先级 会出现错误。(将故障的优先级从 HIGH 更改为 LOW 的一个原因是为了避免该故障显示 在 LIST FAILURE 命令的默认输出列表中。例如,如果块损坏具有 HIGH 优先级,则该 块位于很少使用的表空间中时,您可能希望将其临时更改为 LOW。) 修复故障后,将隐式关闭打开的故障。但是,也可以显式关闭故障。这需要重新评估其它 所有打开的故障,因为其中的某些故障会因故障关闭而变得不相关。 默认情况下,该命令要求用户确认请求的更改。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-23 版权所有 ©2007,Oracle。保留所有权利。13-23 数据恢复指导视图 查询动态数据字典视图: • V$IR_FAILURE:所有故障的列表,包括已关闭的故障 (LIST FAILURE 命令的结果) • V$IR_MANUAL_CHECKLIST:手动建议的列表 (ADVISE FAILURE 命令的结果) • V$IR_REPAIR:修复列表(ADVISE FAILURE 命令的 结果) • V$IR_FAILURE_SET:故障和建议标识符 的交叉引用 数据恢复指导视图 用法示例:假设需要显示 2007 年 6 月 21 日检测到的所有故障。 SELECT * FROM v$ir_failure WHERE trunc (time_detected) = '21-JUN-2007'; (根据页面调整输出格式) FAILURE_ID PARENT_ID CHILD_COUNT CLASS_NAME TIME_DETE MODIFIED DESCRIPTION IMPACTS PRIORITY STATUS 142 0 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 One or more non-system datafiles are missing See impact for individual child failures HIGH CLOSED 145 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 4: '/u01/app/oracle/oradata/orcl/users01.dbf' is missing Some objects in tablespace USERS might be unavailable HIGH CLOSED 151 142 0 PERSISTENT_DATA 21-JUN-07 21-JUN-07 Datafile 5: '/u01/app/oracle/oradata/orcl/example01.dbf' is missing Some objects in tablespace EXAMPLE might be unavailable HIGH CLOSED 有关数据恢复指导使用的动态数据字典视图的详细信息,请参阅《Oracle 数据库参考》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-24 版权所有 ©2007,Oracle。保留所有权利。13-24 最佳实践:预防性检查 调用对数据库及其组件的预防性健康状况检查: • 健康状况监视器或 RMAN VALIDATE DATABASE 命令 • 检查逻辑和物理损坏 • 在 ADR 中记录查找结果 最佳实践:预防性检查 对于非常重要的数据库,可能需要执行其它预防性检查(可以在每天的低峰时段执行)。 可通过健康状况监视器或使用 RMAN VALIDATE 命令安排定期的健康状况检查。通常, 如果被动检查在数据库组件中检测到故障,则可能需要对受影响的组件执行更全面的检 查。 RMAN VALIDATE DATABASE 命令用于调用对数据库及其组件的健康状况检查。它扩展 了现有的 VALIDATE BACKUPSET 命令。在验证期间检测到的所有问题都会显示出来,这 些问题进而会启动故障评估。如果检测到故障,则该故障会作为查找结果记录到 ADR 中。可以使用 LIST FAILURE 命令查看资料档案库中记录的所有故障。 VALIDATE 命令支持对单个备份集和数据块进行验证。在物理损坏中,数据库根本无法识 别块。在逻辑损坏中,块的内容在逻辑上不一致。默认情况下,VALIDATE 命令只检查物 理损坏。也可以指定 CHECK LOGICAL 检查逻辑损坏。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-25 最佳实践:预防性检查(续) 块损坏可分为块间损坏和块内损坏。在块内损坏中,块本身发生损坏,可以是物理损坏也 可以是逻辑损坏。在块间损坏中,块与块之间发生的损坏只能是逻辑损坏。VALIDATE 命 令只检查块内损坏。 示例 RMAN> validate database; Starting validate at 21-DEC-06 using channel ORA_DISK_1 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_1: validation complete, elapsed time: 00:00:15 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 1 OK 0 13168 85760 981642 File Name: /u01/app/oracle/oradata/orcl/system01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 60619 Index 0 9558 Other 0 2415 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 2 OK 0 22892 66720 981662 File Name: /u01/app/oracle/oradata/orcl/sysaux01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 10529 Index 0 9465 Other 0 23834 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-26 最佳实践:预防性检查(续) 示例(续) File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 3 OK 0 104 7680 981662 File Name: /u01/app/oracle/oradata/orcl/undotbs01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 0 Index 0 0 Other 0 7576 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 4 OK 0 24 640 963835 File Name: /u01/app/oracle/oradata/orcl/users01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 43 Index 0 63 Other 0 510 File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 5 OK 0 1732 12800 745885 File Name: /u01/app/oracle/oradata/orcl/example01.dbf Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 4416 Index 0 1303 Other 0 5349 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation including current control file for validation including current SPFILE in backup set channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 List of Control File and SPFILE =============================== File Type Status Blocks Failing Blocks Examined ------------ ------ -------------- --------------- SPFILE OK 0 2 Control File OK 0 594 Finished validate at 21-DEC-06 RMAN> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-27 版权所有 ©2007,Oracle。保留所有权利。13-27 设置检测损坏的参数 . . . . . . EM > Server(服务器)> Initialization Parameters(初始化参数) 新增 防止内存和数据损坏 检测 I/O 存储、磁盘损坏 检测物理备用数据库上的非持久写入 为检测损坏指定默认值 . . . 设置检测损坏的参数 可以使用 DB_ULTRA_SAFE 参数来简化管理。它会影响下列参数的默认值: • DB_BLOCK_CHECKING,用于启动对数据库块的检查。此检查通常可防止内存和数 据损坏。(默认值:FALSE,建议值:FULL) • DB_BLOCK_CHECKSUM,将每个数据块写入到磁盘时,在其高速缓存标头中启动校 验和的计算和存储。校验和有助于检测由基础磁盘、存储系统或 I/O 系统引起的损 坏。(默认值:TYPICAL,建议值:TYPICAL) • DB_LOST_WRITE_PROTECT,用于启动对“丢失的写入”的检查。如果 I/O 子系统 指示块写入已完成,但该块尚未完全写入到持久存储中,则物理备用数据库上会发生 数据块写入丢失。当然,写入操作在主数据库中已完成。(默认值:TYPICAL,建 议值:TYPICAL) 如果显式设置了其中任何一个参数,则您设置的值将是有效的。DB_ULTRA_SAFE 参数 (Oracle Database 11g 中的新增参数)仅更改这些参数的默认值。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-28 版权所有 ©2007,Oracle。保留所有权利。13-28 设置检测损坏的参数 DB_LOST_WRITE_PROTECT DB_BLOCK_CHECKSUM DB_BLOCK_CHECKING DB_ULTRA_SAFE FULL 或 TRUEMEDIUMOFF 或 FALSE TYPICAL TYPICAL TYPICAL FULL DATA_ONLY FULLTYPICAL DATA_AND_INDEXOFF 设置检测损坏的参数(续) 根据系统对块损坏的容忍度,可以加强对块损坏的检查。由于会执行大量检查,所以启用 DB_ULTRA_SAFE 参数(默认值:OFF)会导致系统开销增加。开销量与每秒更改的块数 相关,所以无法进行简单量化。对于“高更新的”应用程序,CPU 使用率会显著增加,大 约在 10%到20% 之间,不过可能更高。通过分配额外的 CPU 可减轻此开销。 • 将 DB_ULTRA_SAFE 参数设置为 DATA_ONLY,然后将 DB_BLOCK_CHECKING 参数 设置为 MEDIUM。这会检查块中的数据在逻辑上是否一致。内存中的块内容发生更改 后(例如,在执行 UPDATE 或 INSERT 命令、磁盘上读取或在 Oracle RAC 中实例间 传送块后),将执行基本的块标头检查。此级别的检查包括对非索引表块进行的语义 块检查。 • 将 DB_ULTRA_SAFE 参数设置为 DATA_AND_INDEX,然后将 DB_BLOCK_CHECKING 参数设置为 FULL。除了上面的检查外,还会对索引块执行语义检查(即遇到损坏时, 可实际删除和重新构造从属对象的块)。 • 将 DB_ULTRA_SAFE 参数设置为 DATA_ONLY 或 DATA_AND_INDEX,然后将 DB_BLOCK_CHECKSUM 参数设置为 FULL 并将 DB_LOST_WRITE_PROTECT 参数设置 为 TYPICAL。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-29 版权所有 ©2007,Oracle。保留所有权利。13-29 小结 在本课中,您应该已经学会: • 描述用于修复数据故障的选项 • 使用新的 RMAN 数据修复命令可执行以下操作: – 列出故障 – 接收修复建议 – 修复故障 • 执行预防性故障检查 • 查询数据恢复指导视图 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 13-30 版权所有 ©2007,Oracle。保留所有权利。13-30 练习 13:修复故障概览 本练习包含以下主题: • 使用 Enterprise Manager 修复出故障的数据库 • 使用 Enterprise Manager 修复块损坏 • 使用 RMAN 命令行修复出故障的数据库 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 安全性:新增功能 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-2 版权所有 ©2007,Oracle。保留所有权利。14-2 课程目标 学完本课后,应能完成以下工作: • 配置口令文件以使用区分大小写的口令 • 对表空间进行加密 • 配置对网络服务的细粒度访问 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-3 版权所有 ©2007,Oracle。保留所有权利。14-3 安全口令支持 Oracle Database 11g 中的口令: • 区分大小写 • 包含更多的字符 • 使用更安全的散列算法 • 在散列算法中使用 salt 用户名仍是 Oracle 标识符(最多 30 个字符,不区分大小写)。 安全口令支持 为了遵守各种安全性和隐私规定,您必须使用更安全的口令。如果口令非常短或仅包含有 限的字符,则对于强力攻击就很脆弱,而包含较多不同字符的较长口令就很难被猜出或获 得。在 Oracle Database 11g 中,口令的处理方式与早期版本中的处理方式有所不同: • 口令区分大小写。口令中使用的大写字符和小写字符现在是不同的字符。 • 口令可以包含未用引号括起来的多字节字符。如果口令包含除 $、_ 或 # 外的任何特 殊字符,则必须用引号括起来。 • 口令始终通过散列算法传递,然后作为用户身份证明进行存储。用户提供口令时,系 统会对其进行散列运算,然后将其与存储的身份证明进行比较。在 Oracle Database 11g 中,散列算法是早期版本数据库中使用的公共算法 SHA-1。SHA-1 是一种使用 160 位密钥的较强算法。 • 口令始终使用 salt。如果输入内容相同,散列函数将始终生成相同的输出。Salt 是添 加到输入中的唯一(随机)值,用于确保输出身份证明是唯一的。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-4 版权所有 ©2007,Oracle。保留所有权利。14-4 自动安全配置 • 默认口令概要文件 • 默认审计 • 内置口令复杂性检查 自动安全配置 Oracle Database 11g 使用由 Internet 安全中心 (CIS) 基准推荐的特定安全功能安装和创建 数据库。与 10gR2 的默认安装相比,CIS 推荐的配置更安全,而且开放程度足以使大多数 应用程序都能成功运行。许多客户已采用了此基准。CIS 基准的一些建议可能与一些应用 程序不兼容。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-5 版权所有 ©2007,Oracle。保留所有权利。14-5 口令配置 默认情况下: • 启用默认口令概要文件 • 如果连续 10 次登录失败,则锁定该帐户 在升级过程中: • 口令不区分大小写(除非进行更改) • 使用 ALTER USER 命令时口令区分大小写 创建时: • 口令区分大小写 安全默认配置 使用 Database Configuration Assistant (DBCA) 创建自定义数据库时,可以指定 Oracle Database 11g 的默认安全配置。默认情况下,如果用户使用不正确的口令多次尝试连接 Oracle 实例,则在第三次尝试后该实例将延迟每次登录。这种保护措施适用于从不同的 IP 地址或多个客户机进行的连接尝试。稍后,它将逐渐增加用户可以尝试其它口令的时间间 隔,最长时间大约为十秒。 创建数据库时,将启用具有如下设置的默认口令概要文件: PASSWORD_LIFE_TIME 180 PASSWORD_GRACE_TIME 7 PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LOCK_TIME 1 PASSWORD_VERIFY_FUNCTION NULL Oracle Database 10g 数据库升级后,只有使用 ALTER USER… 命令更改口令后,口令才会 区分大小写。 创建数据库时,默认情况下口令区分大小写。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-6 版权所有 ©2007,Oracle。保留所有权利。14-6 启用内置口令复杂性检查器 执行 utlpwdmg.sql 脚本创建口令验证功能: 更改默认概要文件: ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function_11g; SQL> CONNECT / as SYSDBA SQL> @?/rdbms/admin/utlpwdmg.sql 启用内置口令复杂性检查器 verify_function_11g 是一个 PL/SQL 功能示例,可以轻松进行修改以在您的站点中 强制实行口令复杂性策略。此功能不需要在口令中嵌入特殊字符。 verify_function_11g 和较早的 verify_function 都包含在 utlpwdmg.sql 文件中。 要启用口令复杂性检查,请创建一个归 SYS 所有的验证功能。可使用提供的一个功能或 对其中的一个进行修改来满足您的要求。此示例显示了如何使用 utlpwdmg.sql 脚本。 如果概要文件中命名的口令复杂性检查功能中存在错误或此功能不存在,则不能更改口 令,也不能创建用户。解决方法是在概要文件中将 PASSWORD_VERIFY_FUNCTION 设置 为 NULL,直到问题得到解决。 verify_function_11g 功能将检查口令是否至少包含八个字符、是否至少包含一个数 字和一个字母字符,以及是否至少有三个字符与以前口令不同。该函数还确认此口令不是 以下项:用户名或附加了 1 到 100 之间任何数字的用户名、反向的用户名、服务器名或附 加了 1 到 100 之间数字的服务器名,或者一组众所周知的常用口令,如“welcome1”、 “database1”、“oracle123”或“oracle(附加了 1 到 100 之间的数字)”等。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-7 版权所有 ©2007,Oracle。保留所有权利。14-7 管理默认审计 检查审计日志:默认的审计选项涵盖了重要的安全权限。 归档审计记录: • 导出 • 复制到其它表 删除归档审计记录。 管理默认审计 检查审计日志。默认情况下,在 Oracle Database 11g 中将为对安全性非常重要的特定权限 启用审计。审计线索默认记录在数据库 AUD$ 表中,AUDIT_TRAIL 参数设置为 DB。对 于大多数站点而言,这些审计不会对数据库性能造成太大影响。Oracle 建议使用操作系统 审计线索文件。 归档审计记录。要保留审计记录,请使用 Oracle 数据泵导出实用程序将其导出,或者使 用 SELECT 语句将一组审计记录捕获到单独的表中。 删除归档审计记录。在检查并归档审计记录后,会从 SYS.AUD$ 表中将其删除。审计记 录将占用 SYSTEM 表空间中的空间。如果 SYSTEM 表空间无法增长,则无法为审计记录 提供更多空间,此时会针对每条审计语句生成错误。由于 CREATE SESSION 是已审计的 权限之一,所以不能创建新的会话(除非用户以 SYSDBA 身份连接)。可使用 QUERY 选 项指定带有日期范围或 SCN 范围的 WHERE 子句,通过导出实用程序归档审计表。然后, 使用相同的 WHERE 子句从审计表中删除这些记录。 当 AUDIT_TRAIL=OS 时,会在由 AUDIT_FILE_DEST 指定的目录中为每条审计记录创 建单独的文件。可以复制特定时间之前的所有文件,然后删除它们。 注:SYSTEM 表空间是使用 autoextend on 选项创建的。因此 SYSTEM 表空间可以根 据需要增长,直到用尽磁盘上的可用空间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-8 管理默认审计(续) 系统会按照访问针对成功和失败的操作审核所有用户的以下权限: CREATE EXTERNAL JOB CREATE ANY JOB GRANT ANY OBJECT PRIVILEGE EXEMPT ACCESS POLICY CREATE ANY LIBRARY GRANT ANY PRIVILEGE DROP PROFILE ALTER PROFILE DROP ANY PROCEDURE ALTER ANY PROCEDURE CREATE ANY PROCEDURE ALTER DATABASE GRANT ANY ROLE CREATE PUBLIC DATABASE LINK DROP ANY TABLE ALTER ANY TABLE CREATE ANY TABLE DROP USER ALTER USER CREATE USER CREATE SESSION AUDIT SYSTEM ALTER SYSTEM SYSTEM AUDIT ROLE 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-9 版权所有 ©2007,Oracle。保留所有权利。14-9 调整安全性设置 调整安全性设置 使用 DBCA 工具创建数据库时,可以选择以下安全性设置: • 保留 11g 的默认增强安全设置(建议)。这些设置包括启用审计和新的默认口令概要 文件。 • 还原到 11g 之前的默认安全设置。要禁用特定类别的增强设置以实现兼容性,请选择 以下设置: - 将审计设置还原为 11g 之前的默认设置 - 将口令概要文件设置还原为 11g 之前的默认设置 也可以使用 DBCA 在创建数据库后更改这些设置。在 11g 的默认安全设置下,有些应用 程序可能无法正常运行。 应始终设置安全的软件权限。它不受用户选择的“Security Settings(安全设置)”选项所 影响。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-10 版权所有 ©2007,Oracle。保留所有权利。14-10 设置安全性参数 • 使用区分大小写的口令: SEC_CASE_SENSITIVE_LOGON • 防止 DoS 攻击: SEC_PROTOCOL_ERROR_FURTHER_ACTION SEC_PROTOCOL_ERROR_TRACE_ACTION • 防止强力攻击: SEC_MAX_FAILED_LOGIN_ATTEMPTS 设置安全性参数 Oracle Database 11g 增加了一组新参数以加强数据库的默认安全性。这些参数是系统范围 的静态参数。 使用区分大小写的口令以加强安全性 新参数 SEC_CASE_SENSITIVE_LOGON 使您可以设置区分大小写的用户口令。Oracle 建 议保留默认设置 TRUE。将此参数设置为 FALSE 可指定不区分大小写的口令以实现向后 兼容性。 ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 注:禁用区分大小写会使口令在强力攻击面前变得更脆弱。 防止拒绝服务 (DoS) 攻击 本幻灯片中列出的两个参数指定了当数据库从客户机处收到损坏的数据包时要执行的操 作。假设损坏的数据包来自可能的恶意客户机。 SEC_PROTOCOL_ERROR_FURTHER_ACTION 参数指定了要对客户机连接执行的操作: 继续、断开连接或延迟接受请求。另一参数 SEC_PROTOCOL_ERROR_TRACE_ACTION 指定了监视操作:NONE、TRACE、LOG 或 ALERT。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-11 设置安全性参数(续) 防止强力攻击 新的初始化参数 SEC_MAX_FAILED_LOGIN_ATTEMPTS 的默认设置为 10,表示在连接 尝试达到指定次数后会自动断开连接。即使未启用口令概要文件,也会强制实施此参数。 此参数可以防止程序连接到数据库,然后成百上千次地尝试口令以通过验证。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-12 版权所有 ©2007,Oracle。保留所有权利。14-12 设置数据库管理员验证 使用带有区分大小写的口令的口令文件。 对管理员角色启用严格的验证: • 在 OID 中授予管理员角色。 • 使用 Kerberos 票证。 • 使用 SSL 证书。 设置数据库管理员验证 数据库管理员必须经过验证。在 Oracle Database 11g 中,可以使用新的方法来更安全地执 行管理员验证并集中管理这些已授权的用户。此外,区分大小写的口令还应用于已授权用 户的远程连接上。可使用下列命令覆盖此默认行为: orapwd file=orapworcl entries=5 ignorecase=Y 如果担心口令文件易受破坏或难以维护许多口令文件,则可以实施严格验证: • 在 Oracle Internet Directory (OID) 中授予 SYSDBA 或 SYSOPER 企业角色。 • 使用 Kerberos 票证 • 使用 SSL 证书 要使用严格验证方法,必须将所有 LDAP_DIRECTORY_SYSAUTH 初始化参数设置为 YES。将此参数设置为 NO 可禁用严格验证方法。通过 OID 或 Kerberos 进行的验证还能提 供集中管理或单一登录功能。 如果配置了口令文件,则可先对其进行检查。用户也可以作为 OSDBA 或 OSOPER 组的成 员由本地操作系统进行验证。 有关详细信息,请参阅《Oracle Database Advanced Security Administrator’s Guide 11g Release 1》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-13 版权所有 ©2007,Oracle。保留所有权利。14-13 透明数据加密 TDE 中的新增功能包括: • 表空间加密 • 支持 LogMiner • 支持逻辑备用 • 支持流 • 支持异步更改数据捕获 • 基于硬件的主密钥保护 透明数据加密 一些新增功能可增强透明数据加密 (TDE) 功能,这些功能是基于相同的基础结构构建 的。 为支持 TDE 而对 LogMiner 所做的更改提供了用于更改捕获引擎的基础结构,这些引擎可 用于逻辑备用、流和异步更改数据捕获。要让 LogMiner 支持 TDE,它必须能够访问加密 Wallet。要访问该 Wallet,必须装载实例并使 Wallet 处于开启状态。LogMiner 不支持硬 件安全模块 (HSM) 或用户持有密钥。 对于逻辑备用,可在源或目标数据库挖掘日志,因此用于这两个数据库的 Wallet 必须 相同。 加密列的处理方式在流和基于流的更改数据捕获中均相同。将在 Wallet 所在的源中挖掘 重做记录。数据以未加密的方式传输到目标位置,然后在目标位置使用 Wallet 进行加 密。该数据可以使用高级安全选项在传输中进行加密以实现网络加密。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-14 版权所有 ©2007,Oracle。保留所有权利。14-14 使用表空间加密 创建加密的表空间。 1. 创建或打开加密 Wallet: 2. 使用加密关键字创建表空间: SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1"; SQL> CREATE TABLESPACE encrypt_ts 2> DATAFILE '$ORACLE_HOME/dbs/encrypt.dat' SIZE 100M 3> ENCRYPTION USING '3DES168' 4> DEFAULT STORAGE (ENCRYPT); 表空间加密 表空间加密以在写入时进行加密并在读取时进行解密的块级别加密技术为基础,并不在内 存中对数据进行加密。影响加密的唯一因素与 I/O 相关联。SQL 访问路径不变,并且支持 所有数据类型。要使用表空间加密,加密 Wallet 必须处于开启状态。 CREATE TABLESPACE 命令包含一个用于设置加密属性的 ENCRYPTION 子句,以及一个 导致使用加密的 ENCRYPT 存储参数。您可以指定 USING 'encrypt_algorithm' 来 指示要使用的算法名称。有效的算法包括 3DES168、AES128、AES192 和 AES256。默认 算法为 AES128。可以在 V$ENCRYPTED_TABLESPACES 视图中查看这些属性。 加密的数据在执行操作(如 JOIN 和 SORT)期间会受到保护。这意味着数据在移动到临 时表空间时是安全的。还原日志和重做日志中的数据也受到保护。 如果平台有相同的 Endianess 和 Wallet,则加密的表空间是可移动的。 限制 • 无法对临时表空间和还原表空间进行加密(所选的块已加密)。 •Bfiles 和外部表未加密。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-15 表空间加密(续) • 不支持跨不同的 endian 平台移动表空间。 • 当前无法更改加密表空间的密钥。解决方法是:使用所需的属性创建一个表空间,然 后将所有对象移动到新建的表空间中。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-16 版权所有 ©2007,Oracle。保留所有权利。14-16 硬件安全模块 对硬件安全模块执行 加密操作和解密操作。 硬件 安全 模块 数据库服务器客户机 加密数据 硬件安全模块 硬件安全模块 (HSM) 是一种物理设备,可以安全地存储加密密钥。它还可以提供安全的计 算空间(内存)以执行加密和解密操作。HSM 是 Oracle wallet 的一种更安全的代替方法。 透明数据加密 (TDE) 可使用 HSM 来加强敏感数据的安全性。HSM 用于存储 TDE 使用的 主加密密钥。因为 HSM 是一种物理设备而不是一个操作系统文件,所以在未授权的访问 尝试中密钥是安全的。使用主加密密钥的所有加密和解密操作都在 HSM 中执行。这意味 着主加密密钥永远不会在不安全的内存中公开。 有些供应商可提供硬件安全模块,这些供应商还必须提供相应的库。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-17 版权所有 ©2007,Oracle。保留所有权利。14-17 LOB 列的加密 • LOB 加密只能用于 SECUREFILE LOB。 • LOB 列中的所有 LOB 都已加密。 • 可以按列或按分区对 LOB 进行加密。 – SECUREFILE LOB 和 BASICFILE LOB 可以共存 CREATE TABLE test1 (doc CLOB ENCRYPT USING 'AES128') LOB(doc) STORE AS SECUREFILE (CACHE NOLOGGING ); LOB 列的加密 Oracle Database 11g 引入了一个经过完全重新设计的大对象 (LOB) 数据类型,此类型显著 提高了应用程序开发的效率和可管理性,并简化了应用程序的开发过程。LOB 的这种 Secure Files 实施提供了下一代的高级功能,如智能压缩和透明加密。Secure Files 中的加 密数据会就地存储并可以随机进行读取和写入。 必须使用 SECUREFILE 参数创建 LOB,并对 LOB 列启用加密 (ENCRYPT) 或禁用加密 (DECRYPT,默认值)。可使用当前的 TDE 语法将加密扩展到 LOB 数据类型。 系统仍支持早期版本中的 LOB 实施以实现向后兼容性,但现在将其称为 Basic Files。如 果将 LOB 列添加到一个表中,则可以指定将其创建为 SECUREFILES 还是 BASICFILES。为了确保向后兼容性,默认的 LOB 类型为 BASICFILES。 有效算法包括 3DES168、AES128、AES192 和 AES256。默认算法为 AES192。 注:有关 Secure Files 的详细讨论,请参阅“Oracle SecureFiles”一课。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-18 版权所有 ©2007,Oracle。保留所有权利。14-18 Enterprise Manager 安全管理 通过 EM 管理安全性。 • 对于以下项取代了 Policy Manager: – 虚拟专用数据库 – 应用程序上下文 – Oracle Label Security • 添加了“Enterprise User Security (企业用户安全性)”页 • 添加了 TDE 页 Enterprise Manager 安全管理 安全管理功能已集成到 Enterprise Manager 中。 该功能取代了基于 Policy Manager Java 控制台的工具。以前通过 Oracle Policy Manager 工 具管理的 Oracle Label Security、应用程序上下文和虚拟专用数据库现在通过 Enterprise Manager 即可进行管理,但 Oracle Policy Manager 工具仍然可用。 Enterprise Manager Security 工具已由 Enterprise Manager 功能取代。现在 Enterprise User Security 也可通过 Enterprise Manager 进行管理。ldap.ora 文件配置完成后,会立即显 示 Enterprise Manager 的菜单项。有关配置的详细信息,请参阅《Enterprise User Administrator’s Guide》。Enterprise Manager Security 工具仍然可用。 TDE 现在可通过 Enterprise Manager 进行管理,包括 Wallet 管理。可以从 Enterprise Manager 页中创建、打开和关闭 Wallet。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-19 版权所有 ©2007,Oracle。保留所有权利。14-19 使用 RMAN 安全性增强功能 • 配置备份粉碎功能: • 使用备份粉碎功能: RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON; RMAN> DELETE FORCE; 使用 RMAN 安全性增强功能 备份粉碎是一项重要的管理功能,它使 DBA 可以删除透明加密备份的加密密钥,而无需 以物理方式访问备份介质。如果加密密钥被破坏,则加密备份将是无法访问的,这不适用 于受口令保护的备份。 可使用以下命令配置透明加密备份: CONFIGURE ENCRYPTION FOR DATABASE ON; 或 SET ENCRYPTION ON; 默认设置为 OFF,不启用备份粉碎功能。要粉碎备份,无需使用新命令,只需使用: DELETE FORCE; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-20 版权所有 ©2007,Oracle。保留所有权利。14-20 管理对外部网络服务的细粒度访问 1. 创建 ACL 及其权限: BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'us-oracle-com-permissions.xml', description => 'Permissions for oracle network', principal => 'SCOTT', is_grant => TRUE, privilege => 'connect'); END; 管理对外部网络服务的细粒度访问 通过 PL/SQL 程序包的网络实用程序系列(如 UTL_TCP、UTL_INADDR、UTL_HTTP、 UTL_SMTP 和 UTL_MAIL),Oracle 用户可以使用原始 TCP 或基于原始 TCP 创建的更高 级别协议从数据库进行网络调出。无论用户是否具有对这些程序包的 EXECUTE 权限,都 无法控制所访问的网络主机。新的程序包 DBMS_NETWORK_ACL_ADMIN 支持使用 XML DB 实施的访问控制列表 (ACL) 进行细粒度控制。 1. 创建访问控制列表 (ACL)。ACL 是在 XML 文件中保存的用户和权限的列表。以 acl 参数命名的 XML 文档与 XML DB 中的 /sys/acl/ 文件夹相关。在本幻灯片显示的 示例中,SCOTT 被授予 connect 权限。ACL 中的用户名区分大小写,而且必须与 会话的用户名相匹配。只有 resolve 和 connect 权限,connect 权限包含 resolve 权限。可选参数可以指定这些权限的开始和结束时间戳。要将更多用户和 权限添加到此 ACL 中,请使用 ADD_PRIVILEGE 过程。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-21 版权所有 ©2007,Oracle。保留所有权利。14-21 管理对外部网络服务的细粒度访问 2. 将 ACL 分配给一台或多台网络主机: BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( acl => 'us-oracle-com-permissions.xml', host => '*.us.oracle.com', lower_port => 80, upper_port => null); END 管理对外部网络服务的细粒度访问(续) 2. 将 ACL 分配给一台或多台网络主机。ASSIGN_ACL 过程将 ACL 与一台网络主机和 一个端口或端口范围(可选)相关联。在该示例中,主机参数允许使用主机名通配符 将 ACL 分配给域中的所有主机。使用通配符会影响 ACL 评估的优先级顺序。端口的 相应完全限定主机名在端口的相应主机前进行评估。完全限定的主机名在部分域名前 进行评估,子域在顶级域之前进行评估。 创建 ACL 后,可以将多台主机分配到同一 ACL 中,还可以将多个用户按任意顺序添加到 同一 ACL 中。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-22 版权所有 ©2007,Oracle。保留所有权利。14-22 小结 在本课中,您应该已经学会: • 配置口令文件以使用区分大小写的口令 • 对表空间进行加密 • 配置对网络服务的细粒度访问 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-23 版权所有 ©2007,Oracle。保留所有权利。14-23 练习 14:概览 本练习包含以下主题: • 改成使用区分大小写的口令 • 实现口令复杂性功能 • 对表空间进行加密 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 14-24 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 Oracle SecureFiles 加强的数据安全管理 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-2 15-2 版权所有 ©2007,Oracle。保留所有权利。 课程目标 学完本课后,应能完成以下工作: • 描述 SecureFiles 如何提高大对象 (LOB) 数据类型的性能 • 使用 SQL 和 PL/SQL API 访问 SecureFiles 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-3 15-3 版权所有 ©2007,Oracle。保留所有权利。 管理企业信息 组织需要有效且安全地管理许多类型的数据: • 结构化:简单数据,对象关系数据 • 半结构化:XML 文档,文字处理文档 • 非结构化:介质、医学数据、映像 结构化 半结构化 非结构化 PDF 管理企业信息 如今,应用程序必须处理多种类型的数据,这些数据主要分为结构化、半结构化和非结构 化数据。使用大对象 (LOB) 的功能,可以将所有这些类型的数据存储在数据库中以及可 从该数据库进行访问的操作系统 (OS) 文件中。在关系数据库中保存对象关系数据时,文 件系统所具有的简单性和性能使其非常适合于存储文件数据。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-4 15-4 版权所有 ©2007,Oracle。保留所有权利。 现有 LOB 实施中的问题 • LOB 大小限制 • 主要考虑“单写多读”数据 • 提供低并发性的 DML • 用户定义的版本控制 • 统一 CHUNK 大小: – 影响碎片 – 大小上限 • Oracle Real Application Clusters (RAC) 的可扩展性 问题 现有 LOB 实施中的问题 在 Oracle8i 中,LOB 设计是基于下列假设做出的: •LOB 实例化的大小预计为几个兆字节。 •LOB 通常被视为“单写多读”类型的数据。很少进行更新,所以可以为所有类型的更 新(大型或小型)对整个块进行版本化。 • 预计很少有批处理会流式处理数据。预计不会出现联机事务处理 (OLTP) 类型的工作 量。 • 保留的还原量由用户使用 PCTVERSION 和 RETENTION 参数进行控制。这是额外的管 理工作。 • 在假设 LOB 大小通常是统一的前提下,CHUNK 大小是一个静态参数。CHUNK 大小的 上限是 32 KB。 • 预计 Oracle RAC 中不会出现高并发性的写入。 自首次实施后,业务要求已发生了显著变化。现在 LOB 的使用方式与关系数据的相似,用 于存储各种大小的半结构化和非结构化数据。数据大小可以从几千字节(用于 HTML 链 接)到几兆兆字节(用于流视频)不等。在 LOB 中存储所有文件系统数据的 Oracle 文件系 统会遇到类似 OLTP 的高并发性访问。随着 Oracle RAC 日益广泛的应用,必须解决 Oracle RAC 的可扩展性问题。LOB 空间结构的现有设计不能满足这些新要求。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-5 15-5 版权所有 ©2007,Oracle。保留所有权利。 Oracle SecureFiles Oracle SecureFiles 重新设计了非结构化(文件)数据的 处理方法,提供了以下全新的设计: • 磁盘格式 – 可变块大小 • 网络协议 – 改进的输入/输出 • 版本化和共享机制 • 重做和还原算法 – 无用户配置 • 空间和内存增强功能 Oracle SecureFiles Oracle Database 11g 将 LOB 数据类型作为 Oracle SecureFiles 进行了完全重新设计,显著 改进了应用程序开发的性能、可管理性和易用性。新实施也提供了下一代高级功能,如智 能压缩和透明加密。 使用 SecureFiles 时,块大小介于 Oracle 数据块大小到 64 MB 之间。Oracle DB 尝试使数 据集中在磁盘的相邻物理位置,从而将内部碎片降到最低。通过使用可变的块大小, SecureFiles 避免对不必要的大型 LOB 数据块进行版本化。 SecureFiles 还提供了新的客户机/服务器网络层,从而允许在支持更高读写性能的服务器 和客户机之间进行高速数据传输。SecureFiles 自动确定生成重做和还原的最有效方法,因 而不需要用户定义参数。SecureFiles 自动确定是仅为更改生成重做和还原,还是通过生成 完整的重做记录创建新版本。 由于 SecureFiles 需要维护各种内存中统计信息以帮助有效地分配内存和空间,所以将其 设计为可自适应的智能工具。这样,由于减少了很难使用不可预测的负荷进行优化的可优 化参数数量,可管理性有所提高。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-6 15-6 版权所有 ©2007,Oracle。保留所有权利。 启用 SecureFiles 存储 可通过下列方法启用 SecureFiles 存储: • 使用 DB_SECUREFILE 初始化参数,此参数可采用下列 值: – ALWAYS | FORCE | PERMITTED | NEVER | IGNORE • 使用 Enterprise Manager: • 使用 ALTER SESSION | SYSTEM 命令:SQL> ALTER SYSTEM SET db_securefile = 'ALWAYS'; 启用 SecureFiles 存储 使用 DB_SECUREFILE 初始化参数,数据库管理员 (DBA) 可确定 SecureFiles 的使用情 况,其中有效值为: • ALWAYS:尝试将所有 LOB 创建为 SecureFile LOB,但是仅可将自动段空间管理 (ASSM) 表空间外的任何 LOB 创建为 BasicFile LOB • FORCE:强制将所有 LOB 创建为 SecureFile LOB • PERMITTED:允许创建 SecureFiles(默认值) • NEVER:禁止创建 SecureFiles • IGNORE:禁止创建 SecureFiles,并忽略使用 SecureFiles 选项强制创建 BasicFiles 而 导致的任何错误 如果指定了 NEVER,则任何指定为 SecureFiles 的 LOB 均被创建为 BasicFiles。如果对 BasicFiles 使用任何 SecureFiles 特定的存储选项和功能(如压缩、加密和取消重复),则 会导致异常错误。将对任何未指定的存储选项使用 BasicFiles 默认值。如果指定了 ALWAYS,则系统中创建的所有 LOB 均会被创建为 SecureFiles。必须在 ASSM 表空间中 创建 LOB,否则会发生错误。将忽略所有指定的 BasicFiles 存储选项。可以使用 ALTER SYSTEM 命令更改所有存储的 SecureFiles 默认值,如幻灯片中所示。 也可以通过单击“Server(服务器)”选项卡中的“Initialization Parameters(初始化参 数)”链接来使用 Enterprise Manager 设置参数。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-7 15-7 版权所有 ©2007,Oracle。保留所有权利。 SecureFiles:高级功能 • Oracle SecureFiles 提供了下列高级功能: – 智能 LOB 压缩 – 取消重复 – 透明加密 • 这些功能利用了数据库的安全性、可靠性和可扩展性。 SecureFiles:高级功能 Oracle SecureFiles 实施也提供了下一代高级功能,如智能压缩和透明加密。压缩功能支持 显式压缩 SecureFiles。SecureFiles 仅为随机读取或写入访问透明解压缩所需的数据块集, 从而自动维护未压缩和已压缩的偏移量之间的映射。如果将压缩级别从 MEDIUM 更改为 HIGH,则映射会自动进行更新以反映新的压缩算法。取消重复可自动检测重复的 SecureFile LOB 数据,并通过仅存储一个副本来节省空间 - 减少磁盘存储空间、I/O 和重 做事件记录。可在表级别或分区级别指定取消重复,但不能跨越分区的 LOB。取消重复 需要使用高级压缩选项。 现在可以在适当位置存储加密的 LOB 数据,并对其进行随机读取和写入,因而提高了数 据的安全性。只能按列加密 SecureFile LOB (与透明数据加密相同)。将使用相同的加密 算法对 LOB 列中的所有分区进行加密。无法对 BasicFiles 数据进行加密。SecureFiles 支 持行业标准加密算法:3DES168、AES128、AES192(默认)和 AES256。加密是高级安 全选项的一部分。 注:必须将 COMPATIBLE 初始化参数设置为 11.0.0.0.0 或更高,才能使用 SecureFiles。在 11.1.0.0.0 兼容性下 BasicFiles(以前的 LOB)格式仍然受支持。设置 11.0.0.0.0 后不会出 现功能降低。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-8 15-8 版权所有 ©2007,Oracle。保留所有权利。 SecureFiles:存储选项 • MAXSIZE:指定最大 LOB 段大小 • RETENTION:指定要使用的保留策略 – MAX:达到 MAXSIZE 之前保留旧版本。 – MIN:至少将旧版本保留 MIN 秒。 – AUTO:默认值 – NONE:尽可能重用旧版本。 • 下列存储子句不适用于 SecureFiles: – CHUNK、PCTVERSION、FREEPOOLS、FREELISTS 和 FREELIST GROUPS SecureFiles:存储选项 MAXSIZE 是新的存储子句,用于控制 SecureFiles 的物理存储属性。MAXSIZE 指定与存 储子句级别相关的最大段大小。 RETENTION 指定 SecureFiles 的以下项: • MAX 在达到段 MAXSIZE 后重新使用旧版本。 • MIN 在指定的最短时间内保留旧版本。 • AUTO 是默认设置,主要对空间和时间进行折中使之达到平衡。这是自动确定的。 • NONE 尽可能重用旧版本。 使用 ALTER TABLE 语句更改 RETENTION 仅影响该语句执行后创建的空间。 对于 SecureFiles,不再需要指定 CHUNK、PCTVERSION、FREEPOOLS、FREELISTS 和 FREELIST GROUPS。为了与现有脚本相兼容,将对这些子句进行分析但不解释它们。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-9 15-9 版权所有 ©2007,Oracle。保留所有权利。 创建 SecureFiles CREATE TABLE func_spec( id number, doc CLOB ENCRYPT USING 'AES128' ) LOB(doc) STORE AS SECUREFILE (DEDUPLICATE LOB CACHE NOLOGGING); CREATE TABLE test_spec ( id number, doc CLOB) LOB(doc) STORE AS SECUREFILE (COMPRESS HIGH KEEP_DUPLICATES CACHE NOLOGGING); CREATE TABLE design_spec (id number, doc CLOB) LOB(doc) STORE AS SECUREFILE (ENCRYPT); CREATE TABLE design_spec (id number, doc CLOB ENCRYPT) LOB(doc) STORE AS SECUREFILE; 创建 SecureFiles 可使用 CREATE TABLE 语句中的存储关键字 SECUREFILE 创建带有 LOB 列的 SecureFiles。早期数据库版本中的 LOB 实施现在被称为 BasicFiles。将 LOB 列添加到表 时,可以指定是将其创建为 SecureFiles 还是 BasicFiles。如果没有指定存储类型,LOB 将 创建为 BasicFiles 以确保向后兼容性。 在幻灯片的第一个示例中,创建了一个名为 FUNC_SPEC 的表,用于将文档存储为 SecureFiles。在该示例中您指定不希望存储 LOB 的重复内容、读取时将高速缓存 LOB, 并且对 LOB 执行更新时不生成还原。此外,您还指定将使用 AES128 加密算法对存储在 doc 列中的文档进行加密。与 DEDUPLICATE 相反,KEEP_DUPLICATES 可用在 ALTER 语句中。 第二个示例中,您要创建一个名为 TEST_SPEC 的表,用于将文档存储为 SecureFiles。对 于此表,您指定可以存储重复内容、LOB 将以压缩格式存储,并且将高速缓存 LOB 而不 进行记录。HIGH 压缩设置需要进行更多的工作,但可提供更有效的数据压缩。默认压缩 是 MEDIUM。压缩算法在服务器端实施,允许对 LOB 数据进行随机读取和写入,可以通 过 ALTER 语句对其进行更改。 上面的第三和第四个示例会产生相同结果:使用默认的 AES192 加密创建具有 SecureFiles LOB 列的表。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-10 15-10 版权所有 ©2007,Oracle。保留所有权利。 使用 Enterprise Manager 创建 SecureFiles 使用 Enterprise Manager 创建 SecureFiles 可以使用 Enterprise Manager 通过“Schema(方案)”选项卡中的“Tables(表)”链接 创建 SecureFiles。单击“Create(创建)”按钮后,可以针对要存储为 SecureFile 的列单 击“Advanced Attributes(高级属性)”按钮输入任一 SecureFiles 选项。 考虑到向后兼容性,仍然支持早期版本中的 LOB 实施,现在将其称为 BasicFiles。如果将 LOB 列添加到表中,则可以指定是将其创建为 SecureFile 还是 BasicFile。如果没有指定存 储类型,LOB 将创建为 BasicFiles 以确保向后兼容性。 可以为高速缓存选项选择下列值: • CACHE:为了提高访问速度,Oracle 将 LOB 页置于缓冲区高速缓存中。 • NOCACHE:作为 STORE AS 子句中的参数,NOCACHE 指定不将 LOB 值置于缓冲区 高速缓存中。 • CACHE READS:仅在读取操作期间(而非写入操作期间),才将 LOB 值置于缓冲区 高速缓存中。 NOCACHE 是 SecureFile 和 BasicFile LOB 的默认值。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-11 15-11 版权所有 ©2007,Oracle。保留所有权利。 共享 I/O 池 LOB 高速缓存 缓冲区 高速缓存 共享 I/O 池 直接 I/O 块大小缓冲区 共享 I/O 池缓冲区 内存分配 共享 I/O 池 为了支持共享内存(与程序全局区 (PGA) 相对)的大型 I/O,Oracle Database 11g 中新增 了共享 I/O 池内存组件,用于进行直接路径访问。这种情况仅适用于将 SecureFiles 创建为 NOCACHE 时(默认)。共享 I/O 池默认大小为零,仅当存在 SecureFiles NOCACHE 工作量 时,系统才会将其大小增加到高速缓存的 4%。由于这是共享资源,因此可由大型并发 SecureFiles 工作量使用。与其它池(如大型池或共享池)不同,用户进程不会生成 ORA-04031 错误,但在释放更多共享 I/O 池缓冲区之前会临时退回到 PGA。 LOB 高速缓存是 SecureFiles 体系结构中的新组件,通过收集和批处理数据以及重叠网络 和磁盘 I/O 改进了 LOB 访问性能。LOB 高速缓存从缓冲区高速缓存(常规缓冲区或共享 I/O 池的内存)借用内存。由于从缓冲区高速缓存借用的内存实质上适合于执行数据库 I/O,并且适合在 I/O 完成后回退到该缓冲区高速缓存,因此可以避免不必要的内存复 制。 在多实例 Oracle Real Application Clusters 中,LOB 高速缓存为每个已访问的 LOB 保留一 个锁定。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-12 15-12 版权所有 ©2007,Oracle。保留所有权利。 更改 SecureFiles ALTER TABLE t1 MODIFY LOB(a) ( KEEP_DUPLICATES ); ALTER TABLE t1 MODIFY LOB(a) ( DEDUPLICATE LOB ); ALTER TABLE t1 MODIFY PARTITION p1 LOB(a) ( DEDUPLICATE LOB ); ALTER TABLE t1 MODIFY LOB(a) ( NOCOMPRESS ); ALTER TABLE t1 MODIFY LOB(a) (COMPRESS HIGH); ALTER TABLE t1 MODIFY PARTITION p1 LOB(a) ( COMPRESS HIGH ); ALTER TABLE t1 MODIFY ( a CLOB ENCRYPT USING '3DES168'); ALTER TABLE t1 MODIFY PARTITION p1 ( LOB(a) ( ENCRYPT ); ALTER TABLE t1 MODIFY ( a CLOB ENCRYPT IDENTIFIED BY ghYtp); 禁用取消重 复。 启用取消重 复。 启用分区取消重 复。 禁用压缩。 启用压缩。 对单一分区中的 SecureFiles 启用压缩。 使用 3DES168 启用加密。 对分区启用加 密。 使用口令启用加密 并构建加密密钥。 更改 SecureFiles 使用 DEDUPLICATE 选项,可以指定在 LOB 列的两行或多行中相同的 LOB 数据共享同 一数据块。KEEP_DUPLICATES 与此相反。Oracle 使用安全的散列索引检测重复,并且 将具有相同内容的 LOB 合并到一个副本中,从而降低存储空间并简化存储管理。LOB 关 键字是可选的,它可以使语法变得更清楚。 COMPRESS 或 NOCOMPRESS 关键字分别启用或禁用 LOB 压缩。新的压缩设置会更改 LOB 段中的所有 LOB。 ENCRYPT 或 DECRYPT 关键字可使用透明数据加密 (TDE) 打开或关闭 LOB 加密。新设置 会更改 LOB 段中的所有 LOB。可将 LOB 段更改为仅启用或仅禁用 LOB 加密。也就是 说,ALTER 不能用于更新加密算法或加密密钥。可使用 ALTER TABLE REKEY 语法更新 加密算法或加密密钥。结合使用其它选项,在块级别执行加密可以提高性能(可能为最小 的加密量)。 注:有关 ALTER TABLE 语句可用选项的完整说明,请参阅《Oracle 数据库 SQL 参 考》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-13 15-13 版权所有 ©2007,Oracle。保留所有权利。 访问 SecureFiles 元数据 数据层接口与 BasicFiles 的接口相同。 SecureFilesDBMS_LOB – GETOPTIONS() – SETOPTIONS DBMS_SPACE.SPACE_USAGE 访问 SecureFiles 元数据 DBMS_LOB 程序包:LOB 继承取消重复、加密和压缩的 LOB 列设置,也可使用 LOB 定 位器 API 在每个 LOB 级别上进行配置。但是不能使用 LONG API 配置这些 LOB 设置。必 须为这些功能使用以下 DBMS_LOB 程序包附加函数: • DBMS_LOB.GETOPTIONS:可使用此函数获得设置。返回与基于选项类型的预定义 常量相对应的整数。 • DBMS_LOB.SETOPTIONS:此过程设置功能并允许按 LOB 设置这些功能,从而覆盖 默认的 LOB 设置。这需要往返服务器以使更改变成永久更改。 DBMS_SPACE.SPACE_USAGE:使现有 SPACE_USAGE 过程超载,以返回有关 LOB 空间 使用情况的信息。它返回 LOB 段中所有 LOB 使用的块中的磁盘空间量。该过程仅可对使 用 ASSM 创建的表空间使用,并且不将属于 BasicFiles 的 LOB 块视为已使用的空间。 注:有关详细信息,请参阅《Oracle Database PL/SQL Packages and Types Reference》。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-14 15-14 版权所有 ©2007,Oracle。保留所有权利。 迁移到 SecureFiles SecureFiles 使用联机重新定义。 迁移到 SecureFiles 使用 LOB 接口超集,可轻松从 BasicFile LOB 进行迁移。迁移到 SecureFiles 有两种建议 方法:分区交换和联机重新定义。 分区交换 • 需要与表中最大分区相等的额外空间 • 可在交换期间维护索引 • 可将工作量分散到多个较小的维护窗口 • 要求表或分区脱机以执行交换 联机重新定义(建议做法) • 不要求表或分区脱机 • 可并行进行 • 要求额外存储空间等于整个表,并且所有 LOB 段均可用 • 要求重建所有全局索引 这些解决方案通常意味着使用输入 LOB 列中的数据所用磁盘空间两倍的空间。但是,使 用分区和按分区执行这些操作有助于降低所需的磁盘空间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-15 15-15 版权所有 ©2007,Oracle。保留所有权利。 SecureFiles 迁移:示例 插入数据。 create table tab1 (id number not null, c clob) partition by range(id) (partition p1 values less than (100) tablespace tbs1 lob(c) store as lobp1, partition p2 values less than (200) tablespace tbs2 lob(c) store as lobp2, partition p3 values less than (300) tablespace tbs3 lob(c) store as lobp3); create table tab1_tmp (id number not null, c clob) partition by range(id) (partition p1 values less than (100) tablespace tbs1 lob(c) store as securefile, partition p2 values less than (200) tablespace tbs2 lob(c) store as securefile, partition p3 values less than (300) tablespace tbs3 lob(c) store as securefile); begin dbms_redefinition.start_redef_table('scott','tab1','tab1_tmp','id id, c c'); dbms_redefinition.copy_table_dependents('scott','tab1','tab1_tmp',1, true,true,true,false,error_count); dbms_redefinition.finish_redef_table('scott','tab1','tab1_tmp'); end; SecureFiles 迁移:示例 可以使用幻灯片中的示例将 BasicFile LOB 迁移到 SecureFile LOB。 首先,使用 BasicFiles 创建表。该示例使用的是分区表。 然后,在表中插入数据。 之后,创建具有相同分区数的临时表,但是这次使用 SecureFiles。请注意,此临时表具有相 同的列和类型。 最后一部分演示了如何使用 DBMS_REDEFINITION 过程通过先前创建的临时表重新定义 表。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-16 15-16 版权所有 ©2007,Oracle。保留所有权利。 SecureFiles 监视 为了显示 SecureFiles 的使用情况,已对下列视图进行了修改: • *_SEGMENTS • *_LOBS • *_LOB_PARTITIONS • *_PART_LOBS SQL> SELECT segment_name, segment_type, segment_subtype 2 FROM dba_segments 3 WHERE tablespace_name = 'SECF_TBS2' 4 AND segment_type = 'LOBSEGMENT' 5 / SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU ---------------------------- ------------------ ---------- SYS_LOB0000071583C00004$$ LOBSEGMENT SECUREFILE 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-17 15-17 版权所有 ©2007,Oracle。保留所有权利。 小结 在本课中,您应该已经学会如何使用: • SecureFiles 提高 LOB 性能 • SQL 和 PL/SQL API 访问 SecureFiles 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 15-18 15-18 版权所有 ©2007,Oracle。保留所有权利。 练习 15:概览 此练习介绍了对于压缩、数据加密以及性能使用 SecureFiles 的优势。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 版权所有 ©2007,Oracle。保留所有权利。 其它新增功能 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-2 版权所有 ©2007,Oracle。保留所有权利。16-2 课程目标 学完本课后,应能完成以下工作: • 描述锁定机制的增强功能 • 使用 SQL 查询结果高速缓存 • 使用增强的 PL/SQL 重新编译机制 • 创建和使用不可见的索引 • 描述自适应游标共享 • 管理 SPFILE 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-3 版权所有 ©2007,Oracle。保留所有权利。16-3 前台统计信息 仅报告前台统计信息的新列: • V$SYSTEM_EVENT: – TOTAL_WAITS_FG – TOTAL_TIMEOUTS_FG – TIME_WAITED_FG – AVERAGE_WAIT_FG – TIME_WAITED_MICRO_FG • V$SYSTEM_WAIT_CLASS: – TOTAL_WAITS_FG – TIME_WAITED_FG 前台统计信息 V$SYSTEM_EVENT 和 V$SYSTEM_WAIT_CLASS 视图中已添加了新列,使用这些列您可 以轻松地标识由前台进程或后台进程引发的事件。 V$SYSTEM_EVENT 用以下五个新 NUMBER 列来显示完全来自前台会话的统计信息: • TOTAL_WAITS_FG • TOTAL_TIMEOUTS_FG • TIME_WAITED_FG • AVERAGE_WAIT_FG • TIME_WAITED_MICRO_FG V$SYSTEM_WAIT_CLASS 用以下两个新 NUMBER 列来显示完全来自前台会话的统计信 息: • TOTAL_WAITS_FG • TIME_WAITED_FG 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-4 版权所有 ©2007,Oracle。保留所有权利。16-4 联机重新定义增强功能 • 联机表重新定义支持以下对象: – 包含实体化视图和视图日志的表 – 具有排序依赖性的触发器 • 联机重新定义不会系统地使从属对象失效。 联机重新定义增强功能 Oracle Database 11g 支持对包含实体化视图和视图日志的表进行联机重新定义。此外, 联机重新定义还支持带有 FOLLOWS 子句的触发器,该子句在触发器之间建立排序依赖 性。 在早期数据库版本中,所有直接和间接相关的视图和 PL/SQL 程序包都会在联机重新定义 或其它 DDL 操作后失效。下次调用这些视图和 PL/SQL 程序包时,会自动对其进行重新 编译。如果相关 PL/SQL 程序包和视图太多,重新验证或重新编译的成本会很高。 在 Oracle Database 11g 中,逻辑上未受到重新定义影响的视图、同义词和依赖于其它表的 对象(触发器除外)都不会失效。因此,如果对象(如引用的列名称和类型)在重新定义 后保持不变,则它们不会失效。此优化功能是“透明的”,即在默认情况下已启用。 其它示例:如果重新定义删除了一个列,则只有引用该列的过程和视图会失效,其它相关 过程和视图仍然有效。请注意,重新定义的表上的所有触发器都会失效(因为重新定义可 能会更改内部列号和数据类型),但在下一次对该表执行 DML 时它们会自动重新生效。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-5 版权所有 ©2007,Oracle。保留所有权利。16-5 将相关重新编译减至最少 • 向表添加列不会使其从属对象失效。 • 向程序包添加 PL/SQL 单元不会使从属对象失效。 • 自动跟踪细粒度依赖性。 • 不需要进行配置。 将相关重新编译减至最少 从 Oracle Database 11g 开始,您可以访问描述更精确的依赖性元数据的记录。这称为细粒 度依赖性,它是自动开启的。 较早的 Oracle DB 版本精确记录了整个对象的依赖性元数据(例如,PL/SQL 单元 P 依赖 于 PL/SQL 单元 F,或视图 V 依赖于表 T)。这意味着从属对象有时会在没有逻辑要求的 情况下失效。例如,如果 V 视图只依赖 T 表中的 A 列和 B 列,则将 D 列添加到 T 表后, 逻辑上 V 视图的有效性不会受到影响。然而,在 Oracle DB 版本 11.1 之前,将 D 列添加 到 T 表 V 视图就会失效。在 Oracle DB 版本 11.1 中,将 D 列添加到 T 表不会使 V 视图失 效。同样,如果过程 P 只依赖程序包中的元素 E1 和 E2,将 E99 元素添加到程序包(添 加到程序包末尾以避免更改插槽编号或现有顶层元素的入口点编号)不会使 P 过程失 效。 通过减少由于更改其所依赖的对象而导致从属对象失效的情况,提高了应用程序在开发环 境和联机应用程序升级过程中的可用性。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-6 版权所有 ©2007,Oracle。保留所有权利。16-6 锁定增强功能 • DDL 命令现在可以等待 DML 锁定被释放: – DDL_LOCK_TIMEOUT 初始化参数 • LOCK TABLE 命令新增了 WAIT [] 子句 • 下列命令不再需要排它锁 (X),而需要共享排它锁 (SX): – CREATE INDEX ONLINE – CREATE MATERIALIZED VIEW LOG – ALTER TABLE ENABLE CONSTRAINT NOVALIDATE 锁定增强功能 • 通过在系统或会话级别设置 DDL_LOCK_TIMEOUT 参数,可以限制 DDL 命令等待 DML 锁定的时间,超过此时间就会失败。默认情况下此初始化参数设置为 0,即 NOWAIT,这可确保向后兼容性。值的范围是 0-1,000,000(以秒为单位)。 • LOCK TABLE 命令具有新的语法,可用于指定语句为获取对表的 DML 锁定而需要等 待的最多秒数。使用 WAIT 子句可以指示,为获得 DML 锁定 LOCK TABLE 语句最多 应等待指定的秒数。该整数值没有限制。 • 在并发性很高的环境中,要求获得排它锁(例如,在创建和重建联机索引结束时)可 能会导致等待 DML 操作剧增,从而使系统利用率出现明显变化。尽管对于数据库整 体而言这不是问题,但系统利用率反常可能会触发操作系统级别的预警。此幻灯片中 列出的命令不再需要排它锁。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-7 版权所有 ©2007,Oracle。保留所有权利。16-7 不可见的索引:概览 INVISIBLE 索引 VISIBLE 索引 优化程序查看点 数据查看点 使用索引 不使用索引 更新索引 更新索引 更新表 更新表 OPTIMIZER_USE_INVISIBLE_INDEXES=FALSE 不可见的索引:概览 从版本 11g 开始,可以创建不可见的索引。优化程序会忽略不可见的索引,除非您在会话 或系统级别上将 OPTIMIZER_USE_INVISIBLE_INDEXES 初始化参数显式设置为 TRUE。此参数的默认值是 FALSE。 使索引不可见是使索引不可用或删除索引的一种替代办法。使用不可见的索引,可完成以 下操作: • 在删除索引之前测试对索引的删除。 • 对应用程序的特定操作或模块使用临时索引结构,这样就不会影响整个应用程序。 与不可用的索引不同,不可见的索引在使用 DML 语句期间仍会得到维护。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-8 版权所有 ©2007,Oracle。保留所有权利。16-8 不可见的索引:示例 • 将索引改为对优化程序不可见: • 优化程序不考虑此索引: • 优化程序始终考虑索引: • 创建最初不可见的索引: ALTER INDEX ind1 INVISIBLE; SELECT /*+ index(TAB1 IND1) */ COL1 FROM TAB1 WHERE …; ALTER INDEX ind1 VISIBLE; CREATE INDEX IND1 ON TAB1(COL1) INVISIBLE; 不可见的索引:示例 当索引不可见时,优化程序生成的计划不会使用该索引。如果未发现性能下降,则可以删 除该索引。还可以创建最初不可见的索引,执行测试,然后确定是否使该索引可见。 可以查询 *_INDEXES 数据字典视图的 VISIBILITY 列来确定该索引是 VISIBLE 还是 INVISIBLE。 注:对于本幻灯片中给定的所有语句,都假定 OPTIMIZER_USE_INVISIBLE_INDEXES 设置为 FALSE。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-9 版权所有 ©2007,Oracle。保留所有权利。16-9 SQL 查询结果高速缓存:概览 • 高速缓存查询或查询块的结果以供将来重用。 • 可跨语句和会话使用高速缓存,除非该高速缓存已过 时。 • 优点: – 可扩展性 – 降低内存使用量 • 适用的语句: – 访问多行 – 返回少数行 SELECT … SQL 查询结果 高速缓存 SELECT …会话 1 会话 2 1 2 3 SQL 查询结果高速缓存:概览 SQL 查询结果高速缓存可在数据库内存中对查询结果集和查询碎片启用显式高速缓存。 存储在共享池中的专用内存缓冲区可用于存储和检索高速缓存的结果。对查询访问的数据 库对象中的数据进行修改后,存储在该高速缓存中的查询结果将失效。 虽然 SQL 查询高速缓存可用于任何查询,但最适用于需要访问大量行却仅返回其中一少 部分的语句。数据仓库应用程序大多属于这种情况。 在本幻灯片显示的图形中,如果第一个会话执行一个查询,它将从数据库中检索数据, 然后将结果高速缓存在 SQL 查询结果高速缓存中。如果第二个会话执行完全相同的查 询,它将直接从高速缓存中检索结果而不使用磁盘。 附注 •RAC 配置中的每个节点都有一个专用的结果高速缓存。一个实例的高速缓存结果不 能供另一个实例使用。但是,失效会对多个实例产生影响。要处理 RAC 实例之间与 SQL 查询结果高速缓存相关的所有同步操作,需对每个实例使用专门的 RCBG 进程。 • 通过并行查询,可对整个结果进行高速缓存(在 RAC 中,是在查询协调程序实例上 执行高速缓存的),但单个并行查询进程无法使用高速缓存。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-10 版权所有 ©2007,Oracle。保留所有权利。16-10 设置 SQL 查询结果高速缓存 使用 RESULT_CACHE_MODE 初始化参数在数据库级别 设置。值: • AUTO:优化程序根据重复的执行操作确定需要存储在高 速缓存中的结果。 • MANUAL:使用 result_cache 提示指定要存储在高速 缓存中的结果。 • FORCE:所有结果都存储在高速缓存中。 设置 SQL 查询结果高速缓存 查询优化程序根据初始化参数文件中 RESULT_CACHE_MODE 参数的设置管理结果高速缓 存机制。 可以使用此参数确定优化程序是否将查询结果自动发送到结果高速缓存中。可以在系统和 会话级别设置 RESULT_CACHE_MODE 参数。参数值可以是 AUTO、MANUAL 和 FORCE: • 设置为 AUTO 时,优化程序将根据重复的执行操作确定将哪些结果存储在高速缓存 中。 • 设置为 MANUAL(默认值)时,必须使用 RESULT_CACHE 提示指定在高速缓存中存 储特定结果。 • 设置为 FORCE 时,所有结果都将存储在高速缓存中。 注:对于 AUTO 和 FORCE 设置,如果语句中包含 [NO_]RESULT_CACHE 提示,则该提 示优先于参数设置。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-11 版权所有 ©2007,Oracle。保留所有权利。16-11 管理 SQL 查询结果高速缓存 使用以下初始化参数: • RESULT_CACHE_MAX_SIZE – 此参数设置分配给结果高速缓存的内存。 – 如果将其值设为 0,则会禁用结果高速缓存。 – 默认值取决于其它内存设置(memory_target 的 0.25% 或 sga_target 的 0.5% 或 shared_pool_size 的 1%) – 不能大于共享池的 75% • RESULT_CACHE_MAX_RESULT – 设置单个结果的最大高速缓存 – 默认值为 5% • RESULT_CACHE_REMOTE_EXPIRATION – 根据远程数据库对象设置高速缓存结果的过期时间 – 默认值为 0 管理 SQL 查询结果高速缓存 可以改变初始化参数文件中的多种参数设置,以管理数据库的 SQL 查询结果高速缓存。 默认情况下,数据库会为 SGA 中共享池内的结果高速缓存分配内存。分配给结果高速缓存 的内存大小取决于 SGA 的内存大小以及内存管理系统。可以通过设置 RESULT_CACHE_MAX_SIZE 参数来更改分配给结果高速缓存的内存。如果将结果高速缓 存的值设为 0,则会禁用此结果高速缓存。此参数的值将四舍五入到不超过指定值的 32 KB 的最大倍数。如果四舍五入得到的值是 0,则会禁用该功能。 使用 RESULT_CACHE_MAX_RESULT 参数可以指定任一结果可使用的最大高速缓存量。默 认值为 5%,但可指定 1 到 100 之间的任一百分比值。可在系统和会话级别上实施此参数。 使用 RESULT_CACHE_REMOTE_EXPIRATION 参数可以指定依赖于远程数据库对象的结果 保持有效的时间(以分钟为单位)。默认值为 0,表示不会高速缓存使用远程对象的结果。 将此参数设置为非零值可能会生成过时的信息:例如,当结果使用的远程表在远程数据库 上发生了更改时。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-12 版权所有 ©2007,Oracle。保留所有权利。16-12 使用 RESULT_CACHE 提示 EXPLAIN PLAN FOR SELECT /*+ RESULT_CACHE */ department_id, AVG(salary) FROM employees GROUP BY department_id; SELECT /*+ NO_RESULT_CACHE */ department_id, AVG(salary) FROM employees GROUP BY department_id; -------------------------------------------------------------- | Id | Operation | Name |Rows -------------------------------------------------------------- | 0 | SELECT STATEMENT | | 11 | 1 | RESULT CACHE | 8fpza04gtwsfr6n595au15yj4y | | 2 | HASH GROUP BY | | 11 | 3 | TABLE ACCESS FULL| EMPLOYEES | 107 -------------------------------------------------------------- 使用 Result_Cache 提示 如果要使用查询结果高速缓存并将 RESULT_CACHE_MODE 初始化参数设置为 MANUAL, 则必须在查询中显式指定 RESULT_CACHE 提示。这会在查询的执行计划中引入 ResultCache 运算符。执行查询时,ResultCache 运算符将查找结果高速缓存,以检 查该查询结果是否存在于高速缓存中。如果存在,则直接从高速缓存检索该结果。如果高 速缓存中不存在该查询结果,则执行查询。结果将以输出形式返回,也存储在结果高速缓 存中。 如果将 RESULT_CACHE_MODE 初始化参数设置为 AUTO 或 FORCE,并且不希望将查询结 果存储在结果高速缓存中,则必须在查询中使用 NO_RESULT_CACHE 提示。例如,如果 在初始化参数文件中 RESULT_CACHE_MODE 的值为 FORCE,并且不希望对 EMPLOYEES 表使用结果高速缓存,则需要使用 NO_RESULT_CACHE 提示。 注:应优先于参数设置使用 [NO_]RESULT_CACHE 提示。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-13 版权所有 ©2007,Oracle。保留所有权利。16-13 内嵌视图:示例 SELECT prod_subcategory, revenue FROM (SELECT /*+ RESULT_CACHE */ p.prod_category, p.prod_subcategory, sum(s.amount_sold) revenue FROM products p, sales s WHERE s.prod_id = p.prod_id and s.time_id BETWEEN to_date('01-JAN-2006','dd-MON-yyyy') and to_date('31-DEC-2006','dd-MON-yyyy') GROUP BY ROLLUP(p.prod_category, p.prod_subcategory)) WHERE prod_category = 'Women'; 内嵌视图:示例 在本幻灯片显示的示例中,内嵌视图中使用了 RESULT_CACHE 提示。在这种情况下, 将禁用下列优化:视图合并、谓词向下传递和列映射。这会影响初次查询,可能要花费较 长的时间来执行它。不过,由于使用了 SQL 查询高速缓存,后续执行会快得多。这种情 况的另一个优点是类似查询(在最后一个 WHERE 子句中对 prod_category 使用不同谓 词值的查询)的速度也会快很多。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-14 版权所有 ©2007,Oracle。保留所有权利。16-14 使用 DBMS_RESULT_CACHE 程序包 DBMS_RESULT_CACHE 程序包用于: • 管理查询结果高速缓存的内存分配 • 查看高速缓存的状态: • 检索有关高速缓存内存使用量的统计信息: • 删除所有现有结果并清空高速缓存: • 使依赖于指定对象的高速缓存结果失效: EXECUTE DBMS_RESULT_CACHE.MEMORY_REPORT; EXECUTE DBMS_RESULT_CACHE.FLUSH; SELECT DBMS_RESULT_CACHE.STATUS FROM DUAL; EXEC DBMS_RESULT_CACHE.INVALIDATE('JFV','MYTAB'); 使用 DBMS_RESULT_CACHE 程序包 DBMS_RESULT_CACHE 程序包提供了统计信息、信息和运算符,使您可以管理查询结果 高速缓存的内存分配。可以使用 DBMS_RESULT_CACHE 程序包执行多种操作,如查看高 速缓存的状态(OPEN 或 CLOSED)、检索有关高速缓存内存使用量的统计信息、刷新高 速缓存。例如,要查看内存分配统计信息,请使用以下 SQL 过程: SQL> set serveroutput on SQL> execute dbms_result_cache.memory_report R e s u l t C a c h e M e m o r y R e p o r t [Parameters] Block Size = 1024 bytes Maximum Cache Size = 720896 bytes (704 blocks) Maximum Result Size = 35840 bytes (35 blocks) [Memory] Total Memory = 46284 bytes [0.036% of the Shared Pool] ... Fixed Memory = 10640 bytes [0.008% of the Shared Pool] ... State Object Pool = 2852 bytes [0.002% of the Shared Pool] ... Cache Memory = 32792 bytes (32 blocks) [0.025% of the Shared Pool] ....... Unused Memory = 30 blocks ....... Used Memory = 2 blocks ........... Dependencies = 1 blocks ........... Results = 1 blocks ............... SQL = 1 blocks 注:有关详细信息,请参阅《PL/SQL Packages and Types Reference》指南。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-15 版权所有 ©2007,Oracle。保留所有权利。16-15 查看 SQL 结果高速缓存字典信息 下列视图提供了有关查询结果高速缓存的信息: 列出所有内存块和相应的统计信息(G)V$RESULT_CACHE_MEMORY 列出所有对象(高速缓存结果和依赖性) 及其属性 (G)V$RESULT_CACHE_OBJECTS 列出高速缓存结果之间的依赖性详细信息 及依赖性 (G)V$RESULT_CACHE_DEPENDENCY (G)V$RESULT_CACHE_STATISTICS 列出各种高速缓存设置和内存使用量统计 信息 查看 SQL 结果高速缓存字典信息 注:有关详细信息,请参阅《Oracle 数据库参考》指南。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-16 版权所有 ©2007,Oracle。保留所有权利。16-16 SQL 查询结果高速缓存:注意事项 • 对包含以下内容的查询禁用结果高速缓存: – 临时表或字典表 – 不确定的 PL/SQL 函数 – CURRVAL 和 NEXTVAL 序列 – current_date、sysdate 和 sys_guid 等 SQL 函数 • 远程数据库上的 DML/DDL 不会使高速缓存结果过期。 • 可高速缓存闪回查询。 SQL 查询结果高速缓存:注意事项 注:对于用户编写的基于函数的索引中使用的任何函数,必须使用 DETERMINISTIC 关 键字声明该函数对任何指定的输入参数值集始终返回相同的输出值。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-17 版权所有 ©2007,Oracle。保留所有权利。16-17 SQL 查询结果高速缓存:注意事项 • 结果高速缓存不会自动释放内存。 – 它将不断增长,直到达到最大大小。 – DBMS_RESULT_CACHE.FLUSH 会清除内存。 • 绑定变量 – 将使用变量值对高速缓存结果进行参数化。 – 只能找到相同变量值的高速缓存结果。 • 对于以下情况,不会生成高速缓存结果: – 查询是基于数据的非当前版本构建的(强制实施读取一致性) – 当前会话在查询的表中存在未完成的事务处理 SQL 查询结果高速缓存:注意事项(续) 附注 • 只有在高速缓存处于未使用状态下才能运行清除操作,要进行刷新,需要禁用(关 闭)高速缓存。 • 对于绑定变量,将使用变量值对高速缓存结果进行参数化。只能找到相同变量值的高 速缓存结果。也就是说,不同的值或绑定变量名称将导致高速缓存未命中。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-18 版权所有 ©2007,Oracle。保留所有权利。16-18 OCI 客户机查询高速缓存 • 将服务器端查询高速缓存扩展到客户端内存 • 通过消除客户机与服务器之间的往返可以提高性能 • 利用客户端内存 • 通过节省服务器 CPU 资源提高服务器的可扩展性 • 服务器上的结果集发生更改时会自动刷新结果高速缓存 • 尤其适用于查找表 OCI 客户机查询高速缓存 在 Oracle Database 11g 中,可以使用 Oracle 调用接口 (OCI) 客户机查询高速缓存对客户机 内存中的查询结果集启用高速缓存。 高速缓存结果集数据以透明方式与服务器端上的所有更改保持一致。由于高速缓存中保存 有相应信息,因此利用此功能的应用程序会提高查询的性能。此外,使用高速缓存的查询 可避免在发送查询和获取结果时在客户机和服务器之间进行往返。处理查询所用的服务器 CPU 会减少,从而提高了服务器的可扩展性。 在使用客户端查询高速缓存之前,请确定应用程序是否会受益于此功能。当您的应用程序 生成重复的结果集、小型结果集、静态结果集或频繁执行的查询时,客户端高速缓存非常 有用。 客户机和服务器结果高速缓存是独立的,可独立启用或禁用它们。 注:可以使用 client_result_cache_stats$ 视图或 v$client_result_cache_stats 视图来监视客户机查询高速缓存。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-19 版权所有 ©2007,Oracle。保留所有权利。16-19 使用客户端查询高速缓存 可通过以下方式使用客户端查询高速缓存: • 设置初始化参数 – CLIENT_RESULT_CACHE_SIZE – CLIENT_RESULT_CACHE_LAG • 使用客户机配置文件 – OCI_RESULT_CACHE_MAX_SIZE – OCI_RESULT_CACHE_MAX_RSET_SIZE – OCI_RESULT_CACHE_MAX_RSET_ROWS 根据以下项使用客户机结果高速缓存: – 表结果高速缓存模式 – SQL 语句中的 RESULT CACHE 提示 使用客户端查询高速缓存 可在初始化参数文件中设置下列两个参数: • CLIENT_RESULT_CACHE_SIZE :非零值表示启用客户机结果高速缓存。这是客户 机每个进程的结果集高速缓存的最大大小(以字节表示)。所有 OCI 客户机进程都 可达到此最大值,可以使用 OCI_RESULT_CACHE_MAX_SIZE 参数覆盖此值。 • CLIENT_RESULT_CACHE_LAG :自客户机与服务器之间的最后一次往返后的最长时 间(以毫秒为单位),在此之前 OCI 客户机查询执行一次往返以获得与在客户机上 高速缓存的查询相关的所有数据库更改。 客户机配置文件是可选的,并且可覆盖服务器初始化参数文件中的高速缓存参数集。参数 值可以包含于 sqlnet.ora 文件中。指定本幻灯片中所示的参数值后,即使用配置文件 为 OCI 客户机进程启用了 OCI 客户机高速缓存。 OCI_RESULT_CACHE_MAX_RSET_SIZE/ROWS 表示每个进程的查询高速缓存中所有结 果集的最大大小(以字节/行表示)。OCI 应用程序可使用应用程序提示来强制执行结果 高速缓存存储。这将覆盖 ALTER TABLE/ALTER VIEW 的部署时间设置。该应用程序提 示可以是: •SQL 提示 /*+ result_cache */, and /*+ no_result_cache */ • OCIStmtExecute() 模式。这些内容将覆盖 SQL 提示。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-20 使用客户端查询高速缓存(续) 注:要使用此功能,该应用程序必须与版本 11.1 或更高版本的客户机库重新链接,并连 接到版本 11.1 或更高版本的服务器。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-21 版权所有 ©2007,Oracle。保留所有权利。16-21 PL/SQL 函数高速缓存 • 在高速缓存中存储函数结果以供其它会话使用 • 使用查询结果高速缓存 高速缓存 结果 第一个查询 后继查询 BEGIN … SELECT … FROM table; … END; exec Calculate(…); exec Calculate(…); exec Calculate(…); PL/SQL 函数高速缓存 从 Oracle Database 11g 开始,可以使用 PL/SQL 跨段函数结果高速缓存机制。此高速缓存 机制提供了一种语言受到支持且由系统管理的方法,可将 PL/SQL 函数的结果存储在共享 全局区域 (SGA) 中,运行应用程序的每个会话均可使用这种方法。该高速缓存机制不仅 高效而且易于使用,可以减轻设计和开发自己的高速缓存和高速缓存管理策略的工作。 Oracle Database 11g 使您可以标记 PL/SQL 函数,指示应高速缓存其结果,这样在下一次 访问调用相同参数值时,可以进行查找,而无需重新计算。此函数结果高速缓存可节省大 量空间和时间。这是通过将输入参数用作查找关键字以透明方式完成的。高速缓存是针对 整个实例的,因此所有调用该函数的不同会话都可从中受益。如果更改了给定参数集的结 果,则可以通过构造使高速缓存条目失效,以便在下一次访问时正确地对其进行重新计 算。如果函数返回的值是根据从方案级表中选择的数据计算出来的,则此功能尤其有用。 对于此类用法,失效构造十分简单,并且是声明性的。可在 PL/SQL 函数的源文本中包括 语法,以请求高速缓存函数结果并确保其正确性,并请求当表列表中出现相应 DML 时清 除此高速缓存。如果调用高速缓存结果的函数时发现高速缓存中包含结果值,则不执行函 数主体,而是立即返回高速缓存的值。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-22 版权所有 ©2007,Oracle。保留所有权利。16-22 使用 PL/SQL 函数高速缓存 • 在程序包的函数声明部分或函数定义中包括 RESULT_CACHE 选项。 • 可以选择包括 RELIES_ON 子句,以指定函数结果依赖的任 何表或视图。 CREATE OR REPLACE FUNCTION productName (prod_id NUMBER, lang_id VARCHAR2) RETURN NVARCHAR2 RESULT_CACHE RELIES_ON (product_descriptions) IS result VARCHAR2(50); BEGIN SELECT translated_name INTO result FROM product_descriptions WHERE product_id = prod_id AND language_id = lang_id; RETURN result; END; 使用 PL/SQL 函数高速缓存 在此幻灯片所示的示例中,productName 函数通过函数声明中的 RESULT_CACHE 选项 启用了结果高速缓存。在此示例中,RELIES_ON 子句用于识别函数结果所依赖的 PRODUCT_DESCRIPTIONS 表。 使用说明 • 如果函数的执行导致了未处理的异常错误,该异常结果不会存储在高速缓存中。 • 在以下情况下执行高速缓存结果的函数主体: - 此数据库实例上的会话第一次使用这些参数值调用该函数。这些参数值的高速缓 存结果无效。 - 当在函数定义的 RELIES_ON 子句中指定的任何数据库对象发生更改时,高速缓 存的结果就会失效。 - 这些参数值的高速缓存结果已过时。如果系统需要更多内存,它可能会放弃最早 的高速缓存值。 - 该函数绕过高速缓存。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-23 使用 PL/SQL 函数高速缓存(续) • 该函数不应有任何负作用。 • 该函数不应依赖特定于会话的设置。 • 该函数不应依赖特定于会话的应用程序上下文。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-24 版权所有 ©2007,Oracle。保留所有权利。16-24 PL/SQL 函数高速缓存:注意事项 PL/SQL 函数高速缓存不适用于以下情况: • 函数是在具有调用者权限的模块中或匿名块中定义的。 • 函数是用管道传输的表函数。 • 该函数包含 OUT 或 IN OUT 参数。 • 该函数包含下列类型的 IN 参数:BLOB、CLOB、 NCLOB、REF CURSOR、集合、对象或记录。 • 该函数的返回类型为:BLOB、CLOB、NCLOB、REF CURSOR、对象、记录或包含上述不受支持的某个返回类 型的集合。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-25 版权所有 ©2007,Oracle。保留所有权利。16-25 PL/SQL 和 Java 本机编译增强功能 • 对于纯 PL/SQL 或 Java 代码,速度可提高 100% 以上 • 对于 SQL 的典型事务处理,速度可提高 10-30% • PL/SQL – 只有一个参数:NATIVE/INTERPRETED – 不需要 C 编译器 – 没有文件系统 DLL • Java – 只有一个参数:TRUE/FALSE – JIT“即时”编译 – 对用户透明(异步,在后台中执行) – 存储代码以避免重新编译 PL/SQL 和 Java 本机编译增强功能 PL/SQL 本机编译(PLSQL_CODE_TYPE 初始化参数):Oracle 可执行文件可直接从 PL/SQL 源代码中生成本机动态链接库 (DLL),而无需使用第三方 C 编译器。在 Oracle Database 10g 中,DLL 按照规定存储在数据库目录中。在 Oracle Database 11g 中,当需要 DLL 时,Oracle 可执行文件可直接从目录中加载,而无需先将其暂存在文件系统中。 本机编译的 PL/SQL 程序的执行速度永远比 Oracle Database 10g 中的快,在某些情况下可 能会快一个数量级。PL/SQL 本机编译在 Oracle Database 11g 中是自动可用的,不需要第三 方软件(C 编译器或 DLL 加载器)。 Java 本机编译(JAVA_JIT_ENABLED 初始化参数):此功能在默认情况下处于启用状 态,与 Java 开发工具包 JIT(即时)相似,它无需 C 编译器即可在数据库本地以透明方式 编译 Java。 JIT 在专用 Oracle 服务器进程中以独立会话的形式运行。每个数据库实例最多有一个编译 器会话;它能够识别 Oracle RAC 并分摊到所有 Java 会话中执行。 对于数据库中的 Java,此功能有两个主要优点:在该数据库中执行 Java 时,无需使用显式 命令即可以透明方式激活此功能,从而提高了在数据库中执行纯 Java 的性能和其易用性。 由于此功能不需要使用 C 编译器,还节省了成本和许可证费用。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-26 版权所有 ©2007,Oracle。保留所有权利。16-26 设置和测试 PL/SQL 本机编译 1. 将 PLSQL_CODE_TYPE 设置为 NATIVE: – ALTER SYSTEM | ALTER SESSION | ALTER … COMPILE 2. 编译 PL/SQL 单元(示例): 3. 确保成功: CREATE OR REPLACE PROCEDURE hello_native AS BEGIN DBMS_OUTPUT.PUT_LINE('Hello world.'); END hello_native; / ALTER PROCEDURE hello_native COMPILE PLSQL_CODE_TYPE=NATIVE; SELECT plsql_code_type FROM all_plsql_object_settings WHERE name = 'HELLO_NATIVE'; 设置和测试 PL/SQL 本机编译 通过本机编译设置和测试一个或多个程序单元: 1. 设置 PLSQL_CODE_TYPE 初始化参数。此参数确定是对 PL/SQL 代码进行本机编译 还是对其进行解释。默认设置为 INTERPRETED,建议在开发过程中使用此设置。 要启用 PL/SQL 本机编译,请将 PLSQL_CODE_TYPE 的值设置为 NATIVE。确保 PLSQL_OPTIMIZE_LEVEL 初始化参数不小于 2(默认值)。您可以在系统、会话 或单元级别上设置 PLSQL_CODE_TYPE。程序包规范及其主体可具有不同的 PLSQL_CODE_TYPE 设置。 2. 使用下列方法之一,编译一个或多个程序单元: - 使用 CREATE OR REPLACE 创建或重新编译程序单元。 - 使用此幻灯片示例中显示的各种 ALTER COMPILE 命令。 - 运行用于创建 Oracle 提供的程序包集的 SQL*Plus 脚本之一。 - 使用带有 PLSQL_CODE_TYPE=NATIVE 的预配置初始化文件创建一个数据库。 3. 要确保此进程成功,请查询数据字典以查看是否已为本机执行编译了程序单元。可 使用 ALL|USER_PLSQL_OBJECT_SETTINGS 视图。对于针对本机执行而编译的程 序单元,PLSQL_CODE_TYPE 列具有 NATIVE 值,否则为 INTERPRETED。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-27 版权所有 ©2007,Oracle。保留所有权利。16-27 为 PL/SQL 本机编译重新编译整个数据库 1. 关闭数据库。 2. 将 PLSQL_CODE_TYPE 设置为 NATIVE。 3. 在 UPGRADE 模式下启动数据库。 4. 执行 dbmsupgnv.sql 脚本。 5. 在受限模式下关闭/启动数据库。 6. 执行 utlrp.sql 脚本。 7. 禁用受限模式。 为 PL/SQL 本机编译重新编译整个数据库 如果您有 DBA 权限,则可以分别使用 dbmsupgnv.sql 和 dbmsupgin.sql 脚本将现 有数据库中的所有 PL/SQL 模块重新编译为 NATIVE 或 INTERPRETED。要将所有 PL/SQL 模块重新编译为 NATIVE,请执行下列步骤: 1. 在普通或即时模式下关闭应用程序服务、监听程序和数据库。前两个用于确保终止所 有到数据库的连接。 2. 在初始化参数文件中将 PLSQL_CODE_TYPE 设置为 NATIVE。虽然在这些步骤中 PLSQL_CODE_TYPE 的值不会影响 PL/SQL 单元的转换,但它会影响所有后续编译单 元,所以应该将其显式设置为所需的编译类型。 3. 使用 UPGRADE 选项,在 UPGRADE 模式下启动数据库。假定此时没有无效的对象。 4. 以 SYS 用户身份运行 $ORACLE_HOME/rdbms/admin/dbmsupgnv.sql 脚本,为 所有 PL/SQL 单元将字典表中的 plsql_code_type 设置更新为 NATIVE。此过程 也会使这些单元失效。对脚本使用 TRUE 可排除程序包规范;使用 FALSE 可包含程 序包规范。脚本可以保证能成功完成或回退所有更改。程序包规范很少包含可执行代 码,因此编译为 NATIVE 具有重要的运行时优势。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-28 为 PL/SQL 本机编译重新编译整个数据库(续) 5. 关闭数据库并在 NORMAL 模式下重新启动。Oracle 建议不连接其它会话以避免可能的 问题。使用以下语句可以确保达到此目的: ALTER SYSTEM ENABLE RESTRICTED SESSION; 6. 以 SYS 用户身份运行 $ORACLE_HOME/rdbms/admin/utlrp.sql 脚本。此脚本 使用默认的并行度重新编译所有 PL/SQL 模块。 7. 对数据库禁用受限会话模式,然后启动先前关闭的服务。要禁用受限会话模式,请使 用以下语句: ALTER SYSTEM DISABLE RESTRICTED SESSION; 注:在转换到本机编译过程中,由于 TYPE 规范不包含可执行代码,因此不会将这些规范 重新编译为 NATIVE。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-29 版权所有 ©2007,Oracle。保留所有权利。16-29 自适应游标共享:概览 • 通过自适应游标共享,可以仅针对使用绑定变量的语句 智能地共享游标。 • 自适应游标共享用于协调游标共享和优化之间的矛盾。 • 自适应游标共享具有如下优点: – 自动检测不同执行受益于不同执行计划的时间 – 将生成的子游标数限制到最小 – 是自动机制,无法关闭 一个计划并不总是适用于所有绑定值 自适应游标共享:概览 绑定变量使 Oracle DB 可以为多条 SQL 语句共享单个游标,以减少分析 SQL 语句所使用 的共享内存量。然而,游标共享和 SQL 优化是两个相互冲突的目标。用文字编写 SQL 语 句为优化程序提供了更多的信息,这无疑会导致更好的执行计划,但大量的硬分析会导致 内存和 CPU 开销增加。Oracle9i Database 首次尝试推出了一个折衷的解决方案 — 允许共 享使用不同文字值的相似 SQL 语句。对于使用绑定变量的语句,Oracle9i 还引入了绑定 扫视概念。使用绑定扫视,优化程序会在首次执行语句时查看绑定值。然后,它使用这些 值来确定一个执行计划,语句的所有其它执行均共享该执行计划。为了从绑定扫视中受 益,假定使用游标共享,且假定语句的不同调用使用相同的执行计划。如果语句的不同调 用从不同的执行计划中获得很大收益,则绑定扫视对生成有效的执行计划就不再有用。 为了尽可能解决此问题,Oracle Database 11g 引入了自适应游标共享。此功能是一项更复 杂的策略,它并不会盲目地共享游标,如果与分析时间和内存使用量开销相比,使用多个 执行计划所带来的收益更重要,则会为使用绑定变量的每条 SQL 语句生成多个执行计 划。然而,由于使用绑定变量的目的是共享内存中的游标,因此对于需要生成的子游标数 目必须采取一种折衷的方法。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-30 版权所有 ©2007,Oracle。保留所有权利。16-30 自适应游标共享:体系结构 对绑定敏感的游标 SELECT * FROM emp WHERE sal = :1 and dept = :2系统观察语句 一段时间 初始选择性立方体 . 0.15 0.0025 :1=A & :2=B ⇒ S(:1)=0.15 ∧ S(:2)=0.0025 . 0.18 0.003 :1=C & :2=D ⇒ S(:1)=0.18 ∧ S(:2)=0.003 HJ GB HJ 初始计划 HJ GB HJ 无需新计划 . 0.3 0.009 :1=E & :2=F ⇒ S(:1)=0.3 ∧ S(:2)=0.009 HJ GB HJ HJ GB HJ. 0.28 0.004 :1=G & :2=H ⇒ S(:1)=0.28 ∧ S(:2)=0.004 HJ GB HJ HJ GB HJ 相同选择性立方体 第二个选择性立方体 需要新计划合并的选择性立方体 合并的立方体 无需新计划 能识别绑定的游标 So ft Parse Har d arse P Har d arse P 2 34 1 自适应游标共享:体系结构 此幻灯片中所示的方案使用自适应游标共享执行下列步骤: 1. 游标照常随硬分析启动。如果发生绑定扫视,且使用直方图计算包含绑定变量的谓词 选择性,则该游标将被标记为对绑定敏感的游标。此外,还会存储一些有关包含绑定 变量的谓词的信息,包括谓词选择性。在该幻灯片的示例中,所存储的谓词选择性是 一个以 (0.15,0.0025) 为中心的立方体。由于进行了初始硬分析,将使用已扫视的绑定 确定初始执行计划。执行游标后,绑定值和游标的执行统计信息存储在该游标中。 当使用新的一组绑定值执行下一语句时,系统会执行常规软分析,并查找供执行使用 的相匹配的游标。执行结束时,会将执行统计信息与当前存储在游标中的执行统计信 息进行比较。然后,系统观察所有先前运行的统计信息模式(请参阅下一张幻灯片中 的 V$SQL_CS_… 视图)并确定是否将游标标记为能识别绑定的游标。 2. 下一次对此查询进行软分析时,如果游标能够识别绑定,则会使用能识别绑定的游标 匹配。假定具有新的一组绑定值的谓词选择性现在是 (0.18,0.003)。由于选择性用作能 识别绑定的游标匹配的一部分,并且该选择性位于现有立方体中,因此该语句使用现 有子游标的执行计划运行。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-31 自适应游标共享:体系结构(续) 3. 下一次对此查询进行软分析时,假设具有一组新绑定值的谓词选择性是 (0.3,0.009)。 由于该选择性不在现有立方体中,所以找不到子游标匹配项。因此,系统会执行硬分 析,在本例中生成了一个具有第二个执行计划的新子游标。此外,新选择性立方体将 存储为该新子游标的一部分。执行该新子游标后,系统会将绑定值和执行统计信息存 储在该游标中。 4. 下一次对此查询进行软分析时,假设具有一组新绑定值的谓词选择性是 (.28,0.004)。 由于该选择性不在现有的某个立方体中,系统将执行硬分析。假设此时硬分析生成与 第一个执行计划相同的执行计划。因为该计划与第一个子游标相同,所以将合并这两 个子游标。也就是说,这两个立方体将合并为一个较大的新立方体,并删除其中一个 子游标。下次执行软分析时,如果选择性位于该新立方体中,子游标将匹配。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-32 版权所有 ©2007,Oracle。保留所有权利。16-32 自适应游标共享视图 下列视图提供有关自适应游标共享使用率的信息: 两个新列显示游标是对绑定敏感的游 标还是能识别绑定的游标。 V$SQL 显示为包含绑定变量且在游标共享检 查中使用了其选择性的每个谓词存储 的选择性立方体。 V$SQL_CS_SELECTIVITY 显示使用不同绑定集的游标的执行统 计信息。 V$SQL_CS_STATISTICS V$SQL_CS_HISTOGRAM 显示跨执行历史记录直方图的执行计 数的分布情况。 自适应游标共享视图 这些视图确定查询是否是能识别绑定的查询,是否为自动处理的,无需用户输入。但是, 有关正在进行的操作的信息将通过 V$ 视图显示出来,以便 DBA 能够诊断问题。V$SQL 中 已新增了两个新列: • IS_BIND_SENSITIVE:指示游标是否为对绑定敏感,值为 YES | NO。符合以下情况 的查询称为对绑定敏感的查询:计算谓词选择性时优化程序为其扫视绑定变量值,并 且绑定变量值的更改可能导致不同计划。 • IS_BIND_AWARE:指示游标是否为能标识绑定的游标,值为 YES | NO。游标高速缓 存中已标记为使用能识别绑定的游标共享的游标称为能标识绑定的游标。 V$SQL_CS_HISTOGRAM:显示跨三个存储桶执行历史记录直方图的执行计数的分布情 况。 V$SQL_CS_SELECTIVITY:显示为包含绑定变量且在游标共享检查中使用了其选择性的 每个谓词存储在游标中的选择性立方体或范围。它包含谓词文本和选择性范围的下限值和 上限值。 V$SQL_CS_STATISTICS:自适应游标共享监视查询的执行,并在一段时间内收集相关的 信息,使用此信息可确定是否切换到对该查询使用能识别绑定的游标。该视图汇总了所收 集的信息以让您作出以下决定:对于执行示例,它跟踪已处理的行数、缓冲区获取数和 CPU 时间。如果使用绑定集来构建游标,则 PEEKED 列的值为 YES,否则为 NO。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-33 版权所有 ©2007,Oracle。保留所有权利。16-33 与自适应游标共享交互 • CURSOR_SHARING: – 如果 CURSOR_SHARING <> EXACT,则可能会使用绑定 变量重写包含文字的语句。 – 如果语句被重写,则可能会对其应用自适应游标共享。 • SQL 计划管理 (SPM): – 如果将 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES 设置为 TRUE,则仅使用生成的第一个计划。 – 一种解决方法是:将此参数设置为 FALSE,然后运行您的 应用程序,直到将所有计划都加载到游标高速缓存中。 – 手动将游标高速缓存加载到相应的计划基线中。 与自适应游标共享交互 • 自适应游标共享与 CURSOR_SHARING 参数无关。此参数的设置可确定是否用系统生 成的绑定变量替换文字。如果是,自适应游标共享的行为就仿佛用户在开始时已提供 可绑定一样。 • 如果使用 SPM 自动计划捕获,则将为使用绑定变量的 SQL 语句捕获的第一个计划标 记为相应的 SQL 计划基线。如果同一 SQL 语句存在其它计划(自适应游标共享可能 就是这种情况),则该计划将添加到 SQL 语句计划历史记录并对其进行标记以进行 验证:不会使用该计划。因此,即使自适应游标共享提供了基于一组新绑定值的新计 划,在该计划得到验证前 SPM 也不允许使用它。这样就退回到了 10g 的行为,该语 句的所有后续执行仅使用基于第一组绑定值生成的计划。一种可能的解决方法是:将 自动计划捕获设置为 false,然后将系统运行一段时间,在使用具有绑定的 SQL 语句 包含的所有计划填充游标高速缓存后,将整个计划直接从游标高速缓存加载到相应的 SQL 计划基线。通过执行此操作,默认情况下,单个 SQL 语句的所有计划都将被标 记为 SQL 基线计划。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-34 版权所有 ©2007,Oracle。保留所有权利。16-34 临时表空间收缩 • 对排序区进行了物理分配后,会在内存中管理它们。 • 进行大量排序后,使用此方法可能会有问题。 • 要从磁盘中释放物理空间,可以收缩临时表空间: – 本地管理的临时表空间 – 联机操作 CREATE TEMPORARY TABLESPACE temp TEMPFILE 'tbs_temp.dbf' SIZE 600m REUSE AUTOEXTEND ON MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m; ALTER TABLESPACE temp SHRINK SPACE [KEEP 200m]; ALTER TABLESPACE temp SHRINK TEMPFILE 'tbs_temp.dbf'; 临时表空间收缩 大量的排序操作可能会导致临时表空间大量增长。为了提高性能,对排序区进行物理分配 后,将在内存中管理它们以避免以后的物理回收。结果,磁盘中包含一个巨大的临时文 件,直到将其删除。一种可能的解决方法是:使用较小的文件创建新的临时表空间,并将 这个新的表空间设置为用户的默认临时表空间,然后删除旧的表空间。但是,这有一个缺 点,即过程要求删除旧的临时表空间时不能存在活动的排序操作。 从 Oracle Database 11g 版本 1 开始,可使用 ALTER TABLESPACE SHRINK SPACE 命令 收缩临时表空间,也可以使用 ALTER TABLESPACE SHRINK TEMPFILE 命令收缩临时 文件。对于这两个命令,可以指定可选的 KEEP 子句,该子句定义了表空间/临时文件可 收缩到的下限。如果忽略 KEEP 子句,则只要满足其它存储属性,数据库就会尽可能尝试 收缩表空间/临时文件(所有当前使用的区的总空间)。此操作需联机执行。但是,如果 所分配的当前使用的一些区超出了收缩估计值,系统将等待这些区被释放以完成收缩操 作。 注:ALTER DATABASE TEMPFILE RESIZE 命令通常会因 ORA-03297 而失败,因为临 时文件包含的已用数据超过了所需的 RESIZE 值。与 ALTER TABLESPACE SHRINK 相 反,ALTER DATABASE 命令不会在排序区分配后尝试取消分配。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-35 版权所有 ©2007,Oracle。保留所有权利。16-35 DBA_TEMP_FREE_SPACE • 列出临时空间使用率信息 • 临时表空间使用率中心点 可用的总空间(以字节为单位),包括当前已分配的、可重用的以及 当前未分配的空间 FREE_SPACE 已分配的总空间(以字节为单位),包括当前已分配的且正在使用中 的空间以及当前已分配的且可重用的空间 ALLOCATED_SPACE 表空间的总大小(以字节为单位)TABLESPACE_SIZE 表空间的名称TABLESPACE_NAME 说明列名 DBA_TEMP_FREE_SPACE 此字典视图可报告表空间级别的临时空间使用率信息。此信息是从各种现有视图中导出 的。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-36 版权所有 ©2007,Oracle。保留所有权利。16-36 用于创建临时表的表空间选项 • 指定全局临时表使用的临时表空间。 • 确定适当的临时区大小。 CREATE TEMPORARY TABLESPACE temp TEMPFILE 'tbs_temp.dbf' SIZE 600m REUSE AUTOEXTEND ON MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m; CREATE GLOBAL TEMPORARY TABLE temp_table (c varchar2(10)) ON COMMIT DELETE ROWS TABLESPACE temp; 用于创建临时表的表空间选项 从 Oracle Database 11g 版本 1 开始,可以在创建全局临时表时指定 TABLESPACE 子句。 如果没有指定表空间,将在默认的临时表空间中创建全局临时表。此外,还会在与临时表 相同的临时表空间中创建在临时表中创建的索引。 这样您就可以确定反映排序特定的使用率的合适区大小,尤其是当您具有多种临时空间使 用率时。 注:可以在 DBA_TABLES 中查找用于存储全局临时表的表空间。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-37 版权所有 ©2007,Oracle。保留所有权利。16-37 更易于恢复丢失的 SPFILE 使用 FROM MEMORY 子句可以创建当前系统范围内的参数 设置。 CREATE PFILE [= 'pfile_name' ] FROM { { SPFILE [= 'spfile_name'] } | MEMORY } ; CREATE SPFILE [= 'spfile_name' ] FROM { { PFILE [= 'pfile_name' ] } | MEMORY } ; 更易于恢复丢失的 SPFILE 在 Oracle Database 11g 中,FROM MEMORY 子句使用当前系统范围内的参数设置创建 pfile 或 spfile。在 RAC 环境中,创建的文件包含来自每个实例的参数设置。 在实例启动期间,所有参数设置都被记录到 alert.log 文件中。在 Oracle Database 11g 中,alert.log 参数转储文本是使用有效的参数语法编写的。这便于对参数进行剪切, 并将其粘贴到单独的文件中,从而用作后续实例的 pfile。在实例启动时,pfile 或 spfile 的名称将被写入到 alert.log。使用未知的客户端 pfile 时,预警日志也会对 此加以提示。 要支持其它功能,必须将 COMPATIBLE 初始化参数设置为 11.0.0.0 或更高。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-38 版权所有 ©2007,Oracle。保留所有权利。16-38 小结 在本课中,您应该已经学会: • 描述锁定机制的增强功能 • 使用 SQL 查询结果高速缓存 • 使用增强的 PL/SQL 重新编译机制 • 创建和使用不可见的索引 • 描述自适应游标共享 • 管理 SPFILE 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 16-39 版权所有 ©2007,Oracle。保留所有权利。16-39 练习 16:概览 本练习包含以下主题: • 使用客户机结果高速缓存 • 使用 PL/SQL 结果高速缓存 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 附录 A:练习和解答 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-2 目录 第 1 课的练习..................................................................................................................... 4 练习 1-1:安装 Oracle Database 11g 软件...............................................................................5 练习 1-2:将 ASM 升级到 Oracle Database 11g.....................................................................7 练习 1-3:新建数据库 ............................................................................................................ 13 练习 1-4:使用热补丁 ............................................................................................................ 19 第 2 课的练习................................................................................................................... 34 练习 2-1:ASM 快速镜像再.................................................................................................. 35 练习 2-2:ASMCMD 扩展 ..................................................................................................... 41 第 3 课的练习................................................................................................................... 45 练习 3-1:SPA 升级方案........................................................................................................ 46 第 4 课的练习................................................................................................................... 56 练习 4-1:根据 SQL 性能指导置入 SQL 计划基线.......................................................... 57 练习 4-2:SQL 计划管理 (SPM) ........................................................................................... 60 第 5 课的练习................................................................................................................... 78 练习 5-1:数据库重放网格方案........................................................................................... 79 第 6 课的练习................................................................................................................... 93 练习 6-1:使用自动 SQL 优化.............................................................................................. 94 第 7 课的练习................................................................................................................. 105 练习 7-1:创建基线............................................................................................................... 106 练习 7-2:控制自动任务作业 ............................................................................................. 110 练习 7-3:校准 I/O 资源 ....................................................................................................... 112 练习 7-4:创建轻量调度程序作业..................................................................................... 116 第 8 课的练习................................................................................................................. 127 练习 8-1:使用自动内存管理 ............................................................................................. 128 练习 8-2:优化程序统计信息 ............................................................................................. 145 第 9 课的练习................................................................................................................. 155 练习 9-1:使用新的分区方案 ............................................................................................. 156 练习 9-2:使用新的分区方案:间隔分区........................................................................ 171 练习 9-3:使用新的分区方案:扩展的组合分区........................................................... 179 练习 9-4:使用新的分区方案:基于虚拟列的分区 ...................................................... 183 练习 9-5:使用压缩............................................................................................................... 192 练习 9-6:获得分区建议案.................................................................................................. 198 第 10 课的练习............................................................................................................... 208 练习 10-1:复制活动数据库................................................................................................ 209 练习 10-2:管理目录............................................................................................................. 216 第 11 课的练习............................................................................................................... 226 练习 11-1:使用闪回数据归档 ........................................................................................... 227 练习 11-2:闪回事务处理回退 ........................................................................................... 242 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-3 第 12 课的练习............................................................................................................... 253 练习 12-1:诊断方案............................................................................................................. 254 练习 12-2:SQL 修复指导方案........................................................................................... 265 第 13 课的练习............................................................................................................... 283 练习 13-1:使用 Enterprise Manager 修复“停机”数据库................................................ 284 练习 13-2:使用 Enterprise Manager 修复块损坏............................................................. 289 练习 13-3:使用 RMAN 命令行修复停机数据库........................................................... 293 第 14 课的练习............................................................................................................... 300 练习 14-1:使用口令安全功能 ........................................................................................... 301 练习 14-2:使用加密的表空间 ........................................................................................... 310 第 15 课的练习............................................................................................................... 316 练习 15-1:使用 SecureFiles................................................................................................. 317 第 16 课的练习............................................................................................................... 344 练习 16-1:使用结果高速缓存 ........................................................................................... 345 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-4 第 1 课的练习 系统当前已安装了 Oracle Database 10g 软件,还预先创建了名为 db10g 的数据 库。ASM 实例已存在,只有一个名为 DATA 的磁盘组。ASM 实例正在 Oracle Database 10g 软件上运行。 在本练习中,您将安装 Oracle Database 11g 软件。完成后,将 ASM 升级为 Oracle Database 11g,然后新建一个名为 orcl 的 Oracle Database 11g 实例。 重要说明:开始练习前,请确保已作为用户 oracle 在端口 5802 上启动 VNC 服 务器。要启动 VNC 服务器,请以 oracle 用户身份从终端会话中执行以下命令: vncserver :2(作为要使用的口令输入并确认 oracle。)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-5 练习 1-1:安装 Oracle Database 11g 软件 在本练习中,只安装 O20racle Database 11g 软件。 1) 以 oracle 用户身份从图形终端会话进行连接,确保为 Oracle Database 11g 正 确设置了环境。下面是在开始安装前应在环境中设置和导出的环境变量列表: ORACLE_BASE=/u01/app/oracle, ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1, PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jd k1.5.0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/b in:/usr/X11R6/bin. export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jdk1.5. 0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/bin:/usr/X1 1R6/bin 2) 将目录切换到 /stage/db11g/db/Disk1。 cd /stage/db11g/db/Disk1 3) 启动 Oracle Universal Installer 并在 /u01/ app/oracle/product/11.1.0/db_1 中安装 Oracle 软件。此时请不要创建任何数据库。 a) 在操作系统提示符下执行 ./runInstaller 命令。 ./runInstaller b) 在“Select a Product to Install(选择要安装的产品)”页上,选择“Oracle Database 11g”并单击“Next(下一步)”。 c) 在“Select Installation Method(选择安装方法)”页上,选择“Advanced Installation(高级安装)”并单击“Next(下一步)”。 d) 在“Select Installation Type(选择安装类型)”页上,选择“Enterprise Edition(企业版)”并单击“Next(下一步)”。 e) 在“Install Location(安装位置)”页上,接受以下默认设置并单击“Next (下一步)”: Oracle 基目录:/u01/app/oracle,名称:OraDb11g_home1 路径:/u01/app/oracle/product/11.1.0/db_1。 f) 此时将显示“Product-Specific Prerequisites Checks(产品特定的先决条件 检查)”页。完成所有检查后,单击“Next(下一步)”。如果显示 “Warning(警告)”窗口,请单击“Yes(是)”继续安装。 g) 在“Upgrade an Existing Database(升级现有数据库)”屏幕中,确保已选 中“No(否)”,然后单击“Next(下一步)”。 h) 在“Select Configuration Option(选择配置选项)”屏幕中,选择“Install Software Only(仅安装软件)”,然后单击“Next(下一步)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-1:安装 Oracle Database 11g 软件(续) Oracle Database 11g:面向管理员的新增功能 A-6 i) 在“Privileged Operating System Groups(已授权的操作系统组)”页上,接 受以下默认设置并单击“Next(下一步)”: 数据库管理员 (OSDBA) 组:dba 数据库操作员 (OSOPER) 组:oper ASM 管理员 (OSASM) 组:oracle j) 在“Summary(概要)”页上,单击“Install(安装)”。 k) 此时将显示“Install(安装)”页及其进度条。如果安装过程中出现错误窗 口,请单击“Ignore(忽略)”继续安装。 l) 如果出现“Execute Configuration scripts(执行配置脚本)”窗口,请导航到 终端窗口(如果没有打开的窗口,请右键单击桌面,然后单击“Open Terminal(打开终端)”)。以 root 用户身份登录并执行以下命令: /u01/app/oracle/product/11.1.0/db_1/root.sh。对出现的每个 问题按 [Enter]。 su – Password: # /u01/app/oracle/product/11.1.0/db_1/root.sh … Enter the full pathname of the local bin directory: [/usr/local/bin]: The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. Finished product-specific root actions. # m) 执行完前面的脚本后,返回到“Execute Configuration Scripts(执行配置脚 本)”窗口,然后单击“OK(确定)”。 n) 在“End of Installation(安装结束)”窗口中,单击“Exit(退出)”。 o) 在“Exit(退出)”对话框中,单击“Yes(是)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-7 练习 1-2:将 ASM 升级到 Oracle Database 11g 在本练习中,将升级当前在 Oracle Database 10g 上运行的现有 ASM 实例。不过, 在升级 ASM 之前,只执行数据库升级的第一个步骤。在本练习中,不会升级 db10g 数据库本身,因为这样会花费很多时间。 1) 以 oracle 用户身份在终端会话中进行连接,并确保 Oracle Database 10g 的 环境设置是正确的。ORACLE_SID=db10g, ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1、 ORACLE_BASE=/u01/app/oracle 和 PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bi n:/usr/local/bin:/usr/X11R6/bin export ORACLE_SID=db10g export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export ORACLE_BASE=/u01/app/oracle export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin 2) 将 utlu111i.sql 脚本从 $ORACLE_BASE/product/11.1.0/db_1/rdbms/admin 目录复制到 oracle 用户的 HOME 目录中。 cp $ORACLE_BASE/product/11.1.0/db_1/rdbms/admin/utlu111i.sql $HOME 3) 对 db10g 实例运行 HOME 目录中的 utlu111i.sql 脚本。此时将显示尝试升 级所需要的所有信息。 cd sqlplus / as sysdba startup start utlu111i.sql Oracle Database 11.1 Pre-Upgrade Information Tool 05-25- 2007 00:12:00 . ************************************************************** ******** Database: ************************************************************** ******** --> name: DB10G --> version: 10.2.0.1.0 --> compatible: 10.2.0.1.0 --> blocksize: 8192 --> platform: Linux IA (32-bit) . 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-2:将 ASM 升级到 Oracle Database 11g(续) Oracle Database 11g:面向管理员的新增功能 A-8 ************************************************************** ******** Tablespaces: [make adjustments in the current environment] ************************************************************** ******** --> SYSTEM tablespace is adequate for the upgrade. .... minimum required size: 724 MB .... AUTOEXTEND additional space required: 244 MB --> UNDOTBS1 tablespace is adequate for the upgrade. .... minimum required size: 471 MB .... AUTOEXTEND additional space required: 436 MB --> SYSAUX tablespace is adequate for the upgrade. .... minimum required size: 417 MB .... AUTOEXTEND additional space required: 177 MB --> TEMP tablespace is adequate for the upgrade. .... minimum required size: 61 MB .... AUTOEXTEND additional space required: 41 MB --> EXAMPLE tablespace is adequate for the upgrade. .... minimum required size: 96 MB . ************************************************************** ******** Update Parameters: [Update Oracle Database 11.1 init.ora or spfile] ************************************************************** ******** WARNING: --> "sga_target" needs to be increased to at least 336 MB . ************************************************************** ******** Renamed Parameters: [Update Oracle Database 11.1 init.ora or spfile] ************************************************************** ******** -- No renamed parameters found. No changes are required. . ************************************************************** ******** Obsolete/Deprecated Parameters: [Update Oracle Database 11.1 init.ora or spfile]******************************************************* *************** --> "background_dump_dest" replaced by "diagnostic_dest" --> "user_dump_dest" replaced by "diagnostic_dest" --> "core_dump_dest" replaced by "diagnostic_dest" . ************************************************************** ******** Components: [The following database components will be upgraded or installed] 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-2:将 ASM 升级到 Oracle Database 11g(续) Oracle Database 11g:面向管理员的新增功能 A-9 ************************************************************** ******** --> Oracle Catalog Views [upgrade] VALID --> Oracle Packages and Types [upgrade] VALID --> JServer JAVA Virtual Machine [upgrade] VALID --> Oracle XDK for Java [upgrade] VALID --> Oracle Workspace Manager [upgrade] VALID --> OLAP Analytic Workspace [upgrade] VALID --> OLAP Catalog [upgrade] VALID --> EM Repository [upgrade] VALID --> Oracle Text [upgrade] VALID --> Oracle XML Database [upgrade] VALID --> Oracle Java Packages [upgrade] VALID --> Oracle interMedia [upgrade] VALID --> Spatial [upgrade] VALID --> Data Mining [upgrade] VALID --> Expression Filter [upgrade] VALID --> Rule Manager [upgrade] VALID --> Oracle OLAP API [upgrade] VALID . ************************************************************** ******** Miscellaneous Warnings ************************************************************** ******** WARNING: --> Database contains stale optimizer statistics. .... Refer to the 11g Upgrade Guide for instructions to update .... statistics prior to upgrading the database. .... Component Schemas with stale statistics: .... SYS .... OLAPSYS .... SYSMAN .... CTXSYS .... XDB WARNING: --> Database contains schemas with objects dependent on network packages. .... Refer to the 11g Upgrade Guide for instructions to configure Network ACLs. .... USER SYSMAN has dependent objects. WARNING: --> EM Database Control Repository exists in the database. .... Direct downgrade of EM Database Control is not supported. Refer to the .... 11g Upgrade Guide for instructions to save the EM data prior to upgrade. . PL/SQL procedure successfully completed. SQL> 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-2:将 ASM 升级到 Oracle Database 11g(续) Oracle Database 11g:面向管理员的新增功能 A-10 4) 完成后,请关闭 db10g 实例。 shutdown immediate exit 5) 以 oracle 用户身份在图形终端会话中进行连接,确保为 Oracle Database 11g 正确设置了环境。开始安装前,应在环境中设置和导出以下环境变量列表: ORACLE_BASE=/u01/app/oracle, ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1, PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jd k1.5.0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/b in:/usr/X11R6/bin. export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jdk1.5. 0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/bin:/usr/X1 1R6/bin 6) 使用 DBUA 实用程序将 ASM 升级为 Oracle Database 11g 软件。 a) 在图形终端会话中执行 dbua 命令: dbua b) 在“Welcome(欢迎使用)”页上,单击“Next(下一步)”。 c) 在“Upgrade Operations(升级操作)”页上,选择“Upgrade Automatic Storage Management Instance(升级自动存储管理实例)”并单击“Next (下一步)”。 d) 此时将显示 Database Upgrade Assistant 的进度窗口。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-2:将 ASM 升级到 Oracle Database 11g(续) Oracle Database 11g:面向管理员的新增功能 A-11 e) 上述消息显示出来后,从使用 10g 环境的终端窗口关闭 ASM 实例。 export ORACLE_SID=+ASM export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus / as sysdba shutdown immediate exit 以 root 用户身份执行以下命令: /u01/app/oracle/product/11.1.0/db_1/bin/localconfig reset # /u01/app/oracle/product/11.1.0/db_1/bin/localconfig reset Successfully accumulated necessary OCR keys. Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Configuration for local CSS has been initialized Stale CSS daemon is running... killing it now Cleaning up Network socket directories Setting up Network socket directories Adding to inittab Startup will be queued to init within 30 seconds. Checking the status of new Oracle init process... Expecting the CRS daemons to be up within 600 seconds. Cluster Synchronization Services is active on these nodes. edcdr12p1 Cluster Synchronization Services is active on all the nodes. Oracle CSS service is installed and running under init(1M) # f) 返回 10g 终端窗口,并启动现有 ASM 实例: export ORACLE_SID=+ASM export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus / as sysdba startup exit 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-2:将 ASM 升级到 Oracle Database 11g(续) Oracle Database 11g:面向管理员的新增功能 A-12 g) 返回 DBUA 会话,并在 Database Upgrade Assistant 窗口中单击“OK (确定)”。 h) 在“Upgrade Operations(升级操作)”页上,确认已选中“Upgrade Automatic Storage Management Instance(升级自动存储管理实例)”并单击 “Next(下一步)”。 i) 此时将显示 Database Upgrade Assistant 进度窗口,随后显示“ASM Upgrade Summary(ASM 升级概要)”页。 j) 在“Summary(概要)”页上,确保源数据库和目标数据库与要执行的操作 相对应,然后单击“Finish(完成)”。 k) DBUA 将 ASM 升级到 Oracle Database 11g 时,会显示“Database Upgrade Assistant: Progress(Database Upgrade Assistant:进度)”窗口。 注:如果此时出现 memory_target 错误,请取消 DBUA 会话,转至终端窗 口,然后执行以下操作:在 $ORACLE_HOME/db 中新建一个 init+ASM.ora 文件,该文件包含以下内容: *.asm_diskstring='/dev/raw/raw*' *.diagnostic_dest='/u01/app/oracle' *.instance_type='asm' *.large_pool_size=12582912 *.memory_target=0 保存此文件,然后使用 pfile=init+ASM.ora 重新启动 ASM l) 进度栏到达 100% 时,单击“OK(确定)”。 m) 此时将显示“Upgrade Results(升级结果)”页。将看到这两个步骤均已 “成功执行”。 n) 单击报告下方的“Close(关闭)”按钮。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-13 练习 1-3:新建数据库 在本练习中,将使用 DBCA 新建运行 Oracle Database 11g 软件的名为 orcl 的 数据库。 1) 以 oracle 用户身份在图形终端会话中进行连接,确保为 Oracle Database 11g 正 确设置了环境。下面是在开始安装前应在环境中设置和导出的环境变量列表: ORACLE_BASE=/u01/app/oracle, ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1, PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jd k1.5.0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/b in:/usr/X11R6/bin. export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/usr/java/jdk1.5. 0_11/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/bin:/usr/X1 1R6/bin 2) 执行 dbca 命令: dbca 3) 在“Welcome(欢迎使用)”页上,单击“Next(下一步)”。 4) 在“Operations(操作)”页上,选择“Create a Database(创建数据库)”, 然后单击“Next(下一步)”。 5) 在“Database Templates(数据库模板)”页上,选择“General Purpose(一般 用途)”模板或“Transaction Processing(事务处理)”模板,然后单击“Next (下一步)”。 6) 在“Database Identification(数据库标识)”的“Global Database Name(全局数 据库名)”字段中输入 orcl(不使用域),然后单击“Next(下一步)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-3:新建数据库(续) Oracle Database 11g:面向管理员的新增功能 A-14 7) 在“Management Options(管理选项)”页上,确认以下选择,然后单击 “Next(下一步)”: 配置 Enterprise Manager “Configure Database Control for local management (配置 Database Control 以进行本地管理)” 8) DBCA 将显示一条警告,指示如果还要配置 Database Control,则必须为 orcl 数 据库配置监听程序。以 oracle 用户身份在图形终端会话中进行连接,并输入: netca a) 在“Welcome(欢迎使用)”页上,确认已选中“Listener Configuration (监听程序配置)”,然后单击“Next(下一步)”。 b) 在“Listener Configuration: Listener(监听程序配置:监听程序)”页上,确 认已选中“Add(添加)”,然后单击“Next(下一步)”。 c) 在“Listener Configuration: Listener Name(监听程序配置:监听程序名)” 页上,接受 LISTENER 作为默认名称,然后单击“Next(下一步)”。 d) 在“Listener Configuration: Select Protocol(监听程序配置:选择协议)”页 上,接受 TCP 作为选定协议,然后单击“Next(下一步)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-3:新建数据库(续) Oracle Database 11g:面向管理员的新增功能 A-15 e) 在“Listener Configuration: TCP/IP Protocol(监听程序配置:TCP/IP 协 议)”页上,选择“Use the standard port number of 1521(使用标准端口号 1521)”,然后单击“Next(下一步)”。 f) 在“Listener Configuration: More Listeners(监听程序配置:更多监听程 序)”页上,选择“No(否)”,然后单击“Next(下一步)”。 g) 在“Listener Configuration: Listeners Configuration Done(监听程序配置: 监听程序配置完成)”页上,单击“Next(下一步)”。 h) 返回“Welcome(欢迎使用)”页后,选择“Local Net Service Name configuration(本地 Net 服务名配置)”,然后单击“Next(下一步)”。 i) 在“Net Service Name Configuration(Net 服务名配置)”页上,接受“Add (添加)”,然后单击“Next(下一步)”。 j) 在“Net Service Name Configuration, Service Name(Net 服务名配置,服务 名)”页上,输入 orcl 作为服务名,然后单击“Next(下一步)”。 k) 在“Net Service Name Configuration, Select Protocol(Net 服务名配置,请选 择协议)”页上,选择 TCP,然后单击“Next(下一步)”。 l) 在“Net Service Name Configuration, TCP/IP Protocol(Net 服务名配置,TCP/IP 协议)”页上,输入完整的主机名(例如 edt3r10p1.us.oracle.com), 选择“Use the standard port number of 1521(使用标准端口号 1521)”,然后 单击“Next(下一步)”。 m) 在“Net Service Name Configuration, Test(Net 服务名配置,测试)”页 上,选择“No, do not test(不,不进行测试)”(因为 11g 数据库尚不存 在),然后单击“Next(下一步)”。 n) 在“Net Service Name Configuration, Net Service Name(Net 服务名配置, Net 服务名)”页上,选择 orcl 作为 Net 服务名,然后单击“Next(下 一步)”。 o) 在“Net Service Name Configuration, Another Net Service(Net 服务名配置, 是否配置另一个 Net 服务)”页上,选择“Yes(是)”,然后单击“Next (下一步)”。 p) 此时将返回到“Net Service Name Configuration, Service Name(Net 服务名 配置,服务名)”页。在“Net Service Name Configuration, Service Name (Net 服务名配置,服务名)”页上,输入 dbtest 作为服务名,然后单击 “Next(下一步)”(本课程后面部分将使用这个新的服务名)。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-3:新建数据库(续) Oracle Database 11g:面向管理员的新增功能 A-16 q) 在“Net Service Name Configuration, Select Protocol(Net 服务名配置,请选 择协议)”页上,选择 TCP,然后单击“Next(下一步)”。 r) 在“Net Service Name Configuration, TCP/IP Protocol(Net 服务名配置,TCP/IP 协议)”页上,输入完整的主机名(例如 edt3r10p1.us.oracle.com), 选择“Use the standard port number of 1521(使用标准端口号 1521)”,然后 单击“Next(下一步)”。 s) 在“Net Service Name Configuration, Test(Net 服务名配置,测试)”页 上,选择“No, do not test(不,不进行测试)”(因为 11g 数据库尚不存 在),然后单击“Next(下一步)”。 t) 在“Net Service Name Configuration, Net Service Name(Net 服务名配置, Net 服务名)”页上,选择 dbtest 作为 Net 服务名,然后单击“Next (下一步)”。 u) 在“Net Service Name Configuration, Another Net Service(Net 服务名配置, 是否配置另一个 Net 服务)”页上,选择“No(否)”,然后单击“Next (下一步)”。 v) 在“Net Service Name Configuration Complete(网络服务名配置已完成)” 页上,单击“Next(下一步)”。 w) 返回“Welcome(欢迎使用)”页后,单击“Finish(完成)”。 9) 返回到 DBCA 窗口。在“Database Configuration Assistant: Warning(Database Configuration Assistant:警告)”窗口中单击“OK(确定)”。 10) 在“Management Options(管理选项)”页上,确认以下选择,然后单击 “Next(下一步)”: 配置 Enterprise Manager “Configure Database Control for local management (配置 Database Control 以进行本地管理)” 11) 在“Database Credentials(数据库身份证明)”页上,选择“Use the Same Password for All Accounts(所有帐户使用同一口令)”,然后在“Password (口令)”和“Confirm Password(确认口令)”两个字段中输入 oracle, 然后单击“Next(下一步)”。 12) 在“Storage Options(存储选项)”页上,选择“File System(文件系统)”, 然后单击“Next(下一步)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-3:新建数据库(续) Oracle Database 11g:面向管理员的新增功能 A-17 13) 在“Database File Locations(数据库文件位置)”上,选择“Use Database File Locations from Template(使用模板中的数据库文件位置)”,然后单击“Next (下一步)”。 14) 在“Recovery Configuration(恢复配置)”页上,选择“Specify Flash Recovery Area(指定快速恢复区)”,并确保已在“Flash Recovery Area(快速恢复 区)”字段中输入 {ORACLE_BASE}/flash_recovery_area。在“Flash Recovery Area Size(快速恢复区大小)”字段中输入 4096。单击“Next (下一步)”。 15) 在“Database Content(数据库内容)”页上,选择“Sample Schemas(示例 方案)”,然后单击“Next(下一步)”。 16) 在“Initialization Parameters: Memory(初始化参数:内存)”页上选择 “Custom(定制)”,将“SGA Size(SGA 大小)”设置为 404 M Bytes, “PGA Size(PGA 大小)”设置为 150 M Bytes,然后单击“Character Sets (字符集)”选项卡。 17) 在“Character Sets(字符集)”子页中,选择“Use Unicode (AL32UTF8) (使用 Unicode (AL32UTF8))”,然后单击“Next(下一步)”。 18) 在“Security Settings(安全设置)”页上,选择“Keep the enhanced 11g default security settings (recommended)(保留增强的 11g 默认安全设置(建议))”, 然后单击“Next(下一步)”。 19) 在“Automatic Maintenance Tasks(自动维护任务)”上,选择“Enable automatic maintenance tasks(启用自动维护任务)”,然后单击“Next(下一步)”。 20) 在“Database Storage(数据库存储)”页上,展开“Redo Log Groups(重做 日志组)”文件夹,单击“1”,并确认“File Size(文件大小)”字段已设置 为 50 Mbytes (51200 K Bytes)。对 2 和 3 重复此操作。单击“Next (下一步)”。 21) 在“Creation Options(创建选项)”页上,选择“Create Database(创建数据 库)”,然后单击“Finish(完成)”。 22) 在“Confirmation(确认)”页上,单击“OK(确定)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-3:新建数据库(续) Oracle Database 11g:面向管理员的新增功能 A-18 23) 等待直到完成数据库创建。 24) 在“Database Configuration Assistant”对话框中,单击“Exit(退出)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-19 练习 1-4:使用热补丁 在本练习中,将对实时运行的数据库实例应用联机补丁程序,而不先将其关闭。 1) 在以 oracle 用户身份连接的终端窗口中,执行 OP_setup.sh 脚本。此脚本 在 Oracle DB 软件中会生成 bug。 $ cd /home/oracle/solutions/OP $ ./OP_setup.sh $ emctl stop dbconsole Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0 Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved. https://edcdr12p1:1158/em/console/aboutApplication Stopping Oracle Enterprise Manager 11g Database Control ... ... Stopped. [oracle@edrsr14p1 hotpatch]$ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:41:32 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ $ cd $ORACLE_HOME/lib $ pwd /u01/app/oracle/product/11.1.0/db_1/lib $ ar x libgeneric11.a qcs.o $ ar r libgeneric11.a /home/oracle/solutions/OP/qcs.o $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-20 $ cd $ORACLE_HOME/rdbms/lib $ $ make -f ins_rdbms.mk ioracle chmod 755 /u01/app/oracle/product/11.1.0/db_1/bin - Linking Oracle rm -f /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle gcc -o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle - L/u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ - L/u01/app/oracle/product/11.1.0/db_1/lib/ - L/u01/app/oracle/product/11.1.0/db_1/lib/stubs/ -L/usr/lib - lirc -lipgo -Wl,-E /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/opimai.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ssoraed.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ttcsoi.o -Wl,-- whole-archive -lperfsrv11 -Wl,--no-whole-archive /u01/app/oracle/product/11.1.0/db_1/lib/nautab.o /u01/app/oracle/product/11.1.0/db_1/lib/naeet.o /u01/app/oracle/product/11.1.0/db_1/lib/naect.o /u01/app/oracle/product/11.1.0/db_1/lib/naedhs.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/config.o - lserver11 -lodm11 -lsage11 -lnnet11 -lskgxp11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 - lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lvsn11 -lcommon11 -lgeneric11 -lknlopt `if /usr/bin/ar tv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap11" ; fi` -lslax11 -lpls11 -lrt -lplp11 -lserver11 -lclient11 - lvsn11 -lcommon11 -lgeneric11 `if [ -f /u01/app/oracle/product/11.1.0/db_1/lib/libavserver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ - f /u01/app/oracle/product/11.1.0/db_1/lib/libavclient11.a ] ; then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11 -lrt -lplp11 -ljavavm11 -lserver11 -lwwg `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lmm -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 - lztkg11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-21 "-lordsdo11"; fi` - L/u01/app/oracle/product/11.1.0/db_1/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lordimt11 -lclsra11 - ldbcfg11 -lhasgen11 -lcore11 -lskgxn2 -locr11 -locrb11 - locrutl11 -lhasgen11 -lcore11 -lskgxn2 -loraz -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 - lsnls11 -lunls11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 - lnls11 -lcore11 -lnls11 -laio `cat /u01/app/oracle/product/11.1.0/db_1/lib/sysliblist` -Wl,- rpath,/u01/app/oracle/product/11.1.0/db_1/lib -lm `cat /u01/app/oracle/product/11.1.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.1.0/db_1/lib test ! -f /u01/app/oracle/product/11.1.0/db_1/bin/oracle ||\ mv -f /u01/app/oracle/product/11.1.0/db_1/bin/oracle /u01/app/oracle/product/11.1.0/db_1/bin/oracleO mv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle /u01/app/oracle/product/11.1.0/db_1/bin/oracle chmod 6751 /u01/app/oracle/product/11.1.0/db_1/bin/oracle $ $ cd $HOME/solutions/OP $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:42:19 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to an idle instance. SQL> startup; ORACLE instance started. Total System Global Area 292933632 bytes Fixed Size 1298204 bytes Variable Size 155189476 bytes Database Buffers 130023424 bytes Redo Buffers 6422528 bytes Database mounted. Database opened. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-22 2) 调用 SQL*Plus 并以 SYS 用户身份进行连接。请执行以下命令: select * from mysql_is_great; 会看到什么结果? a) 会出现 ORA-600 错误。该错误是由在本练习中专门引入的 bug 导致的。退 出 SQL*Plus。 $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:43:14 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options SQL> select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00600: internal error code, arguments: [HAH!], [ORACLE], [IS], [BETTER!], [], [], [], [] SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ 3) 在 $HOME/solutions/OP 中解压缩 hotpatch.zip 文件。这就是修复该 bug 需要应用的补丁程序。 $ unzip hotpatch.zip Archive: hotpatch.zip creating: hotpatch/ creating: hotpatch/files/ creating: hotpatch/files/hpatch/ inflating: hotpatch/files/hpatch/bug5943776_1.pch creating: hotpatch/etc/ creating: hotpatch/etc/config/ inflating: hotpatch/etc/config/inventory.xml 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-23 inflating: hotpatch/etc/config/actions.xml creating: hotpatch/etc/xml/ inflating: hotpatch/etc/xml/GenericActions.xml inflating: hotpatch/etc/xml/ShiphomeDirectoryStructure.xml extracting: hotpatch/README.txt $ 4) 检查提供的补丁程序是否处于联机状态,然后在运行数据库时应用该补丁程序。 安装只需要花费几秒钟的时间: $ cd /home/oracle/solutions/OP/hotpatch $ $ORACLE_HOME/OPatch/opatch query -is_online_patch `pwd` Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_20-36-36PM.log -------------------------------------------------------------- ------------------ Patch is a online patch: true OPatch succeeded. $ $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_19-44-27PM.log 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-24 Lsinventory Output file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/lsinv/l sinventory2007-07-27_19-44-27PM.txt -------------------------------------------------------------- ------------------ Installed Top-level Products (1): Oracle Database 11g 11.1.0.6.0 There are 1 products installed in this Oracle Home. There are no Interim patches installed in this Oracle Home. -------------------------------------------------------------- ------------------ OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch apply /home/oracle/solutions/OP/hotpatch -connectString orcl:::: Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_19-44-51PM.log The patch should be applied/rolled back in '-all_nodes' mode only. Converting the RAC mode to '-all_nodes' mode. ApplySession applying interim patch '5943776' to OH '/u01/app/oracle/product/11.1.0/db_1' Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files and inventory (not for auto-rollback) for the Oracle Home 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-25 Backing up files affected by the patch '5943776' for restore. This might take a while... Backing up files affected by the patch '5943776' for rollback. This might take a while... Patching component oracle.rdbms, 11.1.0.6.0... The patch will be installed on active database instances. Running mkpatch on 'bug5943776_1.pch' to make it compatible with the Oracle binary... Installing and enabling the online patch 'bug5943776_1.pch', on database 'orcl'. ApplySession adding interim patch '5943776' to inventory Verifying the update... Inventory check OK: Patch ID 5943776 is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID 5943776 are present in Oracle Home. OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_19-45-12PM.log Lsinventory Output file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/lsinv/l sinventory2007-07-27_19-45-12PM.txt -------------------------------------------------------------- ------------------ Installed Top-level Products (1): Oracle Database 11g 11.1.0.6.0 There are 1 products installed in this Oracle Home. 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-26 Interim patches (1) : Patch 5943776 : applied on Fri Jul 27 19:44:57 GMT+07:00 2007 Created on 26 Jul 2007, 13:29:43 hrs EST5EDT Bugs fixed: 5943776 -------------------------------------------------------------- ------------------ OPatch succeeded. $ 5) 调用 SQL*Plus 并以 SYS 用户身份进行连接。请再次执行以下命令: select * from mysql_is_great; 会看到什么结果? a) 这次出现了标准 ORA-00942 错误。退出 SQL*Plus。 $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:45:32 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options SQL> select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00942: table or view does not exist SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-27 6) 在数据库实例仍在运行时,回退补丁程序。会看到什么结果? a) 补丁程序被快速删除。 $ $ORACLE_HOME/OPatch/opatch rollback -id 5943776 - connectString orcl:::: Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_19-46-06PM.log RollbackSession rolling back interim patch '5943776' from OH '/u01/app/oracle/product/11.1.0/db_1' The patch should be applied/rolled back in '-all_nodes' mode only. Converting the RAC mode to '-all_nodes' mode. Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files affected by the patch '5943776' for restore. This might take a while... Patching component oracle.rdbms, 11.1.0.6.0... The patch will be removed from active database instances. Disabling and removing online patch 'bug5943776_1.pch', on database 'orcl' RollbackSession removing interim patch '5943776' from inventory OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch 11.1.0.6.0 Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved. 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-28 Oracle Home : /u01/app/oracle/product/11.1.0/db_1 Central Inventory : /u01/app/oracle/oraInventory from : /etc/oraInst.loc OPatch version : 11.1.0.6.0 OUI version : 11.1.0.6.0 OUI location : /u01/app/oracle/product/11.1.0/db_1/oui Log file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/opatch2 007-07-27_19-46-21PM.log Lsinventory Output file location : /u01/app/oracle/product/11.1.0/db_1/cfgtoollogs/opatch/lsinv/l sinventory2007-07-27_19-46-21PM.txt -------------------------------------------------------------- ------------------ Installed Top-level Products (1): Oracle Database 11g 11.1.0.6.0 There are 1 products installed in this Oracle Home. There are no Interim patches installed in this Oracle Home. -------------------------------------------------------------- ------------------ OPatch succeeded. [oracle@edcdr12p1 OP]$ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-29 7) 调用 SQL*Plus 并以 SYS 用户身份进行连接。请执行以下命令: select * from mysql_is_great; 会看到什么结果? a) 此时会再次出现内部错误。退出 SQL*Plus。 $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:46:40 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options SQL> select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00600: internal error code, arguments: [HAH!], [ORACLE], [IS], [BETTER!], [], [], [], [] SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-30 8) 在以 oracle 用户身份连接的终端窗口中,执行 OP_cleanup.sh 脚本以还原 环境。 $ cd /home/oracle/solutions/OP $ ./OP_cleanup.sh $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:47:21 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ cd $ORACLE_HOME/lib $ ar r libgeneric11.a qcs.o $ cd $ORACLE_HOME/rdbms/lib $ make -f ins_rdbms.mk ioracle chmod 755 /u01/app/oracle/product/11.1.0/db_1/bin - Linking Oracle rm -f /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle gcc -o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle - L/u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ - L/u01/app/oracle/product/11.1.0/db_1/lib/ - L/u01/app/oracle/product/11.1.0/db_1/lib/stubs/ -L/usr/lib - lirc -lipgo -Wl,-E /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/opimai.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ssoraed.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/ttcsoi.o -Wl,-- whole-archive -lperfsrv11 -Wl,--no-whole-archive /u01/app/oracle/product/11.1.0/db_1/lib/nautab.o /u01/app/oracle/product/11.1.0/db_1/lib/naeet.o 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-31 /u01/app/oracle/product/11.1.0/db_1/lib/naect.o /u01/app/oracle/product/11.1.0/db_1/lib/naedhs.o /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/config.o - lserver11 -lodm11 -lsage11 -lnnet11 -lskgxp11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 - lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lvsn11 -lcommon11 -lgeneric11 -lknlopt `if /usr/bin/ar tv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap11" ; fi` -lslax11 -lpls11 -lrt -lplp11 -lserver11 -lclient11 - lvsn11 -lcommon11 -lgeneric11 `if [ -f /u01/app/oracle/product/11.1.0/db_1/lib/libavserver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ - f /u01/app/oracle/product/11.1.0/db_1/lib/libavclient11.a ] ; then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11 -lrt -lplp11 -ljavavm11 -lserver11 -lwwg `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lmm -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 - lztkg11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.1.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo11"; fi` - L/u01/app/oracle/product/11.1.0/db_1/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lordimt11 -lclsra11 - ldbcfg11 -lhasgen11 -lcore11 -lskgxn2 -locr11 -locrb11 - locrutl11 -lhasgen11 -lcore11 -lskgxn2 -loraz -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 - lsnls11 -lunls11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 - lnls11 -lcore11 -lnls11 -laio `cat /u01/app/oracle/product/11.1.0/db_1/lib/sysliblist` -Wl,- rpath,/u01/app/oracle/product/11.1.0/db_1/lib -lm `cat /u01/app/oracle/product/11.1.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.1.0/db_1/lib test ! -f /u01/app/oracle/product/11.1.0/db_1/bin/oracle ||\ mv -f /u01/app/oracle/product/11.1.0/db_1/bin/oracle /u01/app/oracle/product/11.1.0/db_1/bin/oracleO mv /u01/app/oracle/product/11.1.0/db_1/rdbms/lib/oracle /u01/app/oracle/product/11.1.0/db_1/bin/oracle chmod 6751 /u01/app/oracle/product/11.1.0/db_1/bin/oracle 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-32 $ cd $HOME/solutions/OP $ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jul 27 19:47:48 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to an idle instance. SQL> startup; ORACLE instance started. Total System Global Area 292933632 bytes Fixed Size 1298204 bytes Variable Size 155189476 bytes Database Buffers 130023424 bytes Redo Buffers 6422528 bytes Database mounted. Database opened. SQL> select * from mysql_is_great; select * from mysql_is_great; * ERROR at line 1: ORA-00942: table or view does not exist SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Oracle Label Security, OLAP, Data Mining and Real Application Testing options $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 1-4:使用热补丁(续) Oracle Database 11g:面向管理员的新增功能 A-33 9) 在以 oracle 用户身份连接的终端窗口中,使用以下命令重新启动 Enterprise Manager Database Control: emctl start dbconsole $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0 Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved. https://…:5500/em/console/aboutApplication Starting Oracle Enterprise Manager 11g Database Control ........ started. -------------------------------------------------------------- ---- Logs are generated in directory /u01/app/oracle/product/11.1.0/db_1/edcdr12p1_orcl/sysman/log $ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-34 第 2 课的练习 在本练习中,将使用一些 ASM 增强功能。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-35 练习 2-1:ASM 快速镜像再 同步在本练习中,将比较在出现非数据问题(与磁盘上的数据不相关的故障)后添 加脱机磁盘(已脱机的磁盘)所用的时间。比较相同的操作,一次不使用 ASM 快 速镜像再同步,一次使用 ASM 快速镜像再同步。 1) 确定现有 ASM 磁盘组的兼容值。会看到什么结果? a) 应看到这两个兼容值都设置为 10.1。 export ORACLE_SID=+ASM export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus / as sysdba select name,compatibility,database_compatibility from v$asm_diskgroup; exit 2) 使用 Enterprise Manager,导航到 DATA 磁盘组页。 a) 以 SYS 用户身份连接到 Enterprise Manager Database Control。应该使用类似 于以下内容的 URL(如果是第一次访问 EM URL,请在出现的安全预警窗 口中单击“accept(接受)”。): https://edrsr14p1.us.oracle.com:5500/em/ b) 单击“Server(服务器)”选项卡,然后单击“Storage(存储)”部分中的 “Migrate to ASM(移植到 ASM)”链接。在“Migrate to ASM(迁移到 ASM)”页上,输入 oracle 作为 SYS 口令,输入 oracle/oracle 作为主 机身份证明。选中“Save as Preferred Credential(另存为首选身份证明)”复 选框。单击“Continue(继续)”。在向导的第二个步骤中,单击“Cancel (取消)”。这样可确保 ASM 链接显示在目标页上(请参阅下一步骤)。 c) 在主页上,单击“General(一般信息)”部分中的“Host(主机)”链接。 d) 在“Host(主机)”页上,单击“Targets(目标)”选项卡。 e) 在“Targets(目标)”子页上,单击 +ASM 链接。 f) 在 ASM 主页上,单击“Disk Groups(磁盘组)”选项卡。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 2-1:ASM 快速镜像再(续) Oracle Database 11g:面向管理员的新增功能 A-36 g) 如果显示“Automatic Storage Management Login(自动存储管理登录)” 页,则在“Username(用户名)”字段中输入 sys,在“Password(口 令)”字段中输入 oracle,在“Connect As(连接身份)”字段中选择 “SYSDBA”。选中“Save as Preferred Credential(另存为首选身份证 明)”复选框,然后单击“Login(登录)”。在 ASM 主页上,单击“Disk Groups(磁盘组)”选项卡。 h) 在“Disk Groups(磁盘组)”页上,单击表中的 DATA 链接。 3) 使用 Enterprise Manager Database Control,更改 DATA 磁盘组的数据库兼容性 属性和 ASM 兼容性属性。将上述两个属性都设置为 11.1.0.0.0。更改这两个参 数后,会看到什么结果? a) 在“Disk Group: DATA General(磁盘组:DATA 一般信息)”子页上,单 击“Advanced Attributes(高级属性)”部分中的“Edit(编辑)”。 b) 在“Edit Advanced Attributes for Disk Group: DATA(编辑磁盘组的高级属 性:DATA)”页上,在“Database Compatibility(数据库兼容性)”和 “ASM Compatibility(ASM 兼容性)”字段中输入 11.1.0.0.0。单击 “Apply(应用)”。 c) 返回“Disk Group: DATA General(磁盘组:DATA 一般信息)”子页, 确保可以看到两个字段均已更新,并且在“Advanced Attributes(高级属 性)”部分能够看到新的“Disk Repair Time(磁盘修复时间)”属性。 应该还能看到大约 55% 的磁盘空间已被占用。 4) 使用 SQL*Plus 验证上述更新已得到正确执行(完成此步骤后,确保已将 ORACLE_SID 设置为 orcl): a) 在以 oracle 用户身份连接的终端窗口中,启动 SQL*Plus,然后查看 V$ASM_ATTRIBUTE: export ORACLE_SID=+ASM export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus / as sysdba select name,compatibility,database_compatibility from v$asm_diskgroup; select * from v$asm_attribute; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 2-1:ASM 快速镜像再(续) Oracle Database 11g:面向管理员的新增功能 A-37 exit; export ORACLE_SID=orcl; 5) 执行 asm_setup.sh 脚本(位于 /home/oracle/solutions/ASM 目录 中)以设置此练习的环境。该脚本使用一个 50 MB 的文件在 DATA 磁盘组中 新建一个名为 TBSJFV 的表空间。然后,在新的表空间中新建一个名为 SYSTEM.JFV 的表。接下来,该脚本在新创建的表中插入几行。 $ cd /home/oracle/solutions/ASM $ ./asm_setup.sh -------------------------------------------------------------- #!/bin/bash export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus system/oracle < backup tablespace tbsjfv; Starting backup at 30-APR-07 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=122 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00006 name=+DATA/orcl/datafile/tbsjfv.256.621260541 channel ORA_DISK_1: starting piece 1 at 30-APR-07 channel ORA_DISK_1: finished piece 1 at 30-APR-07 piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007 _04_30/o1_mf_nnndf_TAG20070430T125154_33dl6vdr_.bkp tag=TAG20070430T125154 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 30-APR-07 RMAN> exit; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 2-2:ASMCMD 扩展(续) Oracle Database 11g:面向管理员的新增功能 A-42 3) 使用 ASMCMD 在 DATA 磁盘组中创建名为 jfv 的新目录。完成后,创建名 为“+DATA/jfv/mytbs.f”的别名,指向用于存储 TBSJFV 表空间的文件。 export ORACLE_SID=+ASM asmcmd mkdir +DATA/jfv cd +DATA/ORCL/DATAFILE ls ASMCMD> ls TBSJFV.256.629752185 ASMCMD> -- replace alias name with output from previous command mkalias TBSJFV.256.629752185 +DATA/jfv/mytbs.f cd +data/jfv ls ASMCMD> ls mytbs.f ASMCMD> 4) 使用 ASMCMD 为 DATA 磁盘组备份 ASM 元数据: ASMCMD> md_backup -g data Disk group to be backed up: DATA Current alias directory path: jfv ASMCMD> exit; 5) 使用 SQL*Plus,删除 DATA 磁盘组及其内容(如果无法删除,请关闭/启动 orcl 实例,然后删除该磁盘组。另一个选择是强制卸装该磁盘组,然后强制将 其删除): export ORACLE_SID=+ASM sqlplus / as sysdba alter diskgroup data dismount force; drop diskgroup data force including contents; exit 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 2-2:ASMCMD 扩展(续) Oracle Database 11g:面向管理员的新增功能 A-43 6) 将 DATA 磁盘组还原为执行了步骤 3(上一步骤)后的状态(可以忽略 ORA-600 或编辑生成的文件以删除 AU_SIZE 行,然后删除磁盘组并运行 md_restore 命令): a) 在执行步骤 5 的过程中,将在当前目录中生成名为 ambr_backup_intermediate_file 的文件。编辑此文件以删除与 AU_SIZE 条目相对应的行。完成后,保存该文件,并使用 ASMCMD 运行 使用新版本文件的 mb_restore 命令。完成后,使用 RMAN 还原表空间。 asmcmd ASMCMD> md_restore -b ambr_backup_intermediate_file -t full -g data Disk group to be restored: DATA# ASMCMDAMBR-09358, Option -t newdg specified without any override options. Current Diskgroup being restored: DATA Diskgroup DATA created! Attribute DISK_REPAIR_TIME created! System template ASM_STALE modified! System template FLASHBACK modified! System template ARCHIVELOG modified! System template BACKUPSET modified! System template XTRANSPORT modified! System template DATAGUARDCONFIG modified! System template CONTROLFILE modified! System template AUTOBACKUP modified! System template DUMPSET modified! System template ONLINELOG modified! System template PARAMETERFILE modified! System template TEMPFILE modified! System template CHANGETRACKING modified! System template DATAFILE modified! Directory +DATA/jfv re-created! ASMCMD> exit; export ORACLE_SID=orcl rman TARGET / restore tablespace tbsjfv; RMAN> restore tablespace tbsjfv; Starting restore at 30-APR-07 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 2-2:ASMCMD 扩展(续) Oracle Database 11g:面向管理员的新增功能 A-44 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=123 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00006 to +DATA/orcl/datafile/tbsjfv.256.621260541 channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2007_04_30/ o1_mf_nnndf_TAG20070430T125154_33dl6vdr_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2007 _04_30/o1_mf_nnndf_TAG20070430T125154_33dl6vdr_.bkp tag=TAG20070430T125154 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 Finished restore at 30-APR-07 RMAN> exit; 7) 使用 SQL*Plus,检查 SYSTEM.JFV 中的行数,确认还原操作已顺利完成。完 成后,删除 TBSJFV 表空间及其内容: sqlplus system/oracle alter tablespace tbsjfv online; select count(*) from jfv; drop tablespace tbsjfv including contents and datafiles; exit; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-45 第 3 课的练习 在本练习中,将在一个升级方案中使用 SQL 性能分析器,在该方案中,您希望在 升级 10g 数据库之前测试某些 SQL 语句。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-46 练习 3-1:SPA 升级方案 在本练习中,您将从 10g 数据库中导出 SQL 优化集 (STS),然后将其导回到 11g 测试环境。在该测试环境中,您将了解到在升级 10g 数据库之前导入的 SQL 语句 的性能。 1) 在 10g 环境内创建 STS 之前,停止 Enterprise Manager Database Control 并关闭 11g 数据库实例和 ASM 实例。这样可节省系统上的资源。使用 stop11g.sh 脚本执行此步骤。 $ cd /home/oracle/solutions/SPAbig $ ./stop11g.sh -------------------------------------------------------------- export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin rm /u01/app/oracle/admin/orcl/dpdump/appsandstage.dmp emctl stop dbconsole sqlplus / as sysdba < 'STS_JFV'); dbms_sqltune.capture_cursor_cache_sqlset( sqlset_name => 'STS_JFV' , basic_filter=> q'# module like 'DWH_TEST%' and sql_text not like '%applicat%' and parsing_schema_name in ('APPS') #' , time_limit => 12*60, repeat_interval => 5); end ; / show errors FIN! 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 3-1:SPA 升级方案(续) Oracle Database 11g:面向管理员的新增功能 A-49 4) (同时执行步骤 3 和 4)在以 oracle 用户身份连接的第二个终端窗口中, 使用 wrkl10g_jfv.sh 脚本执行工作量。该脚本运行 45 个语句的工作量, STS_JFV 会自动捕获这些语句: -- Second session $ cd /home/oracle/solutions/SPAbig $ ./wrkl10g_jfv.sh … SQL> @6 Results in 1296 Ticks SQL> SQL> SQL> SQL> @Statement 45 SQL> SQL> SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 10 rows selected. Elapsed: 00:00:30.24 Statistics ---------------------------------------------------------- 92 recursive calls 0 db block gets 6871559 consistent gets 10770 physical reads 116 redo size 2003 bytes sent via SQL*Net to client 3147 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 10 rows processed SQL> @10 Results in 1188 Ticks SQL> SQL> SQL> SQL> PL/SQL procedure successfully completed. SQL> SQL> we are done SQL> SQL> SQL> SQL> @End 2007:JUL-05:23:48:24 SQL> SQL> SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options [oracle@edcdr12p1 SPAbig]$ 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 3-1:SPA 升级方案(续) Oracle Database 11g:面向管理员的新增功能 A-50 5) 大约八分钟后,这两个会话就会完成。检查 STS_JFV 的内容,并将其存放在 名为 APPS.STS_JFV_TAB 的表中。使用 stage_sts.sh 脚本执行此步骤。 $ cd /home/oracle/solutions/SPAbig $ ./stage_sts.sh -------------------------------------------------------------- #!/bin/ksh export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export ORACLE_SID=db10g export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/usr/java/jdk1.5. 0_11/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin sqlplus / as sysdba < 40 order by prod_id; 4) 由于是首次见到此 SQL 语句,并且该语句尚不可重复,因此,该语句没有计划 基线。要确认这一点,可以检查是否未加载计划基线。请检查该语句是否存在 计划基线(使用 check_baselines.sql 脚本): -- Should not return any rows @check_baselines.sql -------------------------------------------------------------- select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; 5) 重新执行在步骤 3 中运行的查询: @query1.sql -------------------------------------------------------------- select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-62 6) 现在已知 SQL 语句是可重复的,并已自动捕获了计划基线。请检查是否为以前 的语句加载了计划基线。会看到什么结果? a) 在输出中可以看到已为此 SQL 语句创建并启用计划基线。通过查看起始列 中的值还可以识别出此计划是自动捕获的(使用 check_baselines.sql 脚本): -- You should see one accepted entry @check_baselines.sql -------------------------------------------------------------- select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; 7) 现在,将优化程序模式改为使用 FIRST_ROWS 优化,然后重新执行该语句。描 述发生的情况: a) 这会导致使用另一个计划执行 SQL 语句: alter session set optimizer_mode = first_rows; @query1.sql -------------------------------------------------------------- select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; b) 由于 SQL 语句将拥有一个新计划,因此将自动捕获另一计划基线。可以通 过再次检查该计划基线对此进行确认: @check_baselines.sql -------------------------------------------------------------- select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; c) 现在可以看到查询具有两个计划基线,但请注意,第二个计划尚未被接受。 这一新计划必须先通过验证,然后才能被接受作为有效计划使用。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-63 8) 现在,将优化程序模式重置为默认值,并禁用自动捕获计划基线。 alter session set optimizer_mode = all_rows; alter session set optimizer_capture_sql_plan_baselines = FALSE; 9) 现在清除计划基线,并确认此 SQL 计划基线为空。使用 purge_auto_baseline.sql 实现此操作: @purge_auto_baseline -------------------------------------------------------------- variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_6fe28d438dfc352f'); exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_396e2e2b6cb3e334'); select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; 10) 接下来,查看如何从 SQL 优化集加载计划。仍然连接到 SQL*Plus 会话,并检 查以下 SQL 语句的执行计划,然后执行该语句(使用 explain_query2.sql 和 query2.sql): 从 sh.sales(按 prod_id 排序大于 40 的 quantity_sold)选择 /*LOAD_STS*/ *; @explain_query2.sql @query2.sql -------------------------------------------------------------- explain plan for select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic')); -- You should see a Full Table Scan select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-64 11) 现在,将优化程序模式改为使用 FIRST_ROWS 优化,检查执行计划,然后重新 执行该查询: alter session set optimizer_mode = first_rows; @explain_query2.sql @query2.sql -------------------------------------------------------------- explain plan for select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; -- You should see a different plan (Table Access By Local Index) select * from table(dbms_xplan.display(null, null, 'basic')); select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; 12) 将优化程序模式重置为 ALL_ROWS 优化: alter session set optimizer_mode = all_rows; 13) 检查语句当前是否没有基线计划(使用 check_baselines2.sql 脚本): @check_baselines2.sql -------------------------------------------------------------- show parameter baseline -- Should not return any rows select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_STS*/%'; 14) 创建 SQL 优化集,用于捕获包含 LOAD_STS 提示的 SELECT 语句。这些语句 位于游标高速缓存中,STS 应称为 SPM_STS,并归 SPM 用户所有。使用 catchup_sts.sql 脚本捕获这些语句。 @catchup_sts -------------------------------------------------------------- exec sys.dbms_sqltune.create_sqlset(sqlset_name => 'SPM_STS', sqlset_owner => 'SPM'); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-65 DECLARE stscur dbms_sqltune.sqlset_cursor; BEGIN OPEN stscur FOR SELECT VALUE(P) FROM TABLE(dbms_sqltune.select_cursor_cache( 'sql_text like ''select /*LOAD_STS*/%''', null, null, null, null, null, null, 'ALL')) P; -- populate the sqlset dbms_sqltune.load_sqlset(sqlset_name => 'SPM_STS', populate_cursor => stscur, sqlset_owner => 'SPM'); END; / 15) 确认 SPM_STS 中包含哪些 SQL 语句(使用 check_sts.sql 脚本): a) 因此,SPM_STS 包含带有两个不同计划的 SQL 语句。 @check_sts.sql -------------------------------------------------------------- select sql_text from dba_sqlset_statements where sqlset_name = 'SPM_STS'; 16) 使用从 SPM_STS 中找到的计划填充计划基线资料档案库。使用 populate_baseline.sql 脚本执行此操作: @populate_baseline -------------------------------------------------------------- set echo on variable cnt number; execute :cnt := dbms_spm.load_plans_from_sqlset( - sqlset_name => 'SPM_STS', - basic_filter => 'sql_text like ''select /*LOAD_STS*/%'''); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-66 17) 确认已加载计划基线,并记下起始列中的值。会看到什么结果?(使用 check_baselines2.sql。) a) 因为是以手动方式加载这些计划,所以应看到 MANUAL-LOAD。另请注意两 个计划此次都被接受。 @check_baselines2.sql -------------------------------------------------------------- select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_STS*/%'; 18) 清除计划基线,然后删除 SPM_STS。使用 purge_sts_baseline.sql 脚本 执行此操作: @purge_sts_baseline -------------------------------------------------------------- set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_a8632bd857a4a25e'); print cnt; select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_STS*/%'; exec sys.dbms_sqltune.drop_sqlset(sqlset_name => 'SPM_STS', - sqlset_owner => 'SPM'); 19) 现在,将看到如何从游标高速缓存直接加载计划基线。开始之前,需要一些 SQL 语句。仍然连接到 SQL*Plus 会话,并检查以下 SQL 语句的执行计划, 然后执行该计划(使用 explain_query3.sql 和 query3.sql 脚本): 从 sh.sales(按 prod_id 排序大于 40 的 quantity_sold)选择 /*LOAD_CC*/ *; @explain_query3.sql @query3.sql 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-67 -------------------------------------------------------------- explain plan for select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic')); select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; 20) 现在,将优化程序模式更改为使用 FIRST_ROWS 优化,然后重新执行上一步 骤。会看到什么结果? a) 应看到一个不同的执行计划: alter session set optimizer_mode = first_rows; @explain_query3.sql @query3.sql -------------------------------------------------------------- explain plan for select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic')); select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; 21) 将优化程序模式重置为 ALL_ROWS: alter session set optimizer_mode = all_rows; 22) 现在已填充好游标高速缓存,需要为 SQL 语句获取 SQL ID。使用 SQL ID 筛 选游标高速缓存的内容,然后加载具有这两个计划的基线。使用 load_cc_baseline.sql 脚本执行此操作: @load_cc_baseline -------------------------------------------------------------- set echo on variable cnt number; variable sqlid varchar2(20); begin 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-68 select distinct sql_id into :sqlid from v$sql where sql_text like 'select /*LOAD_CC*/%'; end; / print sqlid; execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); 23) 确认基线已得以加载(使用 check_baselines3.sql): @check_baselines3.sql -------------------------------------------------------------- -- You should see two accepted baselines select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_CC*/%'; 24) 清除计划基线: @purge_cc_baseline -------------------------------------------------------------- set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_f6cb7f742ef93547'); print cnt; Check that plan baselines were purged: select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_CC*/%'; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-69 25) 既然已了解了如何捕获计划,下面就来看一下优化程序是如何选择要使用的计 划基线的。首先,为一个语句创建两个基线,并将其显示为正在使用中。然后 禁用其中一个基线,并查看正在使用中的另一个基线。最后禁用这两个基线, 现在会看到优化程序回到基于成本的计划的默认行为。首先使用两个不同的计 划执行同一查询。确定执行以下语句,然后执行该语句(使用 explain_query4.sql 和 query4.sql 脚本): 从 sh.sales(按 prod_id 排序大于 40 的 quantity_sold)选择 /*SPM_USE*/ * @explain_query4.sql @query4.sql -------------------------------------------------------------- explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic')); select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; 26) 现在,将优化程序模式更改为使用 FIRST_ROWS 优化,然后重新执行上一步 骤。会看到什么结果? a) 应看到一个不同的执行计划: alter session set optimizer_mode = first_rows; @explain_query4.sql @query4.sql -------------------------------------------------------------- explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic')); select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-70 27) 将优化程序模式重置为 ALL_ROWS: alter session set optimizer_mode = all_rows; 28) 直接从游标高速缓存用语句的两个计划填充基线。使用 load_use_baseline.sql 脚本执行此操作。完成后,确认基线已得以加 载。会看到什么结果? a) 应看到两个计划基线均已加载。请注意,这两个计划已标记为可接受。这是 因为这两个计划在加载时位于游标高速缓存中,并且已手动进行了加载,所 以认为这两个计划的性能是可接受的。 @load_use_baseline -------------------------------------------------------------- set echo on variable cnt number; variable sqlid varchar2(20); begin select distinct sql_id into :sqlid from v$sql where sql_text like 'select /*SPM_USE*/%'; end; / print sqlid; execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); print cnt; select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*SPM_USE*/%'; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-71 29) 确定用于执行以下查询的基线和执行计划: 从 sh.sales(按 prod_id 排序大于 40 的 quantity_sold)选择 /*SPM_USE*/ *。 会看到什么结果? a) 说明性输出内容结尾的注释表明系统正在使用基线。在执行计划中,可以看 到正在使用第一个基线(全表扫描)。使用 explain_query4_note.sql 脚本。 @explain_query4_note.sql -------------------------------------------------------------- explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic +note')); 30) 禁用该计划基线,并检查系统在重新执行该语句时是否使用了另一个计划基 线。使用 check_baseline_used.sql 脚本执行此操作。会看到什么结果? a) 现在,从该执行计划中,可以看到正在使用索引扫描而不是全表扫描,因此 这次使用的是第二个基线。 @check_baseline_used.sql -------------------------------------------------------------- set echo on variable cnt number; select sql_handle,plan_name from dba_sql_plan_baselines where sql_text like 'select /*SPM_USE*/%'; exec :cnt := dbms_spm.alter_sql_plan_baseline( - sql_handle => 'SYS_SQL_0a9d872600ece455', - plan_name => 'SYS_SQL_PLAN_00ece45554bc8843', - attribute_name => 'ENABLED', - attribute_value => 'NO'); select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-72 where sql_text like 'select /*SPM_USE*/%'; explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic +note')); 31) 禁用另一计划基线,并检查重新执行该语句的解释计划时系统是否退回到基于 成本的方法。使用 check_baseline_used2.sql 脚本执行此操作: a) 该计划的末尾部分没有关于使用了基线的注释,由此可知,优化程序已退回 到基于成本的默认方法。 @check_baseline_used2 -------------------------------------------------------------- set echo on variable cnt number; exec :cnt := dbms_spm.alter_sql_plan_baseline( - sql_handle => 'SYS_SQL_0a9d872600ece455', - plan_name => 'SYS_SQL_PLAN_00ece45511df68d0', - attribute_name => 'ENABLED', - attribute_value => 'NO'); select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*SPM_USE*/%'; explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; select * from table(dbms_xplan.display(null, null, 'basic +note')); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-73 32) 删除计划基线,然后检查这些基线是否已得到清除。使用 purge_use_baseline.sql 脚本执行此操作。 @purge_use_baseline -------------------------------------------------------------- set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_0a9d872600ece455'); print cnt; select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*SPM_USE*/%'; 33) 启用计划演化(或计划验证)的一种方法是在维护窗口中使用作为自动任务运 行的自动 SQL 优化。自动 SQL 优化仅适用于高负载的 SQL 语句,它会自动对 这些语句执行操作,如将已成功验证的计划设置为可接受的计划。此时,可以 手动触发 SQL 优化为给定的 SQL 语句查找更好的计划。首先,确定以下语句 的执行计划: select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id 我们已对这些语句添加了一些优化程序提示,以确保先得到一个非最佳的计 划。使用 check_evolve_plan.sql 脚本执行此操作。会看到什么结果? a) 您可以看到,提示将执行计划强制定为两个全表扫描,后跟一个嵌套循环 联接。 @check_evolve_plan -------------------------------------------------------------- explain plan for select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id; select * from table(dbms_xplan.display(null, null)); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-74 34) 立即执行该语句,以便获取游标高速缓存中的计划并加载相应的计划基线。使 用 load_evolve_baseline.sql 脚本执行此操作。会看到什么结果? a) 可以看到当前计划已启用并被接受,但是尚未修复。 @load_evolve_baseline -------------------------------------------------------------- set echo on variable cnt number; variable sqlid varchar2(20); select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id; begin select sql_id into :sqlid from v$sql where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; end; / execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-75 35) 手动创建并执行 SQL 优化任务以优化您的语句。使用 tune_evolve_sql.sql 脚本执行此操作。 @tune_evolve_sql -------------------------------------------------------------- set echo on variable sqltext varchar2(4000); BEGIN :sqltext := q'# select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id #'; END; / variable spmtune varchar2(30); exec :spmtune := dbms_sqltune.create_tuning_task(sql_text => :sqltext); exec dbms_sqltune.execute_tuning_task(:spmtune); 36) 现在,已完成了优化任务,请运行报告并查看针对您的语句提出了哪些建议。 会看到什么结果? a) 存在以下两种建议:创建 SQL 概要文件或创建新索引。使用 report_evolve_tuning.sql 脚本。 @report_evolve_tuning.sql -------------------------------------------------------------- set echo on set long 10000 select dbms_sqltune.report_tuning_task(:spmtune, 'TEXT') from dual; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-76 37) 接受 SQL 优化指导建议的 SQL 概要文件。使用 accept_evolve_baseline.sql 脚本执行此操作。会发生什么情况? a) 接受概要文件会导致为语句创建新的 SQL 概要文件和计划基线。现在会看 到语句的两个基线。这两个基线均已启用并被接受。 注:一个是 MANUAL-LOAD,另一个是 MANUAL-SQLTUNE。 @accept_evolve_baseline -------------------------------------------------------------- set echo on select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; exec dbms_sqltune.accept_sql_profile(task_name => :spmtune, name => 'SPM_SQL_PROF'); select signature, category, name, sql_text from dba_sql_profiles where name like 'SPM%'; select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; 38) 确定执行语句时使用的计划。会看到什么结果? a) 下次执行查询时,查询将使用此计划基线和此 SQL 概要文件。使用 explain_query5.sql 脚本。 @explain_query5.sql -------------------------------------------------------------- explain plan for select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id; select * from table(dbms_xplan.display(null, null, 'basic +note')); 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 4-2:SQL 计划管理 (SPM)(续) Oracle Database 11g:面向管理员的新增功能 A-77 39) 执行 cleanup_spm.sql 脚本清除本练习的环境。 @cleanup_spm -------------------------------------------------------------- set echo on exec dbms_sqltune.drop_sql_profile(name => 'SPM_SQL_PROF'); exec :cnt := dbms_spm.drop_sql_plan_baseline('SYS_SQL_18a1ef14c17f5b75'); select signature, sql_handle,plan_name, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; select signature, category, name, sql_text from dba_sql_profiles where name like 'SPM%'; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-78 第 5 课的练习 在此练习中,您将使用一个小型应用程序更新一个表,将该应用程序作为数据库重 放会话的基础,从而将运行该练习所需的资源量降到最少。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 Oracle Database 11g:面向管理员的新增功能 A-79 练习 5-1:数据库重放网格方案 在此练习中,首先使用数据库重放捕获小型应用程序的工作量。然后自动重放该工 作量,以确保获得的结果与最初执行时的结果相同。接着,更改应用程序所用的基 本方案,并重放该方案以查看执行时间的差异。最后,重放工作量,但是这次是在 异步模式下进行。 1) 在开始本练习之前,需要设置其环境。执行 wcr_init_grid.sh 脚本。该脚 本调用名为 wcr_demo_init_grid.sql 的 SQL 脚本,创建新用户 JFV 和表 wcr_grid,后者代表一个 10x10 网格,其中每个单元都有颜色。首先,该脚 本对网格进行初始化,将所有单元都设置为黑色。 $ cd /home/oracle/solutions/DBReplay $ ./wcr_init_grid.sh -------------------------------------------------------------- #!/bin/bash # # Must be executed as user oracle # export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin $ORACLE_HOME/bin/sqlplus system/oracle < /home/oracle/solutions/DBReplay/wcr_demo_init_grid.sql -- wcr_demo_init_grid.sql SET ECHO ON SET FEEDBACK 1 SET NUMWIDTH 10 SET LINESIZE 80 SET TRIMSPOOL ON SET TAB OFF SET PAGESIZE 100 drop user jfv cascade; create user jfv identified by jfv default tablespace users temporary tablespace temp; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 5-1:数据库重放网格方案(续) Oracle Database 11g:面向管理员的新增功能 A-80 grant connect, resource, dba to jfv; connect jfv/jfv drop table wcr_grid purge; create table wcr_grid ( pixid number not null ,xcoor number not null ,ycoor number not null ,color varchar2(30) not null ,constraint wcr_grid_pk primary key (pixid) ); declare id number; x number; y number; c varchar2(100); begin x := 0; y := 0; id := 0; c := 'black'; for i in 1..10 loop for i in 1..10 loop insert into wcr_grid values (id, x, y, c); y := y + 1; id := id + 1; end loop; x := x + 1; y := 0; end loop; end; / commit; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 5-1:数据库重放网格方案(续) Oracle Database 11g:面向管理员的新增功能 A-81 2) 为确保练习的设置是正确的,请使用 wcr_printgrid.sh 脚本打印网格的当 前内容。会看到什么结果? a) 应该看到一个 10x10 网格,其中填满了 b。 $ cd /home/oracle/solutions/DBReplay $ ./wcr_printgrid.sh -------------------------------------------------------------- #!/bin/ksh # # wcr_printgrid.sh # export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin $ORACLE_HOME/bin/sqlplus jfv/jfv @/home/oracle/solutions/DBReplay/wcr_printgrid.sql -- wcr_printgrid.sql SET ECHO ON SET SERVEROUTPUT ON declare col varchar2(10); begin for i in 0..9 loop for j in 0..9 loop select substr(color,1,1) into col from wcr_grid where xcoor=i and ycoor=j; dbms_output.put(col||' '); end loop; dbms_output.put_line(''); end loop; end; / exit; 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 5-1:数据库重放网格方案(续) Oracle Database 11g:面向管理员的新增功能 A-82 3) 要使用数据库重放,需要创建一个 OS 目录,用于保存重放会话生成的所有文 件。在您的系统上创建 /home/oracle/solutions/dbreplay 目录(不是 DBReplay)。 rm -rf /home/oracle/solutions/dbreplay mkdir -p /home/oracle/solutions/dbreplay 4) 还需创建一个 Oracle 目录对象,用于指向前面创建的 OS 目录。 export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/u01/app/oracle/product/11.1.0/db_1/bin:/bin:/usr/bin:/us r/local/bin:/usr/X11R6/bin sqlplus system/oracle drop directory dbreplay; create or replace directory dbreplay as '/home/oracle/solutions/dbreplay'; exit; 5) 下面是使用数据库重放的分步过程: a) 以 SYS 身份登录到“EM DB Control(EM DB 控制)”主页,单击 “Software and Support(软件和支持)”选项卡。 b) 在“Software and Support(软件和支持)”子页上,单击“Real Application Testing(实际应用程序测试)”部分中的“Database Replay(数据库重 放)”链接。 c) 在“Database Replay(数据库重放)”页上,在“Capture Workload(捕获 工作量)”行的“Go to Task(转到任务)”列中单击“Capture Workload (捕获工作量)”图标。 d) 在“Capture Workload: Plan(捕获工作量:计划)”环境页中,确认所 有三个先决条件,然后单击“Next(下一步)”。 e) 在“Capture Workload: Options(捕获工作量:选项)”页上,确保在 “Database Restart Options(数据库重新启动选项)”部分中选择“Do not restart the database prior to capture(在捕获之前不重新启动数据库)”,并 确保将“Filter Mode(筛选器模式)”设置为“Exclusion(排除)”,同 时确保 Excluded Sessions 表包含 Oracle Management Service 和 Oracle Management Agent。单击“Next(下一步)”。 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。 练习 5-1:数据库重放网格方案(续) Oracle Database 11g:面向管理员的新增功能 A-83 f) 在“Capture Workload: Parameters(捕获工作量:参数)”页中,指定 “Capture Name(捕获名称)”(例如使用 capturegrid1)并选择先前 创建的“Capture Directory(捕获目录)”(DBREPLAY)。单击“Next (下一步)”。 g) 在“Capture Workload: Schedule(捕获工作量:调度)”页上,指定“Job Name(作业名)”(例如使用 capturegrid1_job)并从“Job Schedule (作业调度)”部分选择“Immediately(立即执行)”。 h) 在“Job Credentials(作业身份证明)”部分,为“Host Credentials(主机身 份证明)”输入 oracle/oracle,然后选择“Save as Preferred Credentials (另存为首选身份证明)”。单击“Next(下一步)”。在“Capture Workload: Review(捕获工作量:复查)”页中,单击“Submit(提交)”。 i) 等待“Processing: Workload Capture(正在处理:工作量捕获)”页。 j) 此时将转到“View Workload Capture(查看工作量捕获)”页,在该页中 可看到捕获会话处于“In Progress(正在进行)”状态。 k) 回到终端会话,执行 wcr_demo_workload.sh 脚本。此脚本生成可将 网格表随机更新为不同颜色(红色、绿色、蓝色、黑色、黄色、橙色和橙 红色)的数据库会话。此脚本的运行时间应该不超过两分钟。 $ cd /home/oracle/solutions/DBreplay $ ./wcr_demo_workload.sh -------------------------------------------------------------- #!/bin/bash # # Must be executed as user oracle # cd /home/oracle/solutions/DBReplay export ORACLE_SID=orcl export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 export PATH=/usr/java/jdk1.5.0_11/bin:/u01/app/oracle/product/11.1.0/ db_1/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin export CLASSPATH=.:$ORACLE_HOME/jdbc/lib/ojdbc5.jar:$ORACLE_HOME/jlib /orai18n.jar export LD_LIBRARY_PATH=$ORACLE_HOME/lib 更多电子书教程下载请登陆http://down.zzbaike.com/ebook 本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。
还剩351页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf