486
Oracle Database 10g数据库管理 - 课堂练习 II 学生指南第 1 D17092CN31 版本 3.1 2009 8 D61384 厦门微思ORACLE授权培训中心 http://www.xmws.cn

 · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

Page 1:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II

学生指南第 1 册

D17092CN31

版本 3.1

2009 年 8 月

D61384厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 2:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

免责声明

本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本文档,但只能在 Oracle 培训课程中使用。不得以任何方式修改或变更本文档。除了在

依照版权法中制定的“合理使用”范围内使用本文档外,在未经 Oracle 明确授权的

情况下,您不得以全部或部分的形式使用、共享、下载、上载、复制、打印、显示、

展示、再版、发布、许可、张贴、传播或散布本文档。

本文档中包含的信息如有更改,恕不另行通知。如果您在本文档中发现任何问题,请书面通知:Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA。Oracle 不保证本文档中没有错误。

有限权利声明

如果将本文档交付给美国政府或代表美国政府使用本文档的任何人,则适用以下通知中的规定:

U.S. GOVERNMENT RIGHTSThe U.S. Government’s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract.

商标声明

Oracle 是 Oracle 公司和(或)其分公司的注册商标。其它名称可能是其各自拥有者的

商标。

作者

Tom BestMaria Billings

技术撰稿人和审稿人

Herbert BradburyHoward BradleyHarald van BreederodeM.J. BryksaDonna CookseyJoe FongAndy FortunakGerlinde FrenzenJoel GoodmanBert van GorkomSushma JagannathChristine JealDonna KeeslingPierre LabrousseJerry LeeStefan LindbladWendy LoYi LuClaudia O'CallaghanAndreas ReinhardtIra SingerJames SpillerJanet SternJean-Francois Verrier

编辑

Aju KumarNita PavitranArijit Ghosh

制图员

Steve Elwood

出版商

Joseph FernandezSujatha Nagendra

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 3:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

iii

目录 前言 1 简介

课程目标 1-2 建议计划 1-4 DBAI 课程中介绍的内容 1-5 课程示例:HR 方案 1-6 Oracle Database 10g:为网格计算设计的数据库 1-7 数据库体系结构:概述 1-8 Oracle 内存结构 1-9 Oracle 进程 1-11 概述 Oracle 实例管理 1-12 物理数据库结构 1-14 Oracle Managed Files (OMF) 1-16 逻辑和物理数据库结构 1-17 数据库体系结构:结构组件汇总 1-19 小结 1-20

2 配置 Oracle Recovery Manager

课程目标 2-2 备份和恢复:概述 2-3 Oracle Recovery Manager 的功能 2-4 Oracle Recovery Manager 组件 2-6 配置 RMAN 的步骤 2-8 RMAN 资料档案库数据存储:选项比较 2-9 备份目标 2-11 介质管理 2-12 将快速恢复区与 RMAN 配合使用 2-14 使用 EM 监视快速恢复区 2-16 快速恢复区的空间使用 2-17 V$FLASH_RECOVERY_AREA_USAGE 2-18 备份快速恢复区 2-20

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 4:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

iv

使用快速恢复区的优点 2-21 设置影响 RMAN 的参数 2-22 RMAN 使用注意事项 2-24 RMAN 的连接类型 2-25 启动 RMAN 2-26 其它 RMAN 命令行参数 2-27 配置 RMAN 的永久性设置 2-28 使用 EM 配置 RMAN 设置 2-29 控制文件自动备份 2-30 保留策略 2-32 管理永久性设置 2-34 通道分配 2-35 自动和手动通道分配 2-36 通道控制选项 2-37 小结 2-39 练习概览:配置 RMAN 2-40

3 使用 Recovery Manager

课程目标 3-2 发出 Oracle Recovery Manager 命令 3-3 RMAN 命令的类型 3-5 作业命令:示例 3-6 RMAN 命令:概览 3-7 BACKUP 命令 3-9 备份约束条件 3-10 并行备份集 3-11 压缩备份 3-13 映像副本 3-14 备份和映像副本的标记 3-16 BACKUP 命令选项 3-17 备份归档重做日志 3-19 数据库整体备份 3-21 RMAN 备份类型 3-23 差异与累积 3-25 块更改跟踪 3-26 启用块更改跟踪 3-27

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 5:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

v

增量更新备份 3-28 LIST 命令 3-29 REPORT 命令 3-30 REPORT NEED BACKUP 命令 3-31 REPORT NEED BACKUP:示例 3-32 REPORT OBSOLETE 和 DELETE OBSOLETE 3-33 使用 EM 管理备份 3-34 RMAN 动态视图 3-35 监视 RMAN 备份 3-37 小结 3-39 练习概览:备份数据库 3-40

4 恢复不太严重的损失

课程目标 4-2 文件丢失的原因 4-3 关键性与非关键性 4-4 丢失 TEMPFILE 4-5 恢复 TEMPFILE 丢失 4-6 日志组状态:概述 4-7 丢失重做日志组成员 4-8 重新创建重做日志文件 4-9 重新创建索引 4-13 数据库管理员的验证方法 4-15 重新创建口令验证文件 4-16 小结 4-18 练习概览:恢复丢失的 TEMPFILE 和重做日志文件 4-19

5 数据库恢复

课程目标 5-2 恢复方法 5-3 用户管理的恢复:RECOVER 命令 5-4 RMAN 恢复:RESTORE 和 RECOVER 命令 5-5 使用 Oracle Enterprise Manager 进行恢复 5-6 完全恢复与不完全恢复 5-7 完全恢复过程 5-8 不完全恢复过程 5-9

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 6:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

vi

需要不完全恢复的情况 5-11 不完全恢复的类型 5-12 执行用户管理的不完全恢复 5-14 用户管理的基于时间的恢复:示例 5-16 用户管理的基于取消的恢复:示例 5-18 使用 RMAN 执行不完全恢复 5-20 使用 RMAN 的基于时间的恢复:示例 5-21 使用 RMAN 的日志序列恢复:示例 5-23 使用 Oracle Enterprise Manager 的不完全恢复 5-24 不完全备份和预警日志 5-25 还原点 5-26 不完全恢复: 佳方案 5-27 恢复控制文件自动备份 5-29 创建新的控制文件 5-31 恢复只读表空间 5-33 只读表空间恢复问题 5-35 小结 5-37 练习概览:执行不完全恢复 5-38

6 闪回 课程目标 6-2 闪回技术:概述 6-3 闪回删除和回收站 6-4 回收站 6-5 从回收站还原表 6-7 回收站:自动回收空间 6-8 回收站:手动回收空间 6-10 不使用回收站 6-11 查询回收站 6-12 查询已删除的表中的数据 6-13 闪回数据库:概述 6-14 闪回数据库体系结构 6-15 配置闪回数据库 6-16 使用 EM 配置闪回数据库 6-17 闪回数据库:示例 6-19 使用 EM 执行闪回数据库 6-20

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 7:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

vii

闪回数据库注意事项 6-23 监视闪回数据库 6-25 使用 EM 监视闪回数据库 6-27 可靠还原点 6-28 小结 6-29 练习概览:执行闪回数据库 6-30

7 处理数据库损坏

课程目标 7-2 什么是块损坏 7-3 块损坏故障现象:ORA-01578 7-4 如何处理损坏 7-5 与损坏相关的功能 7-7 DBVERIFY 实用程序 7-8 解释 DBVERIFY 输出 7-9 ANALYZE 命令 7-11 实时验证块完整性:DB_BLOCK_CHECKING 7-12 实时验证块完整性:DB_BLOCK_CHECKSUM 7-13 使用 EXP 检测损坏 7-14 使用闪回检查逻辑损坏 7-15 DBMS_REPAIR 程序包 7-16 使用 DBMS_REPAIR 7-17 块介质恢复 (BMR) 7-21 BLOCKRECOVER 命令 7-22 使用 BLOCKRECOVER 的示例 7-23 RMAN BMR 接口 7-25 可以采用的替代操作 7-26 小结 7-27 练习概览:执行块介质恢复 7-28

8 监视和管理内存

课程目标 8-2 内存管理:概览 8-3 Oracle 内存结构 8-4 缓冲区高速缓存 8-6 使用多个缓冲区池 8-8

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 8:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

viii

共享池 8-10 大型池 8-11 Java 池 8-12 重做日志缓冲区 8-13 自动管理共享内存:概览 8-14 自动管理共享内存的好处 8-15 ASMM 的工作原理 8-16 使用 Database Control 配置 ASMM 8-17 手动配置 ASMM 8-18 自动优化的 SGA 参数的行为 8-21 手动优化的 SGA 参数的行为 8-22 使用 V$PARAMETER 视图 8-23 修改 SGA_TARGET 参数 8-24 禁用 ASMM 8-25 手动调整动态 SGA 参数的大小 8-26 程序全局区 (PGA) 8-27 自动 PGA 内存管理 8-29 PGA 管理资源 8-30 使用内存指导调整 SGA 的大小 8-31 使用内存指导调整 PGA 的大小 8-32 有效使用内存:准则 8-33 库高速缓存的内存优化准则 8-35 小结 8-37 练习概览:使用 ASMM 纠正内存分配问题 8-38

9 自动性能管理 课程目标 9-2 优化活动 9-3 性能规划 9-4 实例优化 9-6 性能优化方法 9-7 收集统计信息 9-8 Oracle 等待事件 9-10 系统统计信息 9-11 显示与会话有关的统计信息 9-13 显示与服务有关的统计信息 9-14

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 9:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

ix

故障排除和优化视图 9-15 字典视图 9-16 诊断挂起或速度异常慢的数据库 9-17 使用内存访问模式 9-18 使用挂起分析页 9-19 自动工作量资料档案库 9-21 AWR 快照基线 9-23 指导框架:概览 9-24 Database Control 和指导 9-26 典型的指导优化会话 9-27 手动调用 ADDM 9-28 使用 SQL 优化指导:概述 9-29 SQL 访问指导:概览 9-30 典型的 SQL 访问指导会话 9-31 工作量来源 9-32 建议选项 9-33 复查建议 9-36 异步 COMMIT 9-37 使用异步 COMMIT 9-38 小结 9-39 练习概览:使用 ADDM 诊断性能问题 9-40

10 管理方案对象

课程目标 10-2 表类型 10-3 什么是分区,为什么使用分区 10-4 分区 10-5 创建分区 10-6 分区方法 10-7 分区维护 10-8 按索引组织的表 10-9 按索引组织的表和堆表 10-10 创建按索引组织的表 10-12 簇 10-13 簇类型 10-14 簇的应用场合 10-16

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 10:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

x

已排序的散列簇:概览 10-17 已排序的散列簇:示例 10-18 已排序的散列簇:基本体系结构 10-19 方案管理任务 10-20 估计资源使用量 10-21 分析增长趋势 10-22 管理优化程序统计信息 10-23 联机重组方案对象 10-24 重组对象:效果报告 10-26 重组对象:概述 10-27 手动联机重组的基本步骤 10-28 小结 10-29 练习概览:管理方案对象 10-30

11 管理存储

课程目标 11-2 空间管理:概览 11-3 空闲空间管理 11-4 段的类型 11-5 分配区 11-6 块空间管理 11-7 行链接和移植 11-8 预先表空间监视 11-9 阈值和解决空间问题 11-10 监视表空间的空间使用量 11-11 收缩段 11-12 收缩操作的结果 11-13 使用 ASSM 回收空间 11-14 段指导:概览 11-15 段指导 11-16 实施建议 11-18 数据库控制和段收缩 11-19 使用 SQL 收缩段 11-20 管理可恢复的空间分配 11-21 使用可恢复的空间分配 11-22 恢复挂起的语句 11-24

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 11:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xi

移动表空间 11-26 概念: 低兼容级别 11-27 可移动表空间过程 11-28 确定平台的 Endian 格式 11-29 移动数据库 11-30 数据库移动过程:源系统转换 11-31 数据库移动过程:目标系统转换 11-32 数据库移动:注意事项 11-33 小结 11-34 练习概览:管理存储 11-35

12 自动存储管理

课程目标 12-2 自动存储管理:概述 12-3 ASM 常规体系结构 12-5 ASM 实例任务 12-7 创建 ASM 实例 12-8 ASM 实例初始化参数 12-9 数据库实例参数更改 12-10 启动 ASM 实例 12-11 访问 ASM 实例 12-12 ASM 主页 12-14 ASM 性能页 12-15 ASM 配置页 12-16 关闭 ASM 实例 12-17 DBCA 和存储选项 12-19 ASM 存储:概念 12-20 ASM 磁盘组 12-21 故障组 12-22 磁盘组镜像 12-23 磁盘组动态重新平衡 12-24 管理磁盘组 12-25 ASM 管理页 12-26 “Create Disk Group(创建磁盘组)”页 12-27 创建和删除磁盘组 12-28 将磁盘添加至磁盘组 12-29

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 12:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xii

其它 ALTER 命令 12-30 ASM 文件 12-32 ASMCMD 实用程序 12-33 将数据库移植到 ASM 存储区 12-34 小结 12-35 练习概览:使用自动存储管理 12-36

13 管理资源

课程目标 13-2 数据库资源管理器:概览 13-3 数据库资源管理器概念 13-4 使用资源管理器的原因 13-5 访问资源计划 13-7 示例:SYSTEM_PLAN 13-8 创建新的资源计划 13-9 创建使用者组 13-10 将用户分配至使用者组 13-11 指定资源计划指令 13-12 资源计划的资源分配方法 13-13 EMPHASIS 和 RATIO 的比较 13-14 活动会话池机制 13-16 设置活动会话池 13-17

大估计执行时间 13-18 使用者组切换 13-19 调用结束时重新切换至初始使用者组 13-20 设置空闲超时 13-22 资源使用者组映射 13-23 激活实例的资源计划 13-25 数据库资源管理器信息 13-26 监视资源管理器 13-27 小结 13-30 练习概览:使用资源管理器 13-31

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 13:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xiii

14 使用调度程序自动执行任务 课程目标 14-2 简化管理任务 14-3 一个简单作业 14-4 主要组件和步骤 14-5 1. 创建程序 14-6 2. 创建并使用计划 14-7 3. 创建并运行作业 14-8 4. 监视作业 14-9 使用基于时间的或基于事件的计划 14-10 创建基于时间的作业 14-11 创建基于事件的调度 14-13 用 Enterprise Manager 创建基于事件的计划 14-14 创建基于事件的作业 14-15 基于事件的调度 14-16 创建复杂调度 14-18 创建作业链 14-19 链的示例 14-21 1. 创建链对象 14-22 2. 定义链步骤 14-23 3. 定义链规则 14-24 4. 启动链 14-25 监视作业链 14-26 高级调度程序概念 14-27 创建作业类 14-28 创建窗口 14-29 区分窗口内作业的优先级 14-30 小结 14-31 练习概览:使用调度程序自动执行任务 14-32

15 数据库安全性

课程目标 15-2 Oracle 透明数据加密 (TDE):概览 15-3 TDE 过程 15-5 实施透明数据加密 15-6 现有表和 TDE 15-9

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 14:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xiv

透明数据加密:注意事项 15-10 Wallet 对用户名和口令的支持 15-11 数据泵和透明数据加密 15-12 RMAN 加密备份:概览 15-13 透明模式设置 15-14 口令模式设置 15-15 双重模式设置 15-16 RMAN 加密的备份:注意事项 15-17 数据私密性的需要 15-18 术语定义和用法 15-19 虚拟专用数据库:概览 15-20 虚拟专用数据库:功能 15-21 列级 VPD:示例 15-22 创建列级策略 15-23 小结 15-24 练习概览:使用 Oracle 数据库安全性 15-25

16 使用全球化支持

课程目标 16-2 每个 DBA 必备的知识 16-3 什么是字符集 16-4 了解 Unicode 16-6 如何使用字符集 16-8 要避免的问题 16-9 其它问题示例 16-10 选择字符集 16-11 数据库字符集和国家字符集 16-12 获取字符集信息 16-13 指定基于语言的行为 16-14 为会话指定基于语言的行为 16-15 基于语言和基于地区的参数 16-16 指定基于语言的行为 16-18 语言搜索和排序 16-19 使用语言搜索和排序 16-21 不区分大小写和重音的搜索和排序 16-23 SQL 和函数支持的设置 16-24

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 15:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xv

语言索引支持 16-25 自定义语言搜索和排序 16-26 CLOB 和 NCLOB 之间的隐式转换 16-27 使用 Oracle 实用程序进行 NLS 数据转换 16-28 使用数据泵进行 NLS 数据转换 16-30 全球化支持功能 16-31 小结 16-32 练习概览:使用全球化支持功能 16-33

17 课堂练习

课程目标 17-2 课堂练习方法 17-3 业务要求 17-5 数据库配置 17-6 解决数据库问题的方法 17-7 小结 17-9 练习概览:课堂练习设置 17-10

附录 A:练习

附录 B:练习解答

附录 C:基本的 Linux 和 vi 命令

附录 D:缩写词和术语 附录 E:Oracle 共享服务器

课程目标 E-2 建立连接 E-3 专用服务器进程 E-4 用户会话 E-5 用户会话:专用服务器 E-6 用户会话:共享服务器 E-7 处理请求 E-8 SGA 和 PGA E-9 UGA 和 Oracle 共享服务器 E-10 配置 Oracle 共享服务器 E-11

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 16:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xvi

DISPATCHERS E-12 SHARED_SERVERS E-14 MAX_SHARED_SERVERS E-15 CIRCUITS E-16 SHARED_SERVER_SESSIONS E-17 相关参数 E-18 验证共享服务器设置 E-19 数据字典视图 E-21 选择连接类型 E-22 何时不使用共享服务器 E-23 小结 E-24

附录 F:Oracle Secure Backup

课程目标 F-2 把 Oracle 积累的数据保护到磁带 F-3 客户优势:完整的 Oracle 解决方案 F-4 用于集中磁带备份管理的 Oracle Secure Backup F-5 Oracle Secure Backup 管理域 F-6 Oracle Secure Backup:备份管理概览 F-7 Oracle Secure Backup 目录 F-8 Oracle Secure Backup 用户 F-9 预定义的分类 F-11 Oracle Secure Backup 界面选项 F-12 管理待保护的数据 F-13 Oracle Secure Backup 介质概念 F-14 卷集的重复利用 F-15 自动设备管理 F-17 库管理操作 F-18 Oracle Secure Backup:安装 F-19 安装 Oracle Secure Backup 软件 F-20 管理服务器的安装:示例 F-21 在 EM 中定义管理服务器 F-22 “Oracle Secure Backup Device and Media(Oracle Secure Backup 设备和介质)”页 F-23 添加设备 F-24 通过使用 EM 管理设备 F-25 RMAN 和 Oracle Secure Backup F-26

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 17:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xvii

从 RMAN 访问 Oracle Secure Backup F-27 用户预授权 F-28 数据库备份存储选择器 F-29 RMAN 和 Oracle Secure Backup:使用模型 F-30 定义数据库存储选择器 F-31 测试磁带机 F-32 使用 EM Database Control 调度备份 F-33 Oracle 建议的备份策略 F-34 管理磁带备份 F-35 使用磁带备份执行数据库恢复 F-36 使用 Oracle Secure Backup 备份文件系统文件 F-37 Oracle Secure Backup Web 工具 F-38 Oracle Secure Backup 数据集脚本 F-40 数据集脚本:示例 F-41 数据集组织 F-42 使用 Web 界面创建数据集 F-43 文件系统文件:备份概念 F-44 Oracle Secure Backup 作业 F-45 创建按需备份请求 F-47 发送备份请求至调度程序 F-48 创建备份计划 F-49 创建备份触发器 F-50 查看作业属性和副本 F-51 使用 Oracle Secure Backup 还原文件系统文件 F-52 创建基于目录还原的请求 F-53 将基于目录还原的请求发送至调度程序 F-55 列出客户机的所有备份 F-56 小结 F-57

附录 G:其它主题

附录概览 G-2 大文件表空间:概览 G-3 大文件表空间的优点 G-4 大文件表空间:使用模型 G-5 创建大文件表空间 G-6 SQL 语句子句 G-7

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 18:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

xviii

BFT 和 SQL 语句:示例 G-8 支持 VLDB 的数据字典增加 G-9 扩展的 ROWID 格式和 BFT G-10 VLDB 支持:DBMS_ROWID 程序包 G-11 临时表空间组 (TTG):概览 G-12 临时表空间组:优点 G-13 创建和维护临时表空间组 G-14 临时表空间组:SQL 示例 G-15 小结 G-17

附录 H:下一步:继续培训

您想从本课堂学到什么 H-2 继续培训资源 H-3 Oracle University H-4 继续培训 H-5 Oracle University 知识中心 H-6 Oracle 技术网络 H-7 Oracle 技术培训 H-8 Oracle 示例 H-9 Oracle 杂志 H-10 Oracle 应用产品社区 H-11 技术支持:Oracle MetaLink H-12 谢谢 H-13

索引

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 19:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 20:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 21:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言-3

配置文件

学习本课程的条件

在学习本课程之前,应已具备以下条件:

• 具备使用 SQL 以及基本 Unix 命令的经验

前提条件

Oracle Database 10g:数据库管理 - 课堂练习 I (D17090GC30)

本课程是如何编排的

《Oracle Database 10g:数据库管理 - 课堂练习 I》是一门由教师引导、讲练结合的培训课程。联机演示和书面练习课时将进一步帮助您加强概念的理解和技能的掌握。

建议的后续课程

• Oracle Database 10g:SQL 优化 - 课堂练习 (D17265GC10) • Oracle Enterprise Manager 10g Grid Control (D17244GC11)• Oracle Database 10g: Real Application Clusters (D17276GC10)• Oracle Database 10g: Implement Streams (D17333GC10)• Oracle Database 10g: Data Guard Administration (D17316GC11)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 22:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言-4

相关出版物

Oracle 出版物

标题 部件号

Oracle 数据库管理员 10g(两天教程),发行版 2 (10.2) B14196-02Oracle Database Administrator's Guide 10g Release 2 (10.2) B14231-01Oracle Database Application Developer's Guide - Large Objects 10g Release 2 (10.2) B14249-01Oracle Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2) B14191-02Oracle Database Backup and Recovery Basics 10g Release 2 (10.2) B14192-03Oracle Database Concepts 10g Release 2 (10.2) B14220-02Oracle Database Data Warehousing Guide 10g Release 2 (10.2) B14223-02Oracle Database Globalization Support Guide 10g Release 2 (10.2) B14225-01Oracle Database Licensing Information 10g Release 2 (10.2) B14199-02Oracle Database Net Services Administrator's Guide 10g Release 2 (10.2) B14212-02Oracle Database Net Services Reference 10g Release 2 (10.2) B14213-01Oracle Database New Features Guide 10g Release 2 (10.2) B14214-02Oracle Database Performance Tuning Guide 10g Release 2 (10.2) B14211-01Oracle Database PL/SQL Packages and Types Reference 10g Release 2 (10.2) B14258-01Oracle Database PL/SQL User's Guide and Reference 10g Release 2 (10.2) B14261-01Oracle Database Recovery Manager Quick Start Guide 10g Release 2 (10.2) B14193-03Oracle Database Recovery Manager Reference 10g Release 2 (10.2) B14194-03Oracle Database Reference 10g Release 2 (10.2) B14237-02Oracle Database Security Guide 10g Release 2 (10.2) B14266-01Oracle Database SQL Quick Reference 10g Release 2 (10.2) B14195-02Oracle Database SQL Reference 10g Release 2 (10.2) B14200-02Oracle Database Utilities 10g Release 2 (10.2) B14215-01 Oracle Streams Advanced Queuing User's Guide and Reference B14257-01Oracle Streams Concepts and Administration B14229-01

其它出版物

• 系统版本说明

• 安装和用户指南

• 自述文件

• International Oracle Users Group (IOUG) 文章

• Oracle 杂志

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 23:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言-5

印刷约定

文本印刷约定

约定 要素 示例

粗体 仅限于 Web 内容中

强调的词和短语要在该应用产品中进行浏览,请不要单击“前进”或“后退”按钮。

粗斜体 词汇表术语(如果有词汇表)

此算法将插入新的键值。

方括号 按键名 按 [Enter] 键。

大小写 按钮、复选框、应用程序触发器、窗口

单击“Executable”按钮。

选中“Can't Delete Card”复选框。

为 ORD 模块指定“When-Validate-Item”

触发器。

打开“Master Schedule”窗口。

尖括号 菜单路径 选择“文件 > 保存”。

逗号 按键顺序 同时按下然后松开以下键:[Alt], [F], [D]

Courier New 字体、区分大小写(默认值为小写)

代码输出、

目录名、

文件名、

口令、

路径名、

用户输入、

用户名

代码输出:debug.set (‘I’, 300);

目录:bin (DOS), $FMHOME (UNIX)文件名:找到 init.ora文件。

口令:使用 tiger作为口令。

路径名:打开 c:\my_docs\projects。用户输入:输入 300。

用户名:以 HR用户身份登录。

首字母大写 图形标签(除非术语是专有名词)

客户地址(Oracle Payables 除外)

斜体 强调的词和短语、

书名和课程名、

变量

请不要将更改保存到数据库。

更多信息,请参见《Oracle Database SQL Reference 10g Release 2(10.2)》

输入 [email protected],其中 user_id为用户名称。厦

门微思ORACLE授权培训中心

http://www.xmws.cn

Page 24:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言-6

印刷约定(续)

文本印刷约定(续)

代码印刷约定

约定 要素 示例

引号 具有长名称且只有首字母大写的界面元素;交叉引用的课程标题和章节标题

请选择“Include a reusable module component”,

然后单击“完成”。

该主题将在“使用对象”一课中进行介绍。

大写 SQL 列名、命令、

函数、方案、表名称、数据库触发器名称

使用 SELECT命令来查看存储在 EMPLOYEES表的 LAST_NAME列中的信息。

约定 要素 示例

小写 列名、表名、数据库触发器名

SELECT last_nameFROM employees;

CREATE OR REPLACE TRIGGER secure_employees

口令 CREATE USER scottIDENTIFIED BY tiger;

PL/SQL 对象 items.DELETE(3);

小写斜体 语法变量 CREATE ROLE role

大写 SQL 命令和函数 SELECT first_nameFROM employees;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 25:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

前言-7

印刷约定(续)

定位路径印刷约定

本课程使用如下所示的简化定位路径来引导您使用 Oracle 应用产品。

示例:

发票批汇总

(N) 发票 > 输入 > 发票批汇总 (M) 查询 > 查找 (B) 审批

该简化路径的含义如下:

1. (N) 从“浏览器”窗口,依次选择“发票”、“输入”、“发票批汇总”。

2. (M) 从菜单上,选择“查询”,然后选择“查找”。

3. (B) 单击“审批”按钮。

符号:

(N) = 浏览器 (I) = 图标

(M) = 菜单 (H) = 超级链接

(T) = 标签 (B) = 按钮

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 26:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 27:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

简介

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 28:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成下列工作:

• 列出课程目标,说明课程结构

• 概述 Oracle Database 10g体系结构

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 29:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-3

版权所有 © 2009,Oracle。保留所有权利。

课程目标

在本课程中,您将获得以下几方面的经验:

• 使用 Recovery Manager (RMAN) 进行高级备份和

恢复

• 在内存、性能和存储方面,进行数据库监视操作

• 管理资源、作业调度、安全性和全球化问题

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 30:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-4

版权所有 © 2009,Oracle。保留所有权利。

建议计划

1:简介

2:配置 RMAN 3:使用 RMAN 4:非关键性恢复

5:恢复

6:闪回

7:损坏

8:内存

9:性能

10:方案

11:存储

12:ASM

13:资源

14:调度程序

15:安全性

16:全球化

17:课堂练习

附录

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 31:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-5

版权所有 © 2009,Oracle。保留所有权利。

DBAI 课程中介绍的内容

1. 简介

2. 安装

3. 数据库创建

4. 实例

5. 存储

6. 用户

7. 方案

8. 数据与并发

9. 还原

10. 安全性

11. 网络

12. 预先维护

13. 性能

14. 备份与恢复概念

15. 备份

16. 恢复

17. 闪回

18. 移动数据

DBAI 课程中介绍的内容

DBAI 是指《Oracle Database 10g:数据库管理-课堂练习 I(版本 2)》课程。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 32:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-6

版权所有 © 2009,Oracle。保留所有权利。

课程示例:HR方案

REGIONSREGION_ID (PK)REGION_NAME

COUNTRIESCOUNTRY_ID (PK)COUNTRY_NAMEREGION_ID (FK)

LOCATIONSLOCATION_ID (PK)STREET_ADDRESSPOSTAL_CODECITYSTATE_PROVINCECOUNTRY_ID (FK)

DEPARTMENTSDEPARTMENT_ID (PK)DEPARTMENT_NAMEMANAGER_IDLOCATION_ID (FK)

JOBSJOB_ID (PK)JOB_TITLEMIN_SALARYMAX_SALARY

EMPLOYEESEMPLOYEE_ID (PK)FIRST_NAMELAST_NAMEEMAILPHONE_NUMBERHIRE_DATEJOB_ID (FK) SALARYCOMMISION_PCTMANAGER_ID (FK)DEPARTMENT_ID (FK)

JOB_HISTORYEMPLOYEE_ID (PK)START_DATE (PK)END_DATEJOB_ID (FK) DEPARTMENT_ID (FK)

REGIONS

COUNTRIES

LOCATIONS

DEPARTMENTS

JOBS

EMPLOYEES

JOB_HISTORY

课程示例:HR 示例方案

本课程中使用的示例都来自人力资源管理系统 (HR) 应用产品,它们可以作为启动数据库

的一部分而创建。

以下是 HR 应用产品的一些主要业务规则:

• 每个部门都可以是一个或多个雇员的雇主。每个雇员都能且仅能分配到一个部门。

• 每个职务都必须是一个或多个雇员的职务。每个雇员当前都必须分配且仅分配到

一个职务。

• 当雇员变更其部门或职务时,JOB_HISTORY表中的一条记录将记录过去分配的

起始日期和终止日期。

• JOB_HISTORY中的各条记录由组合主键 (PK) 来进行标识:EMPLOYEE_ID和

START_DATE列。

记号:PK = 主键,FK = 外键

实线表示强制外键 (FK) 约束条件,虚线表示可选外键约束条件。

EMPLOYEES表自身也有外键约束条件。这是对“每个雇员都能且仅能向一个经理直接

报告”这一业务规则的实施。外键是可选的,因为顶层雇员不向其他雇员报告。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 33:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-7

版权所有 © 2009,Oracle。保留所有权利。

Oracle Database 10g:为网格计算设计的数据库

• 自动存储管理

• 可移植集群件

• Real Application Clusters 和自动工作量管理

• 资源管理器

• Oracle Streams • 使用 Oracle Enterprise Manager Grid Control 进行

集中管理

• Oracle Database 10g新增的自我管理功能

Oracle Database 10g:为网格计算设计的数据库

Oracle Database 10g 是第一个为网格计算设计的数据库。一些最重要的功能概括如下:

• 自动存储管理 (ASM) 使存储虚拟化,并且能更轻松地预配数据库存储。

• Oracle Database 10g 提供可以在所有平台上运行的可移植集群件。

• Oracle Database 10g 为 RAC 数据库内的各种服务提供自动工作量管理。

• Oracle Database 10g 可以根据用户主机、应用程序、OS 用户名或服务为使用者组提供

附加映射。

• Oracle Streams 可以在网格内数据库、节点或刀片式服务器场之间传输数据。该程序

将消息队列、复制、事件和数据仓库加载组合为一种单独的技术,为信息共享提供了

统一的框架。

• Oracle Enterprise Manager Grid Control 提供了一种单独的工具,该工具通过应用程序

性能管理 (APM)、主机、存储设备和服务器负载平衡器,不仅可以监视和管理网格

内的每个 Oracle 软件元素(Oracle Application Server 10g 和 Oracle Database 10g),

还可以监视和管理 Web 应用程序。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 34:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-8

版权所有 © 2009,Oracle。保留所有权利。

数据库体系结构:概述

存储结构

内存结构

进程结构

实例

系统全局区 (SGA)

后台进程

数据库文件

数据库体系结构:概述

以下几页是对 Oracle 数据库体系结构的基本概述。在本课程中,您将增强 Oracle 数据库

结构、进程和实用程序方面的知识。

每个正在运行的 Oracle 数据库都与一个 Oracle 实例相关联。在数据库服务器上启动数据

库后,Oracle 软件将对共享内存区(即系统全局区 (SGA))进行分配,并将启动多个

Oracle 后台进程。这种 SGA 和 Oracle 进程的组合称为 Oracle 实例。

启动实例后,Oracle 软件会将该实例与特定数据库相关联。该操作称为装载数据库。之后

用户可以打开数据库,即授权用户可以对其进行访问。可在同一台计算机上同时执行多个

实例,每个实例访问其各自的物理数据库。

您可以将 Oracle 数据库体系结构看作各种相互关联的结构组件。

Oracle 数据库使用内存结构和进程来管理和访问数据库。所有内存结构都存在于构成数据

库服务器的那些计算机的主内存中。进程是在这些计算机的内存中运行的作业。进程被定

义为操作系统中可运行一系列步骤的“控制线程”或机制。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 35:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-9

版权所有 © 2009,Oracle。保留所有权利。

Oracle 内存结构

Java 池 数据库缓冲区高速缓存

重做日志缓冲区

共享池 大型池

SGA

流池

服务器进程 1 PGA 服务器

进程 2 PGA 后台进程 PGA

Oracle 内存结构

与 Oracle 实例关联的基本内存结构包括:

• 系统全局区 (SGA):由所有服务器进程和后台进程共享

• 程序全局区 (PGA):由每个服务器和后台进程专用,每个进程都有一个 PGA。

SGA 是包含实例的数据和控制信息的内存区。

SGA 包含以下数据结构:

• 数据库缓冲区高速缓存:用于缓存从数据库检索到的数据块

• 重做日志缓冲区:用来缓存用于实例恢复的重做信息,直到可以将其写入磁盘中存储

的物理重做日志文件

• 共享池:用于缓存可在用户间共享的各种结构

• 大型池:可选区域,能够为某些大型进程(例如 Oracle 备份和恢复操作)和 I/O 服务

器进程提供较大的内存分配

• Java 池:用于 Java 虚拟机 (JVM) 中特定于会话的所有 Java 代码和数据

• 流池:由 Oracle Streams 使用

使用 Oracle Enterprise Manager 或 SQL*Plus 启动实例时,会显示为 SGA 分配的内存量。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 36:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-10

Oracle 内存结构(续)

程序全局区 (PGA) 是一个内存区,其中包含每个服务器进程的数据及控制信息。Oracle 服务器进程为客户机请求提供服务。每个服务器进程都有在服务器进程启动时创建的自己

专用的 PGA。PGA 只可供该服务器进程访问,并且只能通过代表该服务器进程的 Oracle代码对 PGA 进行读写。

使用动态 SGA 基础结构,可以在不关闭实例的情况下更改数据库缓冲区高速缓存、共享

池、大型池、Java 池和流池的大小。

Oracle 数据库使用初始化参数创建和配置内存结构。例如,SGA_TARGET参数指定 SGA 可用空间的总量。如果将 SGA_TARGET设置为 0,将禁用“Automatic Shared Memory Management(共享内存自动管理)”功能。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 37:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-11

版权所有 © 2009,Oracle。保留所有权利。

Oracle 进程

系统监视器

(SMON)

数据库写进程

(DBWn)

检查点(CKPT)

日志写进程(LGWR)

进程监视器

(PMON)

归档进程(ARCn)

服务器进程

服务器进程

服务器进程

服务器进程

系统全局区 (SGA)

后台进程

Oracle 进程

调用应用程序或 Oracle 工具(如 Oracle Enterprise Manager)时,Oracle 服务器将创建服

务器进程以执行应用程序发出的命令。Oracle 服务器还会为实例创建一组后台进程。这些

进程不仅彼此交互,而且还与操作系统交互,可用于管理内存结构,异步执行 I/O 操作将

数据写入磁盘,执行其它需要的任务。显示哪些后台进程取决于数据库中所使用的功能。

以下是最常见的后台进程:

• 系统监视器 (SMON):启动的实例失败时,执行崩溃恢复

• 进程监视器 (PMON):用户进程失败时,执行进程清理

• 数据库写进程 (DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据

文件

• 检查点 (CKPT):更新数据库的所有数据文件和控制文件以指示最新的检查点

• 日志写进程 (LGWR):将重做日志条目写入磁盘

• 归档程序 (ARCn):发生日志切换时,将重做日志文件复制到归档存储中

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 38:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-12

版权所有 © 2009,Oracle。保留所有权利。

概述 Oracle 实例管理

SGA

数据库写进程

(DBWn)

日志写进程

(LGWR)

数据库缓冲区高速缓存

重做日志缓冲区

1

用户进程

2

示例:启动数据库实例建立连接

系统监视器

(SMON)

进程监视器

(PMON)

数据文件 重做日志文件

实例

服务器进程

3

概述 Oracle 实例管理

以下示例描述了 Oracle 数据库执行的几项最基本操作。该示例对用户和关联服务器进程

运行于不同计算机(通过网络相连接)上时的 Oracle 配置进行了说明。

1. 在运行 Oracle 的计算机(通常称为主机或数据库服务器)上启动了一个实例。

2. 运行应用程序的计算机(本地计算机或客户机工作站)在用户进程内运行应用程序。

客户机应用程序尝试通过 Oracle Net Services 驱动程序与实例建立连接。

3. 该实例检测到应用程序发出的连接请求,并连接到代表该用户进程的服务器进程。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 39:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-13

版权所有 © 2009,Oracle。保留所有权利。

概述 Oracle 实例管理

用户更新了某一行数据。重做日志文件

实例

SGA

数据库写进程

(DBWn)

数据库

缓冲区高速缓存

重做日志

缓冲区

服务器进程

用户进程

4

10

7

6

5

8

示例:处理SQL 语句

归档进程(ARCn)

9

检查点(CKPT)

数据文件 归档日志控制文件

日志写进程

(LGWR)

概述 Oracle 实例管理(续)

4. 用户更新了某一行数据。

5. 服务器进程接收到语句,并检查 SGA 的共享池中是否已存在该语句。如果找到了共

享 SQL 区域,服务器进程将检查用户对请求数据的访问权限,并且使用以前现有的

共享 SQL 区域处理该语句。如果共享池内没有该语句,则将为该语句分配新的共享

SQL 区域,从而可对其进行分析和处理。

6. 服务器进程从 SGA 中存储的实际数据文件(表)或数据块中检索任何必需的数据值。

7. 服务器进程将对 SGA 中的表数据进行修改。

8. 提交事务处理后,LGWR 进程会立即将该事务处理记录到重做日志文件中。

9. 如果有必要,DBWn 进程会将修改的块写入磁盘。

10. 服务器进程将通过网络向应用程序发送一条成功或错误消息。

在整个过程中,其它后台进程同时在运行,用于监视是否有需要干预的情况。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 40:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-14

版权所有 © 2009,Oracle。保留所有权利。

物理数据库结构

联机重做日志文件

口令文件

参数文件 归档日志文件

控制文件 数据文件

预警和跟踪日志文件

备份文件

物理数据库结构

构成 Oracle DB 的文件可划分为以下类别:

• 控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数

据库至关重要。没有这些文件,就无法打开数据文件来访问数据库中的数据。

• 数据文件:包含数据库的用户或应用程序数据。

• 联机重做日志文件:用于进行数据库的实例恢复。如果数据库崩溃了,但未丢失任

何数据文件,那么实例便可使用这些文件中的信息恢复数据库。

下列附加文件对成功运行数据库非常重要:

• 参数文件:用于定义实例启动时的配置。

• 口令文件:允许用户远程连接到数据库执行管理任务。

• 备份文件:用于进行数据库恢复。如果原始文件在介质出现故障或发生用户错误时

被损坏或删除,则通常要还原备份文件。

• 归档日志文件:包含实例发生的数据更改(重做)的实时历史记录。使用这些文件

和数据库备份,可以恢复丢失的数据文件。也就是说,使用归档日志可以恢复还原

的数据文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 41:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-15

物理数据库结构(续)

• 跟踪文件:每个服务器和后台进程都可以写入关联的跟踪文件。当进程检测到内部

错误时,进程会将有关该错误的信息转储到相应的跟踪文件中。写入跟踪文件的部

分信息是为数据库管理员提供的,而其它信息是为 Oracle Support Services 提供的。

• 预警日志文件:也称为预警日志,这些是特殊的跟踪文件。数据库的预警日志是按

时间顺序列出的消息日志和错误日志。Oracle 建议复查这些文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 42:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-16

版权所有 © 2009,Oracle。保留所有权利。

示例:SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata'; SQL> CREATE TABLESPACE tbs_1;

Oracle Managed Files (OMF)

按照数据库对象而不是文件名指定文件操作。

定义 RMAN 备份的位置DB_RECOVERY_FILE_DEST

定义重做日志文件和控制文件

的创建位置

DB_CREATE_ONLINE_LOG_DEST_n

定义数据文件和临时文件默认

文件系统目录的位置

DB_CREATE_FILE_DEST

说明参数

Oracle Managed Files (OMF) 借助 Oracle Managed Files (OMF),您将无需直接管理构建 Oracle 数据库的操作系统文件。

请按照数据库对象而不是文件名指定操作。数据库将根据需要,在内部使用标准文件系统

接口创建或删除下列数据库结构的文件:

• 表空间

• 重做日志文件

• 控制文件

• 归档日志

• 块更改跟踪文件

• 闪回日志

• RMAN 备份

数据库既可以包含 Oracle 管理文件,也可以包含非 Oracle 管理文件。由这两种参数指定

的文件系统目录必须都已经存在:因为数据库不会创建该目录。该目录还必须被授予允许

数据库在其中创建文件的权限。

示例说明在设置 DB_CREATE_FILE_DEST后,可以省略 CREATE TABLESPACE语句中

的 DATAFILE子句。将在 DB_CREATE_FILE_DEST指定的位置创建数据文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 43:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-17

版权所有 © 2009,Oracle。保留所有权利。

逻辑和物理数据库结构

数据库

逻辑 物理

表空间 数据文件

OS 块

Oracle 数据块

方案

逻辑和物理数据库结构

Oracle 数据库是视为单元的数据的集合。数据库的一般用途是存储和检索相关的信息。

数据库具有逻辑结构和物理结构。

表空间

数据库分为多个逻辑存储单元,这些单元称为表空间,用于将相关逻辑结构归到一组。

例如,表空间一般会将应用程序的所有对象分成一组,以简化一些管理操作。您可以用

一个表空间来存放应用程序数据,用另一个表空间来存放应用程序索引。

数据库、表空间和数据文件

本幻灯片对数据库、表空间和数据文件之间的关系进行了说明。每个数据库在逻辑上都

分为一个或多个表空间。系统为每个表空间均显式创建一个或多个数据文件,以在物理

上将所有逻辑结构的数据都存储在表空间中。如果是 TEMPORARY表空间,那么表空间

将包含临时文件,而不是数据文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 44:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-18

逻辑和物理数据库结构(续)

方案

方案是数据库用户所拥有的数据库对象的集合。方案对象是直接引用数据库数据的逻辑

结构。方案对象包括诸如表、视图、序列、存储过程、同义词、索引、集群和数据库链接

等结构。通常,方案对象包括应用程序在数据库中创建的所有内容。

数据块

从最细的层面来讲,Oracle 数据库的数据存储在数据块中。一个数据块与磁盘中特定字节

数的物理数据库空间相对应。每个表空间的数据块大小是在表空间创建时指定的。数据库

使用和分配 Oracle 数据块中的空闲数据库空间。

逻辑数据库空间的下一层称为区。区是特定数量的相邻数据块(通过一次分配获得),

用于存储特定类型的信息。

区的上一层逻辑数据库存储称为段。段是为某个逻辑结构分配的一组区。例如,不同类型

的段包括:

• 数据段:每个非集群、非索引组织的表都有一个数据段。表中的所有数据都存储在

相应数据段的区中。对于分区表,每个分区都有一个数据段。每个集群也都有一个

数据段。集群中每个表的数据都存储在集群的数据段中。

• 索引段:每个索引都有一个索引段,存储其所有数据。对于分区索引,每个分区都

有一个索引段。

• 还原段:一个 UNDO表空间是由数据库管理员创建的,用于临时存储还原信息。还

原段中的信息用于生成读一致性数据库信息,并且在数据库恢复过程中,用于为用

户回滚未提交的事务处理。

• 临时段:临时段是 SQL 语句需要临时工作区来完成执行时由 Oracle 数据库创建的。

语句完成执行后,临时段的区将返回到实例以备将来使用。可以为每个用户指定

一个默认临时表空间,也可以指定一个在数据库范围内使用的默认临时表空间。

Oracle DB 对空间进行动态分配。如果段中的现有区都已满,将会再增加一些区。因为区

是根据需要进行分配的,因此段中的区在磁盘中可能是相邻的,也可能是不相邻的。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 45:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-19

版权所有 © 2009,Oracle。保留所有权利。

数据库体系结构:结构组件汇总

• 内存结构

– 系统全局区 (SGA):数据库缓冲区高速缓存、重做缓冲区

以及各种池

– 程序全局区 (PGA) • 进程结构

– 用户进程和服务器进程

– 后台进程:SMON、PMON、DBWn、CKPT、LGWR、

ARCn等

• 存储结构

– 逻辑:数据库、方案、表空间、段、区和 Oracle 块– 物理:用于存储数据、参数、重做和操作系统块的文件

数据库体系结构:结构组件汇总

您已从高级别开始学习了 Oracle 数据库的结构组件:内存、进程结构和存储结构。了解

Oracle 的数据库体系结构是本课程的前提条件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 46:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 1-20

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 列出课程目标

• 概述 Oracle Database 10g体系结构

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 47:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

配置 Oracle Recovery Manager

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 48:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成下列工作:

• 描述 RMAN 资料档案库和恢复目录

• 描述介质管理库接口

• 配置影响 RMAN 操作的数据库参数

• 使用 RMAN 连接到三种不同类型的数据库

• 配置两种类型的保留策略

• 使用 CONFIGURE 更改 RMAN 默认设置

课程目标

Oracle Recovery Manager (RMAN) 是 Oracle 数据库的一个组件,用于执行备份和恢复操作。

Oracle Enterprise Manager (EM) 提供了 常用的 RMAN 功能的图形界面。

《Oracle Database 10g:数据库管理-课堂练习 I》课程将演示使用 EM 数据库控制台的

一些基本 RMAN 操作,因此用于 RMAN 的图形界面将不在本课中详细介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 49:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-3

版权所有 © 2009,Oracle。保留所有权利。

备份和恢复:概述

“数据库管理 I 课程”中包含的与备份和恢复相关的主题

主要有:

• 可能发生的故障类型

– 语句、会话、实例、介质等

• 如何配置 ARCHIVELOG 模式

• 如何自动执行备份

• 如何进行增量备份

• 如何执行和优化实例恢复

备份和恢复:概述

《Oracle Database 10g:数据库管理-课堂练习 I》一课中介绍了本幻灯片中列出的与备份

和恢复相关的主题。后面的课程将对其中一些主题进行更详细的介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 50:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-4

版权所有 © 2009,Oracle。保留所有权利。

Oracle Recovery Manager 的功能

RMAN 为执行以下操作提供了一种灵活的方式:

• 备份数据库,包括数据文件、控制文件和归档重做日志

• 管理备份和恢复任务

• 执行增量块级备份和块级介质恢复

• 在备份过程中检测损坏的块

• 创建备份时使用二进制压缩

Oracle Recovery Manager 的功能

RMAN 是一个 Oracle 实用程序,可用于管理对 Oracle 数据库的备份、还原和恢复操作。

RMAN 支持一套功能强大的、独立于操作系统的命令语言。

如果使用操作系统命令执行用户管理的备份,RMAN 提供的一些功能则不可用。

• 可在数据库中将频繁执行的操作存储为脚本。

• 通过在数据库中启用块更改跟踪功能,RMAN 可将增量备份限制为仅记录自上次

备份后更改的那些块。这样就提高了备份的性能,同时还可以缩短在 ARCHIVELOG模式下执行恢复操作所需的时间。

• 可使用 RMAN 管理备份片段的大小,并且可通过并行备份操作节省时间。

• RMAN 可恢复数据文件内损坏的单个数据块或一组数据块,而不是还原和恢复整个

数据文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 51:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-5

Oracle Recovery Manager 的功能(续)

• RMAN 操作可与调度程序集成在一起,自动执行备份操作。调度程序将在“使用

调度程序自动执行任务”一课中进行介绍。

• 可使用 RMAN 检测块损坏。可通过 V$BACKUP_CORRUPTION和

V$COPY_CORRUPTION动态视图查看备份过程中检测到的块损坏的相关信息。

• RMAN 可增强如下几方面的性能:

- 自动并行执行备份、还原和恢复操作

- 联机数据库备份过程中不生成附加重做日志

- 对备份进行约束以限制每秒每个文件的读取次数,避免影响 OLTP 作业

- 使用多路复用功能,这样可在保持磁带机传输的情况下避免任一文件的读写

操作溢出

• RMAN 具有介质管理 API,可与连接到存储设备上的第三方介质管理工具无缝地

配合使用,使程序操作的速度更快、可靠性更高。

• Oracle Secure Backup 允许 RMAN 在没有第三方介质管理工具的情况下备份到磁带。

• 使用用户管理的方法时,您需要跟踪所有数据库文件和备份。进行恢复时,必须找

到每个数据文件的备份,使用操作系统命令将这些备份复制到正确的位置,然后选

择要应用的重做日志文件。RMAN 则可自动管理这些任务。如果使用 Oracle Managed Files 或快速恢复区,使用 RMAN 的优势会更加明显。

附注

并非所有这些功能都将在本课程中进行介绍。有关:

• RMAN 及其功能的详细信息,请参阅《Oracle 数据库备份和恢复基础》和

《Oracle 数据库备份和恢复高级用户指南》文档

• RMAN 命令语法的详细信息,请参阅《Oracle 数据库 Recovery Manager 参考》手册

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 52:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-6

版权所有 © 2009,Oracle。保留所有权利。

Oracle Recovery Manager 组件

服务器会话

通道

服务器会话

Oracle Enterprise Manager

目标数据库

恢复目录数据库

辅助数据库

磁盘 快速恢复区

通道 通道

MML

选项

RecoveryManager(RMAN)

Oracle Recovery Manager 组件

Oracle Recovery Manager 可执行程序:Oracle Recovery Manager 命令行接口通过 RMAN 客户机应用程序进行调用。RMAN 解释用户命令,并适当地调用服务器会话以执行所需的

任务。

Oracle Enterprise Manager:Oracle Enterprise Manager 数据库控制台提供了 常用 RMAN 功能的图形界面。

服务器会话:由 RMAN 调用的服务器进程 (UNIX) 或线程 (Windows 2000) 将连接到目标

数据库,通过 PL/SQL 接口执行备份、还原和恢复功能。这些会话将对磁盘、磁带或快速

恢复区(针对与数据库恢复相关的文件,它们是指定为这些文件默认存储区的存储位置)

进行写入或读取文件的操作。

目标数据库:使用 RMAN 对其执行备份和恢复操作的数据库称为目标数据库。目标数据

库的控制文件包含有关其物理结构的信息,例如数据文件、联机和归档重做日志文件以

及控制文件的大小和位置。在备份和恢复操作中,RMAN 调用的服务器会话将使用这些

信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 53:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-7

Oracle Recovery Manager 组件(续)

辅助数据库:创建重复的数据库或执行表空间时间点恢复 (TSPITR) 时使用辅助数据库。

对于这些任务,辅助数据库用作数据库新副本或已恢复表空间的目的地。辅助数据库可与

其父级位于同一主机上,也可位于不同的主机上。在本课中介绍辅助数据库仅出于完整性

目的。有关详细信息,请参阅《Oracle 数据库备份和恢复高级用户指南》。

通道:通道表示传输到某设备类型的一串数据。要执行和记录备份及恢复操作,RMAN 需要一个指向目标数据库的链接。通道可通过在目标数据库中创建会话来建立此链接,

其中,目标数据库需要能够与主机文件系统连接(以与磁盘连接)以及与介质管理库连接

(以与磁带连接)。您可以手动分配通道,也可以使用自动通道分配来预配置通道。

RMAN 资料档案库:RMAN 在 RMAN 资料档案库中维护有关目标数据库及其备份和恢复

操作的元数据。其中,RMAN 存储与自身配置设置、目标数据库方案、归档重做日志以及

磁盘或磁带中所有备份文件相关的信息。RMAN 资料档案库数据总是存储在目标数据库的

控制文件中。

恢复目录:RMAN 资料档案库数据还可存放在恢复目录中。恢复目录是一个单独的 Oracle 数据库。

介质管理库:对磁带进行读写操作时,RMAN 将使用介质管理库 (MML)。使用磁带介质

所需的附加介质管理软件是由介质和存储系统供应商提供的。此外,Oracle Secure Backup 产品允许 RMAN 在不需要第三方工具的情况下备份到磁带。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 54:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-8

版权所有 © 2009,Oracle。保留所有权利。

配置 RMAN 的步骤

1. 确定资料档案库的位置:控制文件或恢复目录。

2. 定义数据库和环境变量。

3. 启动 RMAN 并连接到目标数据库或恢复目录数据库。

4. 配置永久性设置。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 55:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-9

版权所有 © 2009,Oracle。保留所有权利。

RMAN 资料档案库数据存储:选项比较

控制文件:– 管理更简单

– 默认设置

恢复目录:– 复制控制文件数据

– 空间可存储更多数据

– 可服务于许多目标

– 可存储 RMAN 脚本

元数据

备份集列表

映像副本列表

.

.

.

RMAN 资料档案库数据存储:选项比较

RMAN 资料档案库数据总是存储在目标数据库的控制文件中。但它也可以存储在单独的

数据库中,该数据库称为恢复目录。

恢复目录会在单独的数据库中保留备份信息,这在控制文件丢失时尤为有用。这样您可以

存储更长的备份历史记录,比基于控制文件的资料档案库所存储的历史记录还要长。使用

一个恢复目录可存储多个目标数据库的信息。恢复目录还可以存储 RMAN 存储脚本,这

些脚本是 RMAN 命令用以执行一般备份任务的序列。在恢复目录中集中存储脚本要比处

理命令文件更加方便。

对于小型安装,建议您不要使用单独的恢复目录数据库,因为单独恢复目录数据库的管理

任务将会因此而变得非常繁重。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 56:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-10

RMAN 资料档案库数据存储:选项比较(续)

如何设置恢复目录

1. 创建要用作恢复目录的数据库。也可确定一个现有数据库作为恢复目录。因为一个

恢复目录可服务于多个数据库,所以您可以选择创建一个恢复目录来服务于要进行

备份的所有数据库。

2. 在恢复目录数据库中,创建将拥有恢复目录数据的用户。例如,假定 catdb是目录

数据库的名称,rcat_ts是您所创建的表空间的名称,该表空间用于存储目录数据。$ sqlplus sys/password@catdb as sysdba

SQL> CREATE USER rman IDENTIFIED BY cat 2 TEMPORARY TABLESPACE temp 3 DEFAULT TABLESPACE rcat_ts 4 QUOTA UNLIMITED ON rcat_ts;

3. 将 RECOVERY_CATALOG_OWNER角色授予目录所有者。该角色将为用户提供维护和

查询恢复目录所需的所有权限。GRANT RECOVERY_CATALOG_OWNER TO rman;

4. 启动 RMAN,并以目录所有者身份登录。$ rman catalog rman/cat@catdb RMAN> CREATE CATALOG TABLESPACE rcat_ts;

5. 使用 RMAN 连接到目标数据库,并在新创建的恢复目录中注册该目标数据库。$ rman target sys/oracle@orcl catalog rman/cat@catdb

RMAN> register database;

注:备份恢复目录数据库非常重要。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 57:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-11

版权所有 © 2009,Oracle。保留所有权利。

备份目标

备份可写入到:

• 磁盘目录

• 介质管理库(磁带机)

– 通常在磁盘备份丢失的情况下用于进行灾难恢复

• 快速恢复区

– 这是为备份、恢复及闪回数据库留出的一块磁盘区域

– 可定义其位置和大小

– 可使用 Oracle Managed Files 对文件自动进行命名

– 根据需要将自动保留和删除文件

备份目标

可将备份写入指定的磁盘目录、介质管理库或快速恢复区。指定磁盘目录或快速恢复区表

示备份将存入硬盘介质。通常,为了保持磁盘空间的可用性,定期通过介质管理接口将备

份脱机移到磁带中。只要磁盘目录已存在,任何磁盘目录都可以指定为备份目标。

如果设置了快速恢复区,那么很多备份和恢复任务将变得简单。Oracle 数据库会自动指定

文件,在空间紧缺时会删除过时的文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 58:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-12

版权所有 © 2009,Oracle。保留所有权利。

介质管理

Oracle RecoveryManager

介质管理

服务器软件

介质管理库

服务器会话

(通道)

带有内置 MML 的Oracle 内置 MML

介质管理

要将磁带存储用于数据库备份,RMAN 需要使用 Oracle Secure Backup 或介质管理器。

“附录 F”中对 Oracle Secure Backup 进行了详细的介绍。

介质管理器是一种用于加载、标记和卸载连续介质的实用工具,例如用于备份、存储和恢

复数据的磁带机。Oracle 数据库调用 MML 软件例行程序将数据文件备份到由介质管理器

控制的介质上,或还原这些介质上的数据文件。

一些介质管理产品可完善地管理 Oracle 数据文件与备份设备之间的所有数据移动。某些

产品在存储子系统与介质子系统之间使用了高速连接,从而可大幅减少主数据库服务器的

备份负载。

请注意,如果是备份到磁盘,Oracle 数据库则不需要连接到介质管理库 (MML) 软件。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 59:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-13

介质管理(续)

Oracle Backup Solutions Program (BSP) 提供了一系列介质管理产品,这些产品均符合

Oracle 的 MML 的规范。通过与 MML 接口兼容的软件,Oracle 数据库会话可将数据备份

到介质管理器,并可请求介质管理器还原备份。请咨询您的介质供应商以确定其是否是

Oracle BSP 的成员。

必须先安装介质管理器软件并确保 RMAN 可与该软件进行通信,然后才能使用 RMAN 与介质管理器。有关该过程的说明应可从介质管理器供应商的软件文档中获得。

请根据要安装的产品执行以下基本步骤:

1. 在目标主机或生产网络中安装并配置介质管理软件。此阶段不需要集成 RMAN。

2. 请确保在目标数据库主机上可对操作系统文件执行非 RMAN 备份。此步骤有助于以

后的问题排除。请参阅介质管理文档,了解如何将文件备份到介质管理器。

3. 获取并安装第三方介质管理模块,以便与 Oracle 数据库集成。该模块必须包含访问

介质管理器时由 Oracle 数据库加载的库。

使用介质管理器备份和还原操作

以下 Oracle Recovery Manager 脚本执行的操作是将数据文件备份到由介质管理器控制的

磁带机:run { # Allocating a channel of type 'sbt' for serial device

ALLOCATE CHANNEL ch1 DEVICE TYPE sbt; BACKUP DATAFILE 3;

}

Recovery Manager 执行该命令时,会将备份请求发送到执行备份的 Oracle 数据库会话。

Oracle 数据库会话将输出通道标识为介质管理设备,然后请求介质管理器加载磁带并写入

输出。

介质管理器会给磁带加上标签并跟踪每一磁带上文件的文件名。

介质管理器还会处理还原操作。还原文件时,会执行以下步骤:

1. Oracle 数据库请求还原某个特定文件。

2. 介质管理器确定包含文件的磁带并读取磁带。

3. 介质管理器将信息传送回 Oracle 数据库会话。

4. Oracle 数据库将文件写入磁盘。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 60:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-14

版权所有 © 2009,Oracle。保留所有权利。

将快速恢复区与 RMAN 配合使用

您可以将 RMAN 配置为使用快速恢复区。

数据库区

RMAN 备份进程

快速恢复区

DB_RECOVERY_FILE_DEST = '/u01/oracle/fra'

DB_RECOVERY_FILE_DEST_SIZE = 2G

将快速恢复区与 RMAN 配合使用

虽然 RMAN 操作不要求快速恢复区,但它可以简化磁盘空间及与备份和恢复相关的文件

的管理任务。您不需要指定备份文件的文件名,因为 RMAN 会自动生成这些文件名。使

用快速恢复区时,RMAN 会自动为其备份文件使用 Oracle Managed Files (OMF)。

每次 RMAN 在快速恢复区中创建文件时,Oracle 数据库都会更新磁盘上不再需要的文件

的列表。需要将某个文件写入快速恢复区但空间不够时,Oracle 数据库会删除位于作废

文件列表中的文件,并在预警日志中写入一条通知。

由于快速恢复区中没有文件可以删除,使快速恢复区的空间紧张或空闲空间过低时,将发

出警告。要解决该问题,可添加磁盘空间,将文件备份到第三方设备,使用 RMAN 从快

速恢复区删除文件或更改 RMAN 保留策略。通过设置 DB_RECOVERY_FILE_DEST初始

化参数来配置快速恢复区。DB_RECOVERY_FILE_DEST_SIZE参数用于指定快速恢复区

的大小。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 61:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-15

将快速恢复区与 RMAN 配合使用(续)

默认情况下,如果已经配置了快速恢复区,RMAN 会自动将备份文件放入该区内。

注:可在自动存储管理 (ASM) 实例中定位快速恢复区。快速恢复区还可与 Oracle Cluster File Storage (OCFS) 或任何本地存储一起使用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 62:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-16

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 监视快速恢复区

使用 EM 监视快速恢复区

还可以通过 EM 数据库控制台查看快速恢复区的相关实时指标。在“Maintenance(维

护)”页上,向下滚动到“Related Links(相关链接)”部分,然后选择“All Metrics(所有度量)”。浏览列表,然后单击“Recovery Area(恢复区)”。

出现的页面将显示“Recovery Area Free Space (%)(恢复区空闲空间 (%))”指标,以百

分比显示恢复区的空闲空间。单击该百分比数字可查看恢复区使用图。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 63:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-17

版权所有 © 2009,Oracle。保留所有权利。

快速恢复区的空间使用

• 将保留策略配置为适合数据库的最小值。

• 定期备份归档日志文件并在完成备份后删除这些文件。

• 使用 RMAN REPORT OBSOLETE 和 DELETE OBSOLETE 命令删除不再需要的备份和文件副本。

快速恢复区的空间使用

为避免用完快速恢复区的空间,不应在该区域内存储用户管理的文件。还应根据需要或在

适当的时候执行以下步骤:

• 使用 RMAN 从恢复区内删除不需要的文件。

• 经常使用 RMAN 对恢复区进行备份。

• 更改 RMAN 保留策略,缩短备份的保留期。

• 更改 RMAN 归档日志删除策略。

• 如果经常用完空间,请添加磁盘空间,并增加 DB_RECOVERY_FILE_DEST_SIZE数据库初始化参数的值。

例如,如果要在恢复区内备份归档日志文件,并在成功备份后删除这些文件,需要使用

以下 RMAN 命令:BACKUP ARCHIVELOG ALL DELETE ALL INPUT;

如果使用的备份方法不是 RMAN,您也必须使用 RMAN 从快速恢复区中删除这些文件。

成功备份归档日志文件并从磁盘上删除这些文件后,可使用 RMAN CROSSCHECK和

DELETE命令从快速恢复区中回收归档日志空间。您应当定期或在每次备份后执行此操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 64:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-18

版权所有 © 2009,Oracle。保留所有权利。

V$FLASH_RECOVERY_AREA_USAGE

可通过查询 V$FLASH_RECOVERY_AREA_USAGE 来查看

快速恢复区磁盘空间使用情况。

SQL> SELECT file_type, 2 percent_space_used AS used,3 percent_space_reclaimable AS reclaimable,4 number_of_files AS number5 FROM v$flash_recovery_area_usage ;

FILE_TYPE USED RECLAIMABLE FILES ----------------- --------- ----------- ------

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 65:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-19

版权所有 © 2009,Oracle。保留所有权利。

V$FLASH_RECOVERY_AREA_USAGE

V$FLASH_RECOVERY_AREA_USAGE 查询的输出

FILE_TYPE USED RECLAIMABLE FILES------------ ---------- ----------- ----------CONTROLFILE 0 0 0ONLINELOG 0 0 0ARCHIVELOG 69.13 0 593BACKUPPIECE 0 0 0IMAGECOPY 0 0 0FLASHBACKLOG 1.77 0 37

V$FLASH_RECOVERY_AREA_USAGE

这些列具有下列意义:

• FILE_TYPE:该列表示文件类型,可以是以下任一值:CONTROLFILE、ONLINELOG、ARCHIVELOG、BACKUPPIECE、IMAGECOPY、FLASHBACKLOG。

• PERCENT_SPACE_USED:该列表示快速恢复区内当前用于存储给定类型文件的区

域的百分比。

• PERCENT_SPACE_RECLAIMABLE:该列表示快速恢复区内当前用于存储那些由于

作废、冗余或已备份到第三方设备而可以删除的给定类型文件的区域百分比。

• NUMBER_OF_FILES:该列表示指定文件类型的文件数。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 66:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-20

版权所有 © 2009,Oracle。保留所有权利。

备份快速恢复区

RMAN> BACKUP RECOVERY FILES;

备份快速恢复区

由于快速恢复区内包含的数据都非常重要,因此应定期对快速恢复区内的文件进行备份。

要执行此操作,请定位至“Maintenance(维护)”标签页。在该页中,单击

“Backup/Recovery(备份/恢复)”区域内的“Schedule Backup(调度备份)”链接。从

“Backup Strategy(备份策略)”下拉列表中选择“Customized(自定义)”,然后选择

“All Recovery Files on Disk(磁盘上的所有恢复文件)”选项。也可以使用 RMAN BACKUP命令来备份快速恢复区。

• RMAN> BACKUP RECOVERY AREA;

该命令将对当前快速恢复区目的地内创建的、以前尚未备份过的所有快速恢复文件

进行备份。属于此类别范围内的文件包括完全备份集和增量备份集、控制文件自动

备份、归档日志和数据文件副本。闪回日志、增量位图、当前控制文件以及联机重

做日志文件等其它文件将不备份。

• RMAN> BACKUP RECOVERY FILES;该命令将对磁盘中以前尚未备份过的所有恢复文件进行备份。属于此类别范围内的

文件包括完全备份集和增量备份集、控制文件自动备份、归档日志和数据文件副本。

使用 BACKUP RECOVERY AREA或 BACKUP RECOVERY FILES命令时,目标必须是

磁带。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 67:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-21

版权所有 © 2009,Oracle。保留所有权利。

使用快速恢复区的优点

对与恢复相关的文件使用快速恢复区:

• 便于确定数据库备份的位置

• 自动管理为恢复文件分配的磁盘空间

• 不需要更改现有脚本

• 可将数据库备份、归档日志和控制文件备份均放入快速

恢复区

使用快速恢复区的优点

根据初始化参数 DB_RECOVERY_FILE_DEST_SIZE和 DB_RECOVERY_FILE_DEST的

设置,对所有与恢复相关的文件使用快速恢复区可简化数据库的实时管理任务。Oracle Corporation 建议对所有与恢复相关的文件使用快速恢复区。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 68:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-22

版权所有 © 2009,Oracle。保留所有权利。

设置影响 RMAN 的参数

• 数据库初始化参数

– CONTROL_FILE_RECORD_KEEP_TIME

– DB_RECOVERY_FILE_DEST和

DB_RECOVERY_FILE_DEST_SIZE(如果使用快速

恢复区)

• 环境变量

– NLS_DATE_FORMAT

– NLS_LANG

设置影响 RMAN 的参数

RMAN 在 RMAN 资料档案库中存储有关目标数据库及其备份和恢复操作的信息。根据备

份的频率、生成的归档重做日志文件数以及 RMAN 记录的保留期间,RMAN 资料档案库

中存储的信息量可能会增加。

CONTROL_FILE_RECORD_KEEP_TIME参数指定 RMAN 信息在被覆盖之前可在控制文

件中存储的 少天数。值越小,信息覆盖得越快,从而使控制文件的增长程度 小。如果

使用恢复目录,应选择较小的值。该参数仅适用于控制文件中可循环重用的记录,例如归

档日志记录和各种备份记录。该参数不适用于诸如数据文件、表空间以及重做线程记录等

记录,除非表空间中删除了相应的对象,否则这些记录将永远不再重用。默认值为 7 天。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 69:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-23

设置影响 RMAN 的参数(续)

如果定义了快速恢复区,那么默认情况下,备份文件就将写入快速恢复区。可使用

DB_RECOVERY_FILE_DEST和 DB_RECOVERY_FILE_DEST_SIZE初始化参数来设置

快速恢复区的大小和位置。还可指定保留策略,以指明可以放弃备份的时间。然后,

RMAN 将对备份存储进行管理,它会在需要空间时删除作废的备份以及已经复制到磁带

上的备份,但在空间允许的情况下,仍会在磁盘上保留尽可能多的备份。这样可尽量减

少数据恢复操作过程中的磁带备份还原,从而缩短还原和恢复的时间。可以随时通过设

置 DB_RECOVERY_FILE_DEST_SIZE初始化参数来调整快速恢复区的大小,该参数是

动态的。

NLS_DATE_FORMAT和 NLS_LANG环境变量将确定 RMAN 命令中(如 RESTORE、RECOVER和 REPORT)时间参数使用的格式。

未装载的数据库假定使用默认字符集,即 US7ASCII。如果字符集与默认值不同,则需要相应地设置 NLS_LANG。例如,如果字符集为 WE8DEC,则可以将 NLS_LANG参数设置如下:

NLS_LANG=american_america.we8dec

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 70:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-24

版权所有 © 2009,Oracle。保留所有权利。

RMAN 使用注意事项

• 资源:共享内存,多进程

• 授予用户的权限:

– 数据库:SYSDBA

– 操作系统:访问设备的权限

• 远程操作:

– 设置口令文件

– 确保口令文件已备份

RMAN 使用注意事项

使用 Oracle Recovery Manager 之前,应注意以下几点:

• 系统中的共享资源:RMAN 的大部分工作都是通过 Oracle 数据库进程来执行的。也

可以并行执行这些操作以提高吞吐量。这表明 PROCESSES数据库参数必须足够大。

对于操作系统资源,这表示可能需要增加共享内存和“semaphore(信号)”设置。

• 执行授权操作的用户:必须确定哪些用户能够执行授权操作。然后,在操作系统级

别和 Oracle 数据库内为用户帐户授予所需的权限。例如,要启动或关闭数据库,用

户应具有 SYSDBA权限。

• 远程操作:需要使用口令文件通过 Oracle Net 连接到目标数据库,以便从远程计算

机执行授权操作,例如启动和关闭等。

• 使用恢复目录:使用恢复目录时,RMAN 可以执行更多种自动备份和恢复功能。使

用恢复目录会涉及到存储空间和维护方面的任务。您应决定是否需要一个数据库专

门用于维护几个目标数据库的恢复目录。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 71:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-25

版权所有 © 2009,Oracle。保留所有权利。

RMAN 的连接类型

目标数据库 恢复

目录数据库辅助数据库

Oracle RecoveryManager

RMAN 的连接类型

可使用 Oracle Recovery Manager 连接到以下类型的数据库:

• 目标数据库:RMAN 可通过 SYSDBA权限将您连接到目标数据库。您必须拥有该权

限才能成功连接。目标数据库是您要在其中执行常见 RMAN 操作的实例。

• 恢复目录数据库:这是一个配置用于 RMAN 资料档案库的可选数据库。需要检索恢

复目录数据库内存储的信息(如备份信息或存储脚本)时,连接到该数据库。

• 辅助数据库:辅助数据库可以是:

- 使用 RMAN DUPLICATE命令创建的数据库

- 表空间时间点恢复 (TSPITR) 过程中使用的临时数据库

- 备用数据库,或生产数据库的副本,可用于进行灾难恢复厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 72:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-26

版权所有 © 2009,Oracle。保留所有权利。

启动 RMAN

• 本地启动 RMAN

• 远程启动 RMAN

UNIX: $ ORACLE_SID=DB01; export ORACLE_SID$ rman target /

rman target sys/password@DB01

Windows NT: C:\> set ORACLE_SID=DB01 C:\> rman target /

启动 RMAN 本地连接

要进行本地 RMAN 连接,请在操作系统提示符下输入以下内容:

UNIX: $ ORACLE_SID=DB01; export ORACLE_SID

$ rman target /

Windows:C:\> set ORACLE_SID=DB01

C:\> rman target /

如果连接到目标数据库时没有指定用户 ID 或口令,那么将通过操作系统验证使用斜线

作为用户 SYS来建立一个连接。

您也可按如下所示来指定 NOCATALOG关键字:$ rman target / nocatalog

NOCATALOG是默认模式,用于表示您使用的 RMAN 没有恢复目录。

远程连接

要从另一台服务器进行连接,需要为目标数据库使用 Oracle Net 服务名:$ rman target sys/target_pwd@DB01

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 73:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-27

版权所有 © 2009,Oracle。保留所有权利。

其它 RMAN 命令行参数

• 将 RMAN 输出写入日志文件

• 调用 RMAN 时执行命令文件

• 启动 RMAN 时建立数据库连接

$ rman TARGET sys/oracle CMDFILE=$HOME/scripts/my_rman_script.rcv

$ rman TARGET sys/oracle LOG=$HOME/oradata/u03/rman.log APPEND

$ rman TARGET SYS/sys_pwd@orcl CATALOG rman/rman@rcat

其它 RMAN 命令行参数

LOG=filename参数指定用于记录 RMAN 输出的文件。如果没有指定,RMAN 会将其

消息日志文件写入标准输出。

APPEND关键字指出新的输出应附加在消息日志文件的末尾。

可使用 CMDFILE=filename来运行包含 RMAN 命令的文件。运行命令文件后,RMAN 将终止。

如果命令行中指定的文件名不是以字母字符开头,那么该文件名必须用单引号括起来。

可指定 RMAN 的连接选项,例如:

• AUXILIARY:将连接字符串指定为辅助数据库

• CATALOG:将连接字符串指定为包含恢复目录的数据库

• NOCATALOG:指明所使用的 RMAN 没有恢复目录

• TARGET:将连接字符串指定为目标数据库

使用 SCRIPT子句时,连接到目标数据库和恢复目录(使用 TARGET和 CATALOG子句

指定)后,RMAN 将对目标数据库运行恢复目录中的指定存储脚本。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 74:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-28

版权所有 © 2009,Oracle。保留所有权利。

配置 RMAN 的永久性设置

• RMAN 预设有一些默认的配置设置

• 使用 CONFIGURE 命令可以:

– 配置自动通道

– 指定备份保留策略

– 指定要创建的备份副本数

– 将默认备份类型设置为 BACKUPSET或 COPY

– 限制备份集的大小

– 在备份中排除表空间

– 启用和禁用备份优化

– 配置控制文件的自动备份

配置 RMAN 的永久性设置

为了简化实时使用 RMAN 进行备份和恢复的操作,RMAN 允许对每个目标数据库设置

一些永久性配置设置。这些设置可以控制处理该数据库时 RMAN 许多方面的行为。可在

RMAN 资料档案库中保存永久性配置信息,例如通道参数、并行度以及默认设备类型。

RMAN 资料档案库存储在控制文件或恢复目录数据库中。

这些设置都提供了默认值,您可以立即使用 RMAN。不过,如果采用更高级的备份和恢

复策略,则必须更改这些设置才能实施该策略。可使用 CONFIGURE命令来配置用于

RMAN 备份、还原、复制和维护等作业的永久性设置。这些设置在所有 RMAN 会话中均

有效,直到清除或更改了配置为止。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 75:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-29

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 配置 RMAN 设置

使用 EM 配置 RMAN 设置

使用 Oracle Enterprise Manager 可指定实例的备份设置。要指定备份设置,在

“Maintenance(维护)”页上,请在“Backup/Recovery Settings(备份/恢复设置)”

部分选中“Backup Settings(备份设置)”。

“Backup Settings(备份设置)”属性页包含三个选项卡,即“Device(设备)”、

“Backup Set(备份集)”和“Policy(策略)”参数。您可访问:

• “Device(设备)”页,以设置磁盘和磁带配置设置,包括介质管理库 (MML) 设置

• “Backup Set(备份集)”页(如幻灯片中所示),以指定备份集参数并输入主机身

份证明

• “Policy(策略)”页,以在启动备份前设置各种备份和保留策略,例如自动备份控

制文件和 SPFILE。使用“Policy(策略)”页还可配置块更改跟踪支持,这种功能

可提供速度更快的增量备份。

注:备份设置将更改数据库范围的设置,并且适用于不覆盖备份级设置的任何备份。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 76:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-30

版权所有 © 2009,Oracle。保留所有权利。

控制文件自动备份

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

最佳方法:Oracle 建议您启用控制文件自动备份。

控制文件自动备份

为了避免丢失当前控制文件的副本,应将 RMAN 配置为对控制文件进行自动备份。控制

文件的自动备份与备份命令明确请求的对当前控制文件的备份无关。如果在 NOCATALOG模式下运行 RMAN,特别建议您激活控制文件自动备份功能。否则,如果丢失了控制

文件,就可能无法恢复数据库。

要配置控制文件自动备份,请使用 Oracle Enterprise Manager 或使用以下 RMAN 命令修改

数据库的备份策略:CONFIGURE CONTROLFILE AUTOBACKUP ON;

默认情况下,控制文件自动备份功能被禁用。如果启用了控制文件自动备份,则 RMAN 在出现以下一种情况时就会自动备份控制文件和当前服务器参数文件(如果该文件用来

启动数据库):

• 在 RMAN 资料档案库中记录了成功的备份。

• 数据库的结构更改影响了控制文件的内容,因此必须进行备份。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 77:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-31

控制文件自动备份(续)

对于所有设备类型,控制文件自动备份文件名都有一个默认格式 %F,因此 RMAN 不需要

资料档案库就可以猜测到文件位置,并还原该文件。这种可变格式将转换为

c-IIIIIIIIII-YYYYMMDD-QQ,其中:

• IIIIIIIIII代表 DBID • YYYYMMDD是备份生成当天的时间戳

• QQ是十六进制序列,以 00开始, 大值为 FF

可使用 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE type TO 'string'命令更改默认格式。字符串的值必须包含替代变量 %F,并且不能

包含其它替代变量。例如:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/oradata/cf_ORCL_auto_%F';

除非另有指定,否则控制文件自动备份将存储在快速恢复区内。

使用控制文件自动备份,即使无法访问当前控制文件、恢复目录和服务器参数文件,

RMAN 仍可恢复数据库。因为用于存储自动备份的文件遵从已知格式,RMAN 可从自动

备份中搜索并还原服务器参数文件或控制文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 78:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-32

版权所有 © 2009,Oracle。保留所有权利。

保留策略

• 保留策略描述哪些备份将被保留以及保留时间。

• 有以下两种类型的保留策略:

– 恢复窗口:建立一个时间段,在该时段内必须可以进行

时间点恢复

– 冗余:建立必须保留的固定数量的备份

• 这些策略互相排斥,并且都可以使用 CONFIGURE命令进行设置。

现在

七天保留

文件 1文件 2文件 2 需要进行备份:

保留策略

保留策略描述哪些备份将被保留以及保留时间。可通过 CONFIGURE命令设置保留策略的

值。 佳方案是确定一个时段,在此期间内可以发现逻辑错误,然后通过执行时间点恢复

正好恢复到错误前的那一点来修复受影响的对象。这段时间期称为恢复窗口。此策略用天

数指定。对于每个数据文件,都必须始终存在一个满足以下条件的备份:SYSDATE - checkpoint_time <= recovery_window

例如,如果策略设置如下:RMAN> CONFIGURE RETENTION POLICY 2 TO RECOVERY WINDOW OF 7 DAYS;

那么,每个文件必须有一个满足以下条件的备份:SYSDATE - (SELECT checkpoint_time

FROM V$DATAFILE WHERE file#= …) >= 7

在本幻灯片的示例中,文件 1 有一个正好是两天前进行的备份,所以它不满足保留策略。

文件 2 有一个九天的旧备份,其确实满足该策略。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 79:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-33

保留策略(续)

应保持恢复窗口时间期小于或等于控制文件参数 CONTROL_FILE_RECORD_KEEP_TIME的值,以防止控制文件中较早备份的记录被覆盖。

如果需要保留一定数量的备份,可以通过冗余选项设置保留策略。此选项要求在任何备份

被标识为过时之前将指定数量的备份列入目录。默认保留策略的冗余度为 1,这表示在任

意指定时间一个文件只存在一个备份。如果已经备份了相同文件的较新版本,那么该文件

原来的备份将视为作废。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 80:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-34

版权所有 © 2009,Oracle。保留所有权利。

管理永久性设置

• 使用 SHOW 命令列出当前设置:

• 使用 CLEAR 命令将任何永久性设置重置为其默认值:

RMAN> SHOW CONTROLFILE AUTOBACKUP FORMAT; RMAN> SHOW EXCLUDE; RMAN> SHOW ALL;

RMAN> CONFIGURE BACKUP OPTIMIZATION CLEAR; RMAN> CONFIGURE MAXSETSIZE CLEAR; RMAN> CONFIGURE DEFAULT DEVICE TYPE CLEAR;

管理永久性设置

使用 RMAN SHOW命令,可查看 RMAN 配置设置。如果连接到目标数据库时执行 SHOW ALL,则仅显示特定于节点的配置和数据库配置。

通过运行带有 CLEAR选项的 CONFIGURE命令,可将任何相应的 CONFIGURE命令返回

为默认值。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 81:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-35

版权所有 © 2009,Oracle。保留所有权利。

通道分配

通道 (DISK)BACKUPRESTORE RECOVER

服务器会话

服务器会话

目标数据库

通道 (SBT)

RMAN

通道分配

通道表示传输到某设备类型的一串数据。执行备份和恢复命令之前必须对通道进行分配。

每个分配的通道都将在 RMAN 可执行程序与目标数据库实例之间建立连接。将为每个分

配的通道创建目标数据库的 Oracle 数据库进程。

Oracle Recovery Manager 中发出的每条 BACKUP、COPY、RESTORE或 RECOVER命令都

至少需要一个通道。所需的介质类型将决定所分配通道的类型。所分配的通道数是备份、

还原或恢复过程中使用的 大并行度。

可查询 V$BACKUP_DEVICE视图来确定支持的设备类型。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 82:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-36

版权所有 © 2009,Oracle。保留所有权利。

自动和手动通道分配

• 自动通道是预配置的通道,用于后续命令。要更改自动

通道分配的默认设备类型,可使用:

• 手动分配的通道是可覆盖自动通道设置的通道。对于

以下运行块,该通道将覆盖自动通道:

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

RMAN> RUN { 2> ALLOCATE CHANNEL c1 DEVICE TYPE disk;3> BACKUP DATAFILE'/u01/oradata/user01.dbf';4> }

自动和手动通道分配

通过 CONFIGURE命令,您可以使用自动通道分配对所有 RMAN 会话中使用的通道进行

预配置。自动通道将应用于任何未手动分配通道的 RMAN 作业。

默认情况下,RMAN 已预配置了一个磁盘通道,从而您可以在不进行任何手动配置的情

况下备份到磁盘。因此,如果您是备份到磁盘,而不是介质管理器,您可以立即开始备份

到磁盘。

在 RMAN 提示符下发出的带有 RUN命令的 ALLOCATE CHANNEL命令和 ALLOCATE CHANNEL FOR MAINTENANCE命令,都是用于对通道进行手动分配。手动通道分配将

覆盖自动分配。

可使用手动分配的通道发出删除或更改现有备份状态的命令,例如 CHANGE、DELETE和

CROSSCHECK命令。请注意,如果使用 CONFIGURE设置自动通道,那么 RMAN 可使用

这些自动通道进行维护操作;您不必手动对其进行分配。手动分配的维护通道不能用于其

它任何 I/O 操作,例如备份或复制。

自动通道功能与手动通道功能互相排斥。RMAN 使用它们中的一个或另一个执行给定

作业。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 83:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-37

版权所有 © 2009,Oracle。保留所有权利。

通道控制选项

• 配置并行度:

• 指定备份片段大小的最大值:

• 定义所生成备份文件的名称格式:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3;

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK 2> MAXPIECESIZE 2G;

RMAN> RUN {2> ALLOCATE CHANNEL d1 DEVICE TYPE DISK 3> FORMAT '/disk1/backups/%U'; 4> BACKUP DATABASE PLUS ARCHIVELOG; }

通道控制选项

可指定已分配通道的控制选项,以更改其默认行为。手动分配通道和自动分配通道的可

配置控制选项包括:

• CONNECT:目标实例的连接字符串

• FORMAT:在相应通道上创建的备份片段名称将使用的格式

• MAXOPENFILES:在任何给定时间,BACKUP命令可打开的 大输入文件数(默认

值为 8)• MAXPIECESIZE:在相应通道上创建的每个备份片段大小的 大值,以字节(默

认)、千字节 (K)、兆字节 (M) 或千兆字节 (G) 指定厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 84:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-38

通道控制选项(续)

如果通道设备类型为 SBT或 SBT_TAPE,则还可以指定:

• PARMS="ENV(…)":为与该 RMAN 客户机相应的服务器会话设置环境变量。

• PARMS="SBT_LIBRARY=…":指定由该通道使用的 MML 的位置。

对于自动通道,还可以将磁盘或磁带备份的默认并行度和默认备份类型配置为

BACKUPSET、COMPRESSED BACKUPSET或 COPY。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 85:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-39

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 对 RMAN 资料档案库使用控制文件或恢复目录

• 使用 CONFIGURE 更改 RMAN 默认设置

• 对 RMAN 操作使用快速恢复区

• 使用 v$ 视图和 Oracle Enterprise Manager 监视快速

恢复区

• 实施恢复窗口和冗余保留策略

• 实施手动和自动通道分配

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 86:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 2-40

版权所有 © 2009,Oracle。保留所有权利。

练习概览:配置 RMAN

本练习包含以下主题:

• 在默认的 NOCATALOG 模式下使用 Oracle Recovery Manager 与目标数据库连接

• 显示默认的 RMAN 配置设置

• 配置控制文件自动备份

• 更改数据库的备份保留策略

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 87:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

使用 Recovery Manager

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 88:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成下列工作:

• 使用 RMAN BACKUP 命令创建备份集和映像副本

• 管理通过 RMAN 获取的备份和映像副本

命令BACKUPBlock C.T.Inc. UpdateLISTREPORTDELETE

课程目标

Oracle Recovery Manager (RMAN) 是 Oracle 数据库的一个组件,用于执行备份和恢复操作。

Oracle Enterprise Manager (EM) 提供了最常用的 RMAN 功能的图形界面。

《Oracle Database 10g:数据库管理-课堂练习 I》一课将演示使用 EM 数据库控制台的

一些基本 RMAN 操作,因此用于 RMAN 的图形界面将不在本课中详细介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 89:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-3

版权所有 © 2009,Oracle。保留所有权利。

发出 Oracle Recovery Manager 命令

• 交互式客户机

– 在 RMAN 提示符下输入命令。

– 执行分析时或运行报告或存储脚本时使用。

• 批处理模式

– 与自动作业配合使用。

– 启动 RMAN 时指定命令文件。

– 指定日志文件名来捕获会话日志。

• 管道接口

– 指定 PIPE 命令行参数。

– 用于在会话之间或在 RMAN 与外部应用程序之间通信

数据。

发出 Oracle Recovery Manager 命令

Oracle Recovery Manager 具有自己的命令语言。通过使用命令行接口 (CLI),可以多种方

式输入 RMAN 命令。

若要以交互方式运行 RMAN 命令,请启动 RMAN,然后将命令输入到命令行接口。例如:

$ rman TARGET sys/sys_pwd@db1

RMAN> BACKUP DATABASE;

还可以将 RMAN 命令输入到文件中,然后通过在命令行中指定命令文件名来运行该文件。

此种方式称为批模式处理。命令文件的内容应该与要在命令行中输入的命令相同。例如:

$ rman TARGET SYS/sys_pwd@prod1 @'/oracle/backup_all_l0.rcv'

在批处理模式下运行时,RMAN 从命令文件读取输入并将输出消息写入日志文件(如果

指定)。RMAN 在编译命令文件或执行任何命令前会对该文件整体进行语法分析。不必

在文件中放置退出命令,因为到达文件结尾时 RMAN 会自动终止。

另一种方式是通过 RMAN 管道接口向 RMAN 发出命令并接收那些命令的输出。RMAN 使用 DBMS_PIPE PL/SQL 程序包获取命令并发送输出。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 90:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-4

发出 Oracle Recovery Manager 命令(续)

PIPE命令行参数是通过管道接口进行调用。RMAN 使用两个专用管道:一个用于接收

命令,另一个用于发送输出。管道的名称源自 PIPE参数的值。

例如:

% rman PIPE abc TARGET SYS/pwd@trgt

RMAN 在目标数据库中打开这两个管道:一个是 ORA$RMAN_ABC_IN,RMAN 使用它接

收用户命令;另一个是 ORA$RMAN_ABC_OUT,RMAN 使用它将所有输出发送回 RMAN。

输入和输出管道中的所有消息都是 VARCHAR2类型。

使用管道接口时,RMAN 不通过使用操作系统 Shell 读取或写入任何数据。您可使用管道

与相同实例中的其它会话或某个等待应用程序(如 UNIX 程序)进行通信。通过使用此

接口,可以编写 RMAN 的可移植、可编程接口。

有关 RMAN 使用管道的详细信息,请参阅《Oracle 数据库备份和恢复高级用户指南》。

有关 DBMS_PIPE程序包以及在 Oracle 数据库内创建管道的详细信息,请参阅《PL/SQL 程序包和类型参考》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 91:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-5

版权所有 © 2009,Oracle。保留所有权利。

RMAN 命令的类型

RMAN 命令具有以下类型:

• 独立命令:

– 在 RMAN 提示符下单独执行

– 不能显示为 RUN内的子命令

• 作业命令:

– 必须位于 RUN命令的大括号内

– 以组的形式执行

一些命令既可以作为独立命令执行,也可以作为作业命令

执行。

RMAN 命令的类型

您可发出两种基本类型的 RMAN 命令:独立命令和作业命令。

独立命令在 RMAN 提示符下执行,通常是自包含的。以下是一些独立命令:

• CHANGE

• CONNECT

• CREATE CATALOG、RESYNC CATALOG

• CREATE SCRIPT、DELETE SCRIPT、REPLACE SCRIPT

作业命令通常被组合在命令块内并按顺序执行。如果块内的任一命令失败,RMAN 就会

停止处理,不再执行块内的其它命令。但仍然保留所有已执行命令的结果,不会以任何

形式撤消。

仅能作为作业命令运行的命令示例是 ALLOCATE CHANNEL。因为仅为执行作业分配通道,

所以该命令不能作为独立命令发出。有一些命令既可以在提示符下发出,也可以在 RUN命令块内发出,如 BACKUP DATABASE。如果发出的是独立命令,则 RMAN 将使用自动

通道分配功能分配所需的通道。

您可以交互模式或批处理模式执行独立命令和作业命令。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 92:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-6

版权所有 © 2009,Oracle。保留所有权利。

作业命令:示例

作业命令显示在 RUN 命令块内:

RMAN> RUN {2> BACKUP AS BACKUPSET3> FORMAT '/u01/db01/backup/%d_%s_%p'4> DURATION 10:00 MINIMIZE LOAD 5> (DATABASE); 6> SQL 'alter system archive log current'; 7> }

作业命令:示例

与独立命令不同,作业命令必须显示在 RUN命令的大括号内。以下是作业命令的示例:

• ALLOCATE CHANNEL

• SWITCH

RMAN 按顺序执行 RUN命令块内的作业命令。如果块内的任一命令失败,RMAN 就会

停止处理,不再执行块内的其它命令。事实上,RUN命令定义了一组执行的命令。RUN块内的最后一个命令完成后,Oracle 数据库会释放所有服务器端资源,如块内分配的 I/O 缓冲区或 I/O 从进程。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 93:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-7

版权所有 © 2009,Oracle。保留所有权利。

RMAN 命令:概览

目标数据库

REPORTLIST

目录数据库

Oracle Enterprise Manager

RESTORERECOVERFLASHBACK

SPFILE

BACKUP

控制文件

归档日志文件

RMAN

目录维护CROSSCHECK

DELETE…EXPIREDCHANGE

存储脚本

RMAN 命令:概览

对目标数据库运行的典型 RMAN 命令包括:

• BACKUP用于备份数据库、表空间、数据文件(当前或副本)、控制文件(当前或

副本)、SPFILE、归档日志或者目标数据库或备用数据库的备份集。对备份集进行

备份是一种将备份从磁盘移动到磁带的简便方法

• DUPLICATE用于从目标数据库的备份(备份集或映像副本)处创建克隆数据库或备

用数据库

• FLASHBACK用于执行闪回数据库操作,将数据库返回至某一目标时间(或之前),

该时间点由时间、SCN 或日志序列号指定

• RECOVER用于从备份或映像副本恢复文件,RESTORE用于从备份或映像副本还原

文件

RMAN 报告命令包括:

• LIST用于查询恢复目录或控制文件,并生成记录了备份、副本、归档重做日志以及

数据库原型的列表

• REPORT用于执行对恢复目录或控制文件的详细分析

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 94:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-8

RMAN 命令:概览(续)

RMAN 提供了以下用于目录维护的命令集:

• CROSSCHECK检查磁盘或磁带上备份或副本的状态。

• DELETE列出指定的备份对象并提示您确认是否删除它们。

• CHANGE变更资料档案库中备份对象的状态。

• LIST显示运行 CROSSCHECK/DELETE EXPIRED命令时将处理的内容。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 95:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-9

版权所有 © 2009,Oracle。保留所有权利。

BACKUP 命令

RMAN> BACKUP AS BACKUPSET2> FORMAT '/BACKUP/df_%d_%s_%p.bus'3> TABLESPACE hr_data;

备份集

数据文件 1

数据文件 2

数据文件 3

数据文件 1

数据文件 2

数据文件 3

表空间HR_DATA

命令> BACKUP

Block C.T.Inc. UpdateLISTREPORTDELETE

BACKUP 命令

备份是数据库中数据的副本,可用来重建数据。使用 RMAN 创建的备份可以是映像副本,

也可以是备份集。映像副本是与原数据库文件完全相同的副本。RMAN 还能以称之为备

份集的 RMAN 专用格式存储其备份。备份集是由一些文件组成的、被称为备份片断的

集合,每个备份片断可能包含一个或多个数据库文件备份。

使用 RMAN 执行备份时,可指定:

• 要执行备份的类型。可以执行整个数据库的备份,以在文件中包含所有使用的数据

块(FULL备份),或者执行增量备份 (INCREMENTAL)。如果启用了 CONFIGURE CONTROLFILE AUTOBACKUP,RMAN 会在 BACKUP命令后自动备份控制文件和当

前服务器参数文件。

• 要备份的内容。有效值是 DATABASE、DATAFILE、TABLESPACE、ARCHIVELOG、CURRENT CONTROLFILE或 SPFILE。

• 是创建映像副本 (AS COPY) 还是创建备份集 (AS BACKUPSET) • 备份片段的文件名格式和位置 (FORMAT) • 应从备份集中排除哪些数据文件或归档重做日志 (SKIP) • 备份集大小的最大值 (MAXSETSIZE) • 成功创建了备份集时应删除输入文件 (DELETE INPUT)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 96:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-10

版权所有 © 2009,Oracle。保留所有权利。

备份约束条件

• 数据库必须已装载或打开。

• 不能备份联机重做日志。

• 在 NOARCHIVELOG 模式下仅可使用“干净”备份。

• 在 ARCHIVELOG 模式下仅可使用“当前”数据文件

备份。

备份约束条件

使用 Oracle Recovery Manager 执行备份时,必须注意以下各项:

• 目标数据库必须已装载,以便 Oracle Recovery Manager 进行连接。

• 不支持联机重做日志备份。

• 如果目标数据库处于 NOARCHIVELOG模式,则仅能执行“干净”表空间和数据文件

备份(即“正常脱机”或“只读”表空间的备份)。仅当数据库先完全关闭,然后

在 MOUNT模式下重新启动时,才能执行数据库备份。

• 如果目标数据库处于 ARCHIVELOG模式,则仅能备份“当前”数据文件(通过恢复,

还原的数据文件变为当前状态)。

• 如果使用恢复目录,则恢复目录数据库必须处于打开状态。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 97:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-11

版权所有 © 2009,Oracle。保留所有权利。

并行备份集

为提高性能,分配多个通道并将文件分配给特定通道。

数据文件 4

数据文件 1

数据文件 5

通道

MML 备份片段 1

备份片段 2

数据文件 2

数据文件 3

数据文件 9

通道

MML

数据文件 6

数据文件 7

数据文件 8

备份片段 3

通道

MML

并行备份集

可通过将 CONFIGURE命令的 PARALLELISM选项设置为大于 1 的值,或通过手动分配多个通道,来配置并行备份。RMAN 并行执行其操作,然后并行写入多个备份集。多个服务器会话承担备份指定文件的工作。

示例

RMAN> RUN {

2> ALLOCATE CHANNEL c1 DEVICE TYPE sbt;

3> ALLOCATE CHANNEL c2 DEVICE TYPE sbt;

4> ALLOCATE CHANNEL c3 DEVICE TYPE sbt;

5> BACKUP

6> INCREMENTAL LEVEL = 0

7> (DATAFILE 1,4,5 CHANNEL c1)

8> (DATAFILE 2,3,9 CHANNEL c2)

9> (DATAFILE 6,7,8 CHANNEL c3);

10> ALTER SYSTEM ARCHIVE LOG CURRENT;

11> }

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 98:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-12

并行备份集(续)

备份数据文件时,可以通过其路径名或其文件编号指定要备份的文件。例如,以下两个

命令执行相同的操作:BACKUP DEVICE TYPE sbt DATAFILE '/home/oracle/system01.dbf'; BACKUP DEVICE TYPE sbt DATAFILE 1;

创建多个备份集并分配多个通道时,RMAN 自动并行执行其操作,然后并行写入多个备

份集。分配的服务器会话共同承担备份指定数据文件、控制文件和归档重做日志的工作。

不能跨多个通道条带化一个备份集。

可通过以下方法实现并行备份集:

• 将 PARALLELISM配置为大于 1 的值或分配多个通道

• 指定要备份的多个文件

示例

• 有九个需要备份的文件(数据文件 1 到 9)。

• 将多个数据文件分配给一个备份集,以使每个集所包含的要备份的数据块数目大致

相同(为提高效率)。

- 数据文件 1、4 和 5 被分配到备份集 1。- 数据文件 2、3 和 9 被分配到备份集 2。- 数据文件 6、7 和 8 被分配到备份集 3。

注:还可以使用 FILESPERSET参数限制备份集中所包含数据文件的数目。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 99:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-13

版权所有 © 2009,Oracle。保留所有权利。

压缩备份

RMAN> BACKUP AS2> COMPRESSED BACKUPSET3> DATABASE;

RMAN> CONFIGURE DEVICE TYPE2> DISK PARALLELISM 23> BACKUP TYPE TO 4> COMPRESSED BACKUPSET;

压缩的备份文件

数据库文件

压缩备份

压缩备份可减少存储备份集所需的空间。

使用以下命令创建数据库的压缩备份:RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;

压缩备份集功能不能用于 Oracle Database 10g 之前的数据库。数据库初始化参数

COMPATIBILITY必须至少设置为 10.0.0.0。压缩功能仅适用于备份集,不适用于映像

副本。

可以通过 CONFIGURE DEVICE TYPE命令配置 RMAN,使其自动创建压缩备份集:RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2

2> BACKUP TYPE TO COMPRESSED BACKUPSET;

默认情况下,压缩功能被禁用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 100:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-14

版权所有 © 2009,Oracle。保留所有权利。

映像副本

数据文件 3 的副本

归档日志的副本

数据文件 3

归档日志文件

数据文件 3

归档日志文件

RMAN> BACKUP AS COPY2> DATAFILE '/ORADATA/users_01_db01.dbf' 3> FORMAT '/BACKUP/users01.dbf';

RMAN> BACKUP AS COPY 4> ARCHIVELOG LIKE 'arch_1060.arc' 5> FORMAT 'arch_1060.bak';

映像副本

映像副本是单个数据文件、归档重做日志或控制文件的克隆。可以通过 BACKUP AS COPY命令或 OS 命令创建映像副本。

通过 RMAN BACKUP AS COPY命令创建映像副本时,服务器会话将验证文件中的块并

在控制文件中记录副本。

映像副本具有以下特征:

• 映像副本只能写入磁盘。处理大型文件时,复制的时间可能很长,但是由于磁盘上

提供了副本,因此可明显地减少还原时间。

• 如果文件存储在磁盘上,可以通过在 RMAN 中使用 SWITCH命令来立即使用这些文

件,该命令相当于 ALTER DATABASE RENAME FILE SQL 语句。

• 在映像副本中,无论块中是否包含数据都会复制所有的块,这是因为 Oracle 数据库

进程会复制文件,还会执行其它操作,如检查损坏的块以及在控制文件中注册副本。

要加速复制进程,可使用 NOCHECKSUM参数。

• 因为文件副本始终包含所有块,所以映像副本为完全备份或级别为 0 的增量备份的

一部分。如果副本与增量备份集一起使用,则必须使用 0 级选项。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 101:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-15

映像副本(续)

幻灯片示例中创建了两个映像副本:

• users01_db01.dbf数据文件的副本,重命名为 users01.dbf,存储在 BACKUP目录中

• 序号为 1060 的归档日志的副本

该示例假设您使用自动通道分配。如果手动分配通道,则必须在 RUN语句内包含 COPY命令,如下所示:

RMAN> RUN { 2> ALLOCATE CHANNEL c1 type disk;3> COPY 4> DATAFILE '/ORADATA/users_01_db01.dbf' to 5> '/BACKUP/users01.dbf',6> ARCHIVELOG 'arch_1060.arc' to7> 'arch_1060.bak'; 8> }

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 102:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-16

版权所有 © 2009,Oracle。保留所有权利。

备份和映像副本的标记

标记是分配给备份集或映像副本的逻辑名。

month_full_backup week_full_backup

数据文件 3

数据文件 4

备份集

数据文件1、3

数据文件2、4

备份集

备份和映像副本的标记

标记是可分配给备份集或映像副本的有意义的名称。标记的优点如下:

• 标记可提供对文件副本的集合或备份集有用的引用。

• 标记可以用于 LIST命令以轻松找到备份文件。

• 标记可以用于 RESTORE和 SWITCH命令。

• 同一标记可以用于多个备份集或文件副本。

如果非唯一的标记引用了多个数据文件,则 RMAN 会选择最新的可用文件。

示例

• 每月对数据文件 1、2、3 和 4 执行一次完全备份。尽管生成的物理文件名为

df_DB00_863_1.dbf,但控制文件中此备份的标记为 month_full_backup:RMAN> BACKUP TAG 'month_full_backup' DATAFILE 1,2,3,4;

• 每周对数据文件 3 和 4 执行一次完全备份。此备份的标记名称为

week_full_backup。RMAN> BACKUP TAG 'week_full_backup' DATAFILE 3,4;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 103:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-17

版权所有 © 2009,Oracle。保留所有权利。

BACKUP 命令选项

• 检查物理块损坏。

• 扫描逻辑损坏和物理损坏。

• 对中止前所允许检测到的损坏数量设置阈值。

• 执行备份操作前验证目标输入文件。

• 对备份集进行双重备份。

• 覆盖现有备份集或映像副本。

• 将对存储设备与磁盘上数据文件之间数据传输的控制

传递给介质管理层。

• 加密备份文件。

BACKUP 命令选项

在备份操作过程中,Oracle 数据库进程会计算每个块的校验和以检测损坏。还原副本时,

RMAN 将验证校验和。此操作称之为物理损坏检测。可使用 NOCHECKSUM选项禁止校验

和操作,加速备份进程。如果数据库已经在维护块校验和,则此选项无效。

可以使用 CHECK LOGICAL选项来测试那些通过了物理损坏校验的数据块和索引块,

看其是否存在逻辑损坏,例如,行片段或索引条目的损坏。如果检测到逻辑损坏,则将在

服务器进程的预警日志和跟踪文件中记录此块。可以通过 MAXCORRUPT参数对允许出现

逻辑损坏和物理损坏的数量设置阈值。只要所检测文件的物理损坏和逻辑损坏之和始终

低于此值,RMAN 备份操作即可完成,并且 Oracle 数据库将使用损坏块范围填充

V$DATABASE_BLOCK_CORRUPTION视图。如果超出了 MAXCORRUPT的值,则操作将

终止,并且不填充此视图。

可以使用 VALIDATE选项检查数据库文件中的物理和逻辑错误。将 BACKUP命令与

VALIDATE选项一起使用时,RMAN 将扫描指定文件并验证其内容,测试此文件能否进

行备份。此命令实际上并不备份指定文件。

“数据库安全性”一课中将对备份文件加密进行介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 104:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-18

BACKUP 命令选项(续)

通过对备份集进行双重备份,每个备份片段最多可以创建四个相同的副本。可使用以下任

一命令生成双重备份集:

• BACKUP COPIES

• SET BACKUP COPIES

• CONFIGURE ... BACKUP COPIES

RMAN 不是生成多个备份集,而是在集中生成每个备份片段的相同副本。不能将此选项

用于 BACKUP AS COPY命令来创建多个映像副本。

如果指定 REUSE,则允许 RMAN 覆盖与 BACKUP当前创建的文件具有相同文件名的现有

备份集或映像副本。

通过将存储设备与磁盘上数据文件之间的数据传输控制授予介质管理软件,PROXY复制

功能从而对指定文件执行备份操作。介质管理器(不是 RMAN)决定如何以及何时移动

数据。使用 PROXY选项运行 BACKUP时,RMAN 将执行以下步骤:

1. 搜索具有代理功能的指定设备类型的通道。如果找不到此类通道,则 RMAN 将发出

警告消息并尝试进行指定文件的常规(即非代理)备份。

2. 如果 RMAN 找到了具有代理功能的通道,则它将调用介质管理器来检查其能否代理

复制文件。如果介质管理器不能代理复制,则 RMAN 将使用常规备份集来备份文件。

如果不希望 RMAN 在代理复制失败时尝试常规复制,请使用 ONLY选项。

因为映像副本仅写入磁盘,所以不能将 PROXY选项用于 BACKUP AS COPY命令。

注:如果指定 PROXY,则 %p变量必须作为 %U内的显式变量或隐式变量包含在 FORMAT字符串中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 105:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-19

版权所有 © 2009,Oracle。保留所有权利。

备份归档重做日志

• 联机重做日志文件切换是自动的。

• 执行归档日志故障转移。

• 可以指定要备份的归档重做日志的范围。

• 归档重做日志文件的备份集不能包含任何其它类型的

文件。

RMAN> BACKUP 2> FORMAT '/disk1/backup/ar_%t_%s_%p' 3> ARCHIVELOG FROM SEQUENCE=234 4> DELETE INPUT;

备份归档重做日志

DBA 遇到的一个常见问题是,在尝试备份归档日志之前不知道其是否已经完全复制到归

档日志目的地。RMAN 可以访问控制文件或恢复目录信息,所以它知道哪些日志已经归

档,哪些日志可以在恢复过程中还原。

可以使用 BACKUP ARCHIVELOG命令备份归档重做日志文件,或者使用 BACKUP …PLUS ARCHIVELOG命令在备份数据文件和控制文件时备份归档重做日志文件。即使使

用 PLUS ARCHIVELOG命令,备份结束时归档日志也始终位于单独的备份集中;在这种

情况下,单个备份命令通常会生成多个备份集。如果希望仅备份特定归档日志文件,可以

指定要备份的归档日志的范围。与其它文件不同,归档日志会始终放入一个独立的备份

集中。

您还可以使用 BACKUP ARCHIVELOG命令的 NOT BACKED UP integer TIMES子句,

仅对至少尚未备份过指定次数的那些日志执行备份。这种方法便于在指定介质上备份归档

日志(例如,希望在磁带上至少保留每个日志的三个副本)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 106:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-20

备份归档重做日志(续)

RMAN 自动执行归档日志故障转移。如果在归档重做日志文件中检测到任何损坏块,

RMAN 将搜索其它归档目的地以获取没有损坏块的文件。

本幻灯片中的示例将序号为 234 或更大值的所有归档重做日志备份到一个备份集。归档

日志复制完后,将从磁盘上删除这些日志,并在 V$ARCHIVED_LOG视图中标记为已删除。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 107:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-21

版权所有 © 2009,Oracle。保留所有权利。

数据库整体备份

RMAN> BACKUP DATABASEPLUS ARCHIVELOG;

归档日志文件副本

SPFILE控制文件

数据文件副本

数据库整体备份

数据库整体备份是所有数据文件和控制文件的副本。也可以选择包括 SPFILE 和归档日志

文件。使用 Oracle Recovery Manager 生成所有数据库文件的映像副本非常简单,其操作

包括装载数据库、启动 RMAN 以及输入幻灯片中显示的 BACKUP命令。

如果您已经发出以下 CONFIGURE命令,则可以实现此操作:

• CONFIGURE DEFAULT DEVICE TYPE TO disk;

• CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY;

• CONFIGURE CONTROLFILE AUTOBACKUP ON;

还可以使用以下命令,对数据库中所有数据文件和控制文件的前一映像副本创建备份

(备份集或映像副本):

RMAN> BACKUP COPY OF DATABASE;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 108:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-22

数据库整体备份(续)

默认情况下,RMAN 逐个执行每个 BACKUP命令。但是,可采用以下方法并行执行复制

操作:

• 使用 CONFIGURE DEVICE TYPE DISK PARALLELISM n,其中 n是需要的

并行度

• 分配多个通道

• 指定一个 BACKUP AS COPY命令并列出多个文件

注:高并行度需要较多的计算机资源,但是可以节省时间。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 109:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-23

版权所有 © 2009,Oracle。保留所有权利。

RMAN 备份类型

• 完全备份包含所有使用的数

据文件块。

• 级别为 0 的增量备份等同于

标记为 0 级的完全备份。

• 级别为 1 的累积增量备份仅

包含自上次级别为 0 的增量

备份以来修改的块。

• 级别为 1 的差异增量备份仅

包含自上次增量备份以来修

改的块。差异增量备份

累积增量备份

完全备份,或“级别为 0 的增量备份”

RMAN 备份类型

完全备份

完全备份不同于整体数据库备份。完全数据文件备份是包含文件中所有已用数据块的备份。

RMAN 将所有块复制到备份集或映像副本中,仅跳过从未使用的数据文件块。完全映像

副本可准确地再现整个文件的内容。完全备份不能成为增量备份策略的一部分;它也不能

成为后续增量备份的父项。

增量备份

增量备份是级别为 0 的备份,其中包含数据文件中除从未使用的块之外的所有块;或者是

级别为 1 的备份,其中仅包含自上次备份以来更改过的那些块。级别为 0 的增量备份在物

理上与完全备份完全一样。唯一区别是级别为 0 的备份可用作级别为 1 的备份的基础,但

完全备份不可用作级别为 1 的备份的基础。

增量备份是通过 BACKUP命令的 INCREMENTAL关键字所指定。可以指定

INCREMENTAL LEVEL = [0 | 1]。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 110:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-24

RMAN 备份类型(续)

增量备份(续)

RMAN 可创建多级增量备份,如下所示:

• 差异:增量备份的默认类型,其备份自最近一次级别为 1 的或级别为 0 的增量备份

后更改的所有块

• 累积:备份自最近一次级别为 0 的备份后更改的所有块

示例

• 要执行级别为 0 的增量备份,请使用以下命令:RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;

• 要执行差异增量备份,请使用以下命令:RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;

• 要执行累积增量备份,请使用以下命令:RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

如果既没有指定 FULL,也没有指定 INCREMENTAL,默认情况下,RMAN 将生成完全

备份。将数据文件备份到备份集时,压缩未使用的块会导致跳过从未被写过的块,甚至

对于完全备份也是如此。

尽管可以通过使用 RECOVER命令应用增量备份的方法来增量更新完全映像副本备份,但

完全备份对后续增量备份没有任何影响,并且不视为任何增量备份策略的一部分。本课的

后续部分将对此进行介绍。

注:可以对处于 NOARCHIVELOG 模式的数据库执行增量备份,当然,前提条件是数据

库已经关闭。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 111:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-25

版权所有 © 2009,Oracle。保留所有权利。

差异与累积

• 差异增量备份包含自上次增量备份以来更改的所有块。

• 累积增量备份包含自上次级别为 0 的增量备份以来更

改的所有块。

级别

日期 星期日 星期一 星期二 星期三 星期四 星期五 星期六 星期日

级别 0 级别 0

1 1 1c 110 01c

差异与累积

累积增量备份将复制已由相同级别中上一非累积增量备份所复制的更改。因此,如果进行

了级别为 1 的增量备份,则随后的级别为 1 的累积备份将备份所有新修改的块以及那些已

由级别为 1 的增量备份备份过的块。这意味着仅需要一个相同级别的增量备份来进行完全

恢复。

差异备份和累积备份比较:

• 差异增量备份较快,写出的块较少,生成的备份文件也较小。这就使得备份过程较

快,但是在恢复过程中,RMAN 必须检索每个增量备份并进行应用。

• 累积增量备份花费的时间可能会较长,写出的块较多,生成备份文件也较大。累积

备份用于提高恢复速度,因为恢复时必定应用的备份较少。

在幻灯片所示的图中,公司已经确定了使用差异备份和累积备份的备份策略。每星期日都

进行级别为 0 的增量备份。每周进行两次(在星期三和星期五)累积备份,以减少数据库

的恢复时间。其他时间进行差异备份以减少备份时间和存储需求。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 112:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-26

版权所有 © 2009,Oracle。保留所有权利。

块更改跟踪

启用块更改跟踪可简化备份过程,其可以:

• 在更改跟踪文件中记录更改的块

• 由 RMAN 自动使用(如果启用此选项)

• 通过避免备份过程中的完全数据文件扫描来优化增量

备份

更改过的块列表

重做生成重做日志

101100101011000011101001011010101110011

更改跟踪文件

SGA

CTWR

命令BACKUP

> Block C.T. Inc. UpdateLISTREPORTDELETE

块更改跟踪

执行增量备份的目的是为了只备份自上一次备份以来更改过的数据块。每个增量备份过程

中都会读取整个数据文件,即使自上次增量备份以来该文件只有很小一部分进行了更改。

块更改跟踪功能使用更改跟踪写进程 (CTWR) 这一后台进程将所有数据库更改的实际位置

记录到名为“更改跟踪文件”的新类型的文件中。启用更改跟踪后,第一个级别为 0 的增

量备份仍须扫描整个数据文件,因为更改跟踪文件尚未反映块的状态。对于后续增量备份,

RMAN 将使用更改跟踪数据来确定增量备份过程中要读取的块,无需读取整个数据文件,

从而提高了性能。

启用块更改跟踪后可使用相同的命令执行增量备份,并且在初始配置后,更改跟踪文件本

身通常很少需要维护。块更改跟踪文件的大小与以下各项成比例:

• 数据库大小(以字节表示)以及 RAC 环境中启用的线程数

• 块更改跟踪文件维护的旧备份数

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 113:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-27

版权所有 © 2009,Oracle。保留所有权利。

启用块更改跟踪

SQL> ALTER DATABASE ENABLE 2> BLOCK CHANGE TRACKING 3> USING FILE '/mydir/rman_change_track.f' 4> REUSE;

启用块更改跟踪

使用 Oracle Enterprise Manager (EM) 的“Maintenance(维护)”页启用块更改跟踪。单击

“Backup Settings(备份设置)”链接,然后单击“Policy(策略)”选项卡。必须提供操

作系统登录身份证明以保存此备份设置。

块更改跟踪文件最小为 10 MB,新空间的分配以 10 MB 为增量。如果设置了

db_create_file_dest参数,则不必为块更改跟踪文件指定名称,在这种情况下,

会创建一个 Oracle 管理文件。

可以使用以下命令手动配置快速增量备份:SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING; SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

如果未配置 db_create_file_dest参数,则使用 USING FILE子句为跟踪文件指定

用户定义的目录位置和文件名。

可以通过查询 V$BLOCK_CHANGE_TRACKING视图查看当前块更改跟踪配置的详细资料。

默认情况下,更改跟踪功能被禁用,因为在正常操作过程中该功能会在数据库中产生一些

极小的性能开销。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 114:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-28

版权所有 © 2009,Oracle。保留所有权利。

增量更新备份

增量备份文件

恢复的数据文件

数据文件的映像副本

更新为较新状态的数据文件的映像副本

RMAN> RECOVER COPY OF2> DATAFILE {n|'file_name'}3> WITH TAG 'incr_upd_df1';

命令BACKUP Block C.T.

> Inc. Update LISTREPORTDELETE

增量更新备份

通过增量更新备份功能,可以使用 RMAN 来将增量备份应用到数据文件映像副本。使用

这种恢复方法,RMAN 可以通过应用增量备份将数据文件的副本恢复到指定的时间点,

或者将映像副本前滚到指定的时间点。映像副本使用执行增量备份时的 SCN 之前的所有

更改来进行更新。

RMAN 可以在介质恢复中使用所得到的已更新映像副本,就像其在该 SCN 处执行完全映

像备份一样,而且没有每天执行数据库或数据文件的完全映像副本的开销。

增量更新备份需要两个不同的命令:

• 使用 BACKUP命令的 BACKUP INCREMENTAL LEVEL 1...FOR RECOVER OF COPY WITH TAG ...表单创建可以增量更新的增量备份。如果级别为 0 的增量备

份不存在,则执行此命令会创建具有指定标记的级别为 0 的备份。

• 使用 BACKUP命令的 RECOVER COPY ...WITH TAG ...表单将任何增量备份应

用到具有相同标记的数据文件副本集。如果没有增量备份或数据文件副本,该命令

会生成一条消息,但不生成错误。

必须使用标记来标识创建用于此策略的增量备份和数据文件副本,从而不会影响您实施的

其它备份策略。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 115:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-29

版权所有 © 2009,Oracle。保留所有权利。

LIST命令

• 列出数据文件的备份集和副本:

• 列出指定表空间的任何数据文件的备份集和副本:

• 列出包含指定范围的归档日志的备份集和副本:

RMAN> LIST BACKUP OF DATAFILE 2> "/db01/ORADATA/u03/users01.dbf";

RMAN> LIST BACKUP OF DATABASE;

RMAN> LIST COPY OF TABLESPACE "SYSTEM";

RMAN> LIST COPY OF DATABASE ARCHIVELOG 2> FROM TIME='SYSDATE-7';

命令BACKUPBlock C.T. Inc. Update

> LIST REPORTDELETE

LIST 命令

使用 RMAN LIST命令显示有关资料档案库中记录的备份集、代理副本和映像副本的

信息。使用此命令可列出:

• RMAN 资料档案库中状态不是 AVAILABLE的备份和副本

• 可用的且可以用于还原操作的数据文件备份和副本

• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份

• 包含指定名称或范围的所有归档日志备份的备份集和副本

• 由标记、完成时间、可恢复性或设备限制的备份集和副本

• 指定数据库或资料档案库已知的所有数据库的原型

• 恢复目录中的存储脚本

要使用 LIST命令,必须连接到目标数据库。如果在 NOCATALOG模式下连接,则必须

装载目标数据库。如果使用恢复目录连接,则必须启动目标实例,但不需要装载。

可以控制输出的组织方式(BY BACKUP或 BY FILE)以及输出的详细程度(VERBOSE或 SUMMARY)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 116:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-30

版权所有 © 2009,Oracle。保留所有权利。

REPORT 命令

• 生成资料档案库的详细分析

• 生成报告以回答以下问题:

– 数据库中包含哪些数据文件?

– 哪些文件需要备份?

– 哪些备份可以删除?

– 哪些文件不可恢复?

命令BACKUP Block C.T. Inc. Update LIST

> REPORT DELETE

REPORT命令

使用此命令,可以更详细地分析 RMAN 资料档案库中的信息。

可以生成报告来回答各种问题,如:

• 数据库的结构是什么?RMAN> REPORT SCHEMA;

• 哪些文件需要备份?RMAN> REPORT NEED BACKUP ...;

• 哪些备份可以删除(即,已作废)?RMAN> REPORT OBSOLETE;

• 哪些文件因不可恢复的操作而无法恢复?RMAN> REPORT UNRECOVERABLE ...;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 117:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-31

版权所有 © 2009,Oracle。保留所有权利。

REPORT NEED BACKUP命令

• 列出需要备份的所有数据文件

• 假设还原过程中使用最新的备份

• 提供四个选项:

– 增量

– 天数

– 冗余

– 恢复窗口

• 如果未指定选项则使用当前保留策略配置

REPORT NEED BACKUP 命令

使用 REPORT NEED BACKUP命令标识需要备份的所有数据文件。报告假定还原时会

使用最近的备份。

包含四个选项:

• 增量:需输入一个整数,用于指定恢复过程中应还原的增量备份的最大数目。如果

数据文件的完全恢复需要的增量备份数多于指定数目,则数据文件需要新的完全备

份。例如,要报告需要三个或更多增量备份来进行恢复的文件:RMAN > REPORT NEED BACKUP incremental 3 database;

• 天数:需输入一个整数,用于指定自上次文件的完全备份或增量备份以来的最大

天数。如果最新的备份等于或大于此数值,则该文件需要进行备份。

例如,要报告三天以来尚未进行备份的系统文件:RMAN > REPORT NEED BACKUP days 3 tablespace system;

• 冗余:需输入一个整数,用于指定视为必需的最低冗余级别。例如,如果不具有

两个或更多个备份,则冗余级别 2 需要进行备份。

• 恢复窗口:一个时间窗口,RMAN 应能在该窗口中恢复数据库

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 118:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-32

版权所有 © 2009,Oracle。保留所有权利。

REPORT NEED BACKUP:示例

• 需要三个以上增量备份以进行恢复的文件:

• 三天以来尚未进行备份的文件:

• 如果不具有两个或更多个备份则需要进行备份:

• 需要进行备份以恢复到三天前的数据状态:

RMAN> REPORT NEED BACKUP days 3;

RMAN> REPORT NEED BACKUP incremental 3;

RMAN> REPORT NEED BACKUP redundancy 2;

RMAN> REPORT NEED BACKUP 2> recovery window of 3 days;

REPORT NEED BACKUP:示例

可以通过报告为恢复文件所需要处理的备份数来评估恢复时间。如果不希望恢复过程中

必须处理三个以上的增量备份,可以使用以下命令报告哪些文件违反了这一要求:RMAN> REPORT NEED BACKUP incremental 3;

如果最近在数据库中进行了一些重要更改,则需要注意执行更改操作之后哪些文件尚未进

行备份。如果更改发生在三天前,可使用以下命令报告执行这些更改时哪些文件尚未进行

备份:RMAN> REPORT NEED BACKUP days 3;

您可能希望查看哪些文件尚不存在特定数量的备份,作为不同于保留策略的假设分析情况。

要对于冗余级别 2 执行此操作,可以输入以下命令:RMAN> REPORT NEED BACKUP redundancy 2;

通过输入以下命令,可以报告需要对哪些文件进行备份以便能恢复到三天前的数据状态:RMAN> REPORT NEED BACKUP recovery window of 3 days;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 119:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-33

版权所有 © 2009,Oracle。保留所有权利。

REPORT OBSOLETE和

DELETE OBSOLETE

• 查找根据当前保留策略设置应视为作废的所有恢复文件:

• 如果需要的备份副本不多于两个,列出作废的恢复文件:

• 删除备份集键为 4 的备份集:

• 删除由于已存在两个以上的备份而视为作废的恢复文件:

RMAN> REPORT OBSOLETE REDUNDANCY 2;

RMAN> REPORT OBSOLETE;

RMAN> DELETE BACKUPSET 4;

RMAN> DELETE OBSOLETE REDUNDANCY 2;

命令BACKUP Block C.T. Inc. Update LIST REPORT

> DELETE

REPORT OBSOLETE 和 DELETE OBSOLETE

作废备份与过期备份不同。作废备份是根据用户的保留策略认为不再需要的备份。过期

备份是 CROSSCHECK命令在指定介质设备上找不到的备份;虽然资料档案库指示了它的

位置,但备份文件已经被删除或移动。

使用 REPORT OBSOLETE命令,可以将不再需要的文件标识为满足备份保留策略。默认

情况下,REPORT OBSOLETE命令报告在当前配置的保留策略下已作废的文件。通过在

REPORT OBSOLETE命令中使用 REDUNDANCY或 RECOVERY WINDOW保留策略选项,

可以生成根据不同保留策略而作废的文件的报告。

如果在没有配置任何选项或保留策略的情况下运行 REPORT OBSOLETE,则 RMAN 将发

出错误消息。

DELETE命令可以删除 LIST和 CROSSCHECK命令可进行操作的任何文件。例如,可以

删除备份集、归档重做日志和数据文件副本。DELETE命令不仅删除物理文件,还会删除

该文件的目录记录。DELETE OBSOLETE命令将删除不再需要的备份。该命令使用的

REDUNDANCY和 RECOVERY WINDOW选项与 REPORT OBSOLETE相同。

如果未使用 RMAN 删除备份,则可以使用 CROSSCHECK或 UNCATALOG命令从恢复目录

中删除这些文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 120:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-34

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 管理备份

导航帮助:

数据库主页 > Maintenance(维护)> Manage Current Backups(管理当前备份)

使用 EM 管理备份

可以通过 Oracle Enterprise Manager 管理备份记录。Oracle Enterprise Manager 中提供的

备份维护功能包括:

• 查看 RMAN 资料档案库中记录的备份列表(备份集和映像副本)

• 交叉检查资料档案库:

- 验证资料档案库中列出的备份是否存在以及是否可以访问

- 将交叉检查时不能访问的所有备份标记为过期

• 从 RMAN 资料档案库中删除过期备份的记录

• 从资料档案库和磁盘中删除作废的备份

可以访问 Oracle Enterprise Manager 中的“Manage Current Backups(管理当前备份)”页,

具体方法为:单击“Maintenance(维护)”页中“Backup/Recovery(备份/恢复)”区域

的“Manage Current Backups(管理当前备份)”。“Manage Current Backups(管理当前

备份)”页包括两个属性页:“Backup Set(备份集)”(初始视图)和“Image Copy(映像副本)”。两个页面的用途类似,均列出了 Oracle Recovery Manager 资料档案库中

记录的备份。

注:如果使用快速恢复区存储备份,则可减少或消除许多维护活动,这是因为快速恢复区可以自动管理磁盘空间,并可基于保留策略保留文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 121:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-35

版权所有 © 2009,Oracle。保留所有权利。

RMAN 动态视图

• V$ARCHIVED_LOG

• V$BACKUP_CORRUPTION

• V$BACKUP_DEVICE

• V$BACKUP_FILES

• V$BACKUP_PIECE

• V$BACKUP_REDOLOG

• V$BACKUP_SET

• V$BACKUP_SPFILE

• V$COPY_CORRUPTION

• V$RMAN_CONFIGURATION

RMAN 动态视图

可以使用以下视图获取控制文件中存储的 RMAN 信息:

• V$ARCHIVED_LOG显示数据库中已经创建、备份以及清除的档案。

• V$BACKUP_CORRUPTION显示对备份集进行备份的过程中所发现损坏的块。

• V$BACKUP_DATAFILE对于通过确定每个数据文件中的块数来创建同等大小的备份

集非常有用。它还可以帮助您查明数据文件中损坏块的数目。

• V$BACKUP_DEVICE显示有关所支持备份设备的信息。此视图不返回特殊设备类型

DISK,因为该设备始终可用。

• V$BACKUP_FILES显示有关所有 RMAN 备份(映像副本和备份集)和归档日志的

信息。此视图模拟 LIST BACKUP和 LIST COPY RMAN命令。

• V$BACKUP_PIECE显示为备份集创建的备份片段。

• V$BACKUP_REDOLOG显示备份集中存储的归档日志。

• V$BACKUP_SET显示已经创建的备份集。

• V$BACKUP_SPFILE显示有关备份集中服务器参数文件的信息。

• V$COPY_CORRUPTION显示创建映像副本过程中所发现损坏的块。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 122:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-36

RMAN 动态视图(续)

• V$DATABASE_BLOCK_CORRUPTION列出最近一次 RMAN 备份过程中标记为损坏

的数据库块。

• V$RMAN_CONFIGURATION列出有关 RMAN 永久性配置设置的信息。

如果对 RMAN 使用代理设置,可以查询:

• V$PROXY_ARCHIVEDLOG

• V$PROXY_DATAFILE

关于备份性能统计信息,可以查询:

• V$BACKUP_ASYNC_IO

• V$BACKUP_SYNC_IO

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 123:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-37

版权所有 © 2009,Oracle。保留所有权利。

监视 RMAN 备份

• 使用 SET COMMAND ID 命令将服务器会话与通道相

关联。

• 查询 V$PROCESS 和 V$SESSION 以确定会话与

RMAN 通道的对应关系。

• 查询 V$SESSION_LONGOPS 以监视备份和副本的进度。

• 使用操作系统实用程序监视进程或线程。

监视 RMAN 备份

要在备份过程中将进程与通道相关联,请执行以下步骤:

1. 启动 Oracle Recovery Manager 并连接到目标数据库,以及恢复目录(可选)。

2. 分配通道后设置 COMMAND ID参数,然后复制所需的对象。由 SET COMMAND ID命令指定的字符串将输入到所有已分配通道的 V$SESSION.CLIENT_INFO列中。

run { allocate channel t1 type disk; set command id to 'rman'; backup datafile 1; release channel t1;}

3. 查询 V$PROCESS和 V$SESSION视图,以便针对使用先前指定 COMMAND ID字符

串的通道,获取其会话标识符 (SID) 和操作系统进程标识符 (SPID)。SELECT sid, spid, client_info FROM v$process p, v$session s WHERE p.addr = s.paddr AND client_info LIKE '%id=rman%';

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 124:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-38

监视 RMAN 备份(续)

4. 查询 V$SESSION_LONGOPS视图以获取副本的状态。SELECT sid, serial#, context, sofar, totalwork,

round(sofar/totalwork*100,2) "% Complete" FROM V$SESSION_LONGOPS WHERE opname LIKE 'RMAN:%' AND opname NOT LIKE 'RMAN: aggregate%' AND totalwork != 0;

5. 如果使用类型为 sbt的通道且复制进程看起来处于挂起状态,则使用在步骤 3 中获

取的 SID查询 V$SESSION_WAIT,以确定 RMAN 是否在等待介质管理器函数调用

完成。SELECT * FROM V$SESSION_WAIT WHERE event LIKE '%sbt%';

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 125:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-39

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 使用 RMAN BACKUP 命令创建备份集和映像副本

• 列出通过 RMAN 获取的备份和映像副本

• 报告和删除作废的 RMAN 备份

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 126:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 3-40

版权所有 © 2009,Oracle。保留所有权利。

练习概览:备份数据库

本练习包含以下主题:

• 启用数据库重做日志归档

• 使用 RMAN 显示数据库结构

• 使用 Oracle Recovery Manager 备份数据文件和控制

文件

• 使用 Oracle Recovery Manager 生成数据文件的映像

副本

• 创建数据库的压缩备份

• 调度备份作业

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 127:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

恢复不太严重的损失

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 128:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 恢复临时表空间

• 恢复重做日志组成员

• 恢复丢失的索引

• 重新创建口令文件

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 129:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-3

版权所有 © 2009,Oracle。保留所有权利。

文件丢失的原因

以下原因可能会导致文件丢失:

• 用户错误

• 应用程序错误

• 介质故障

文件丢失的原因

以下原因可能会导致文件丢失或损坏:

• 用户错误:管理员可能会因疏忽删除或覆盖了操作系统必需的文件。

• 应用程序错误:应用程序或脚本也可能包含逻辑错误,当它处理数据库文件时,

会导致文件丢失或损坏。

• 介质故障:磁盘驱动器或控制器可能会发生完全或部分故障,从而导致文件损坏,

甚至文件完全丢失。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 130:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-4

版权所有 © 2009,Oracle。保留所有权利。

关键性与非关键性

发生非关键性文件丢失时,数据库仍可继续运行。

可通过采取以下措施之一来修复该问题:

• 创建一个新文件。

• 重建文件。

• 恢复丢失或损坏的文件。

关键性与非关键性

非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件。例如,如果数据

库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件来保持数据库持续运行。

虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能。例如:

• 丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引

用于强制实施约束,则丢失后甚至会导致应用程序无法使用。

• 丢失联机重做日志组(只要不是当前联机日志组)会导致数据库操作被挂起,直到

生成新的日志文件为止。

• 丢失临时表空间会使用户无法运行查询或创建索引,直到将这些用户分配到新的临

时表空间为止。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 131:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-5

版权所有 © 2009,Oracle。保留所有权利。

丢失 TEMPFILE

SQL> select * from big_table order by 1,2,3,4,5,6,7,8,9,10,11,12,13;select * from big_table order by 1,2,3,4,5,6,7,8,9,10,11,12,13

*ERROR at line 1:ORA-01565: error in identifying file '/u01/app/oracle/oradata/orcl/temp01.dbf'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directory

如果缺失任何一个临时文件,则需要 TEMP 空间来执行的

SQL 语句都将失败。

丢失 TEMPFILE

如果属于 TEMP表空间的临时文件丢失或损坏,则 TEMP表空间将不可用。在执行需要

TEMP空间进行排序的 SQL 语句过程中,此问题将声明其自己为错误。

幻灯片中显示的 SQL 语句有很长一串要作为排序依据的列,因此需要 TEMP空间。此时

会遇到缺失文件错误。

Oracle 数据库可以在临时文件缺失的情况下启动。启动数据库时如果有任何临时文件不

存在,系统都会自动创建这些临时文件,从而使数据库可以正常打开。发生这种情况时,

启动过程中会在预警日志中显示类似下面的消息:Recreating tempfile /u01/app/oracle/oradata/orcl/temp01.dbf厦

门微思ORACLE授权培训中心

http://www.xmws.cn

Page 132:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-6

版权所有 © 2009,Oracle。保留所有权利。

恢复 TEMPFILE丢失

口令文件

参数文件

SYSTEM

SYSAUX

UNDO

USERS

INDEX

重做日志文件 1B

重做日志文件 1A

重做日志文件 2B

重做日志文件 2A

控制文件TEMP

恢复 TEMPFILE 丢失

不需要重新启动数据库就可以恢复丢失的 TEMPFILE。

例如,在 OS 层删除了属于默认临时表空间 TEMP的数据文件 temp01.dbf后,如果要

恢复数据库,可以先在数据库中添加一个新的数据文件,然后删除那个已在 OS 层删除的

数据文件。SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 20M;

Tablespace altered.

SQL> ALTER TABLESPACE temp DROP TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf';

Tablespace altered.

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 133:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-7

版权所有 © 2009,Oracle。保留所有权利。

日志组状态:概述

在任何给定时间,重做日志组的状态都会是

以下值之一:

• CURRENT:LGWR 进程当前正在向重做

日志组写入重做数据。

• ACTIVE:不再向重做日志组写入数据,

但是仍需要它来进行实例恢复。

• INACTIVE:不再向重做日志组写入数据,

且不再需要它来进行实例恢复。

日志组状态:概述

若要处理重做日志文件的丢失情况,则了解重做日志组的可能状态非常重要。在 Oracle DB 正常运行过程中,重做日志组会循环经历三种不同的状态。按照循环的顺序,状态分

别是:

• CURRENT:此状态表明 LGWR 正在向重做日志组写入,以记录数据库中正在进行的

所有事务处理的重做数据。该日志组将保持此状态,直到切换至其它日志组为止。

• ACTIVE:重做日志组仍包含进行实例恢复所需的重做数据。这是尚未执行检查点期

间重做日志组所处的状态,重做日志组中出现的所有数据更改都将写出到数据文件。

• INACTIVE:以上讨论的检查点已经执行,这表示不再需要该重做日志组来进行实例

恢复,它可以变为下一个 CURRENT日志组。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 134:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-8

版权所有 © 2009,Oracle。保留所有权利。

Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_arc1_25739.trc:ORA-00313: open failed for members of log group 2 of thread 1ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/orcl/redo02b.log'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directory

丢失重做日志组成员

缺失重做成员文件时,预警日志和归档进程 (ARCn) 跟踪

文件将记录一条错误消息。

丢失重做日志组成员

重做数据对于恢复操作至关重要,因为它包含对数据库所有修改的记录,从而允许您在从

备份还原后进行前滚操作。

重做日志组可以包含多个成员,每个成员与组内的其它成员相同。这是为了提供冗余。

要确保数据库继续运行,必须至少有两个重做日志组可用,而每组中必须至少有一个成员

可用。

如果无法访问重做日志组的成员,将会向预警日志和归档进程的跟踪文件写入一条错误

消息。

如果丢失了非当前重做日志组,则可以使用 ALTER DATABASE CLEAR LOGFILE语句

重新创建组中的所有成员。而且不会丢失任何事务处理。如果丢失的重做日志组在丢失

前已经进行了归档,则不需要执行任何操作。否则,应立即对数据库执行新的完全备份。

由于日志已丢失,所以日志丢失之前的备份将无法恢复。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 135:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-9

版权所有 © 2009,Oracle。保留所有权利。

重新创建重做日志文件

SQL> ALTER DATABASE DROP LOGFILE MEMBER> '/u01/app/oracle/oradata/orcl/redo02b.log';

SQL> !rm /u01/app/oracle/oradata/orcl/redo02b.logSQL> ALTER DATABASE ADD LOGFILE MEMBER

> '/u01/app/oracle/oradata/orcl/redo02b.log'> TO GROUP 2;

口令文件

参数文件

SYSTEM

SYSAUX

UNDO

USERS

INDEX

重做日志文件 1A

重做日志文件 2A

控制文件TEMP

重做日志文件 1B

重做日志文件 2B

重新创建重做日志文件

在某些情况下,您可能希望删除整组重做日志成员,或者可能希望删除一个或多个特定

重做日志成员。例如,如果发生磁盘故障,可能需要删除故障磁盘上的所有重做日志文件,

以便数据库不再尝试向无法访问的文件写入数据。

若要删除重做日志组,必须具有 ALTER DATABASE系统权限。删除重做日志组前,请注

意以下限制和防范措施:

• 实例至少需要两个重做日志文件组,而无论组中成员数目的多少。

• 仅当重做日志组或组成员处于不活动状态时才能将其删除。

• 应当在删除重做日志组前,将其归档(如果启用了归档)。若要查看是否已归档,

请使用 V$LOG视图。SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; GROUP# ARC STATUS --------- --- ----------------

1 YES ACTIVE 2 NO CURRENT 3 YES INACTIVE

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 136:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-10

重新创建重做日志文件(续)

通过使用具有 DROP LOGFILE子句的 ALTER DATABASE SQL 语句来删除重做日志组。下面的语句将删除编号为 3 的重做日志组:

ALTER DATABASE DROP LOGFILE GROUP 3;

若要删除重做日志成员,必须具有 ALTER DATABASE系统权限。删除单独的重做日志成员前,请注意以下限制和防范措施:

• 可以删除重做日志文件,从而使多路复用重做日志临时变为非对称的日志。例如,如果使用双重重做日志文件组,即使其它所有组中每组都有两个成员,您也可以删除一个组的一个成员。但应立即纠正这种情况,以便所有组都至少有两个成员,从而消除重做日志可能发生的单点故障。

• 实例始终至少需要两个有效重做日志文件组,而无论组中成员数目的多少。

• 删除成员前,请确保重做日志成员所属的组已归档(如果启用了归档)。若要查看是否已归档,请查询 V$LOG视图。

• 仅当重做日志成员不是活动组或当前组的一部分时才能删除该成员。如果要删除的组处于活动状态,则需强制进行日志切换。之后该组将处于活动或不活动状态。如果该组处于不活动状态,则可以继续删除它。如果该组处于活动状态,则首先需要强制检查点,以使其变为不活动状态。以下示例显示了日志组 #1 从 CURRENT到ACTIVE,再到 INACTIVE的过程:

SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; GROUP# ARC STATUS

---------- --- ----------------1 NO CURRENT 2 YES INACTIVE 3 YES INACTIVE

SQL> alter system switch logfile; SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;

GROUP# ARC STATUS ---------- --- ----------------

1 YES ACTIVE 2 NO CURRENT 3 YES INACTIVE

SQL> alter system checkpoint; System altered. SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;

GROUP# ARC STATUS ---------- --- ----------------

1 YES INACTIVE 2 NO CURRENT 3 YES INACTIVE 厦

门微思ORACLE授权培训中心

http://www.xmws.cn

Page 137:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-11

重新创建重做日志文件(续)

若要删除特定的不活动重做日志成员,请使用具有 DROP LOGFILE MEMBER子句的

ALTER DATABASE语句。下面的语句将删除重做日志文件

/u01/app/oracle/oradata/orcl/redo02b.log:ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo02b.log';

从数据库中删除重做日志组或重做日志成员,并且未使用 Oracle Managed Files (OMF) 功能时,将不从磁盘中删除操作系统文件,仅更新控制文件。删除重做日志组或重做日志成

员后,请确保删除成功完成,然后使用适当的操作系统命令来清除已删除的重做日志文件

(如果它们尚未被删除)。

使用 Oracle Managed Files 时,将自动完成操作系统文件的清除操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 138:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-12

版权所有 © 2009,Oracle。保留所有权利。

重新创建重做日志文件

重新创建重做日志文件(续)

使用 Oracle Enterprise Manager,可以创建或编辑有关与当前数据库关联的重做日志组的

信息。在“Administration(管理)”页中,选择“Storage(存储)”区域中的“Redo Log Groups(重做日志组)”。

“Redo Log Groups(重做日志组)”页显示有关每个重做日志组的信息,允许您查看或

编辑组。选择单个重做日志组,然后单击“View(查看)”。“Redo Log Members(重

做日志成员)”表将列出构成重做日志组成员的文件和目录。可以通过单击“Edit(编

辑)”添加成员或从组中删除成员。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 139:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-13

版权所有 © 2009,Oracle。保留所有权利。

重新创建索引

使用以下选项可缩短创建索引所花费的时间:

• PARALLEL

• NOLOGGING

SQL> CREATE INDEX rname_idx2 ON hr.regions (region_name)3 PARALLEL 4;

重新创建索引

创建或重新创建索引时,可以使用以下关键字来缩短创建时间:

• PARALLEL(NOPARALLEL是默认值):多个进程可以同时协同工作来创建索引。

与单个服务器进程按顺序创建索引相比,通过在多个服务器进程之间分配创建索引

所需的工作,Oracle 服务器可以更快速地创建索引。将随机对表取样并找到一组索

引关键字,这些索引关键字按照指定的并行度将索引平均分为相同数目的片段。第

一组查询进程将扫描表,提取关键字、行 ID 对并基于关键字将每个对发送到第二组

查询进程中的一个进程中。第二组中的每个进程都对关键字进行排序并按常规方式

构建索引。所有索引片段构建完成后,并行协调程序会将这些片段(已进行排序)

级联以形成 终的索引。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 140:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-14

重新创建索引(续)

• NOLOGGING:使用此关键字会使索引创建速度更快,因为创建进程将创建极少的

重做日志条目。这种工作量大幅减小的重做生成也适用于直接路径插入和 Direct Loader (SQL*Loader) 插入。这是永久性属性,因此将显示在数据字典中。它可以

通过 ALTER INDEX NOLOGGING/LOGGING命令随时更新。

索引丢失时,更为快速、简单的方法是重新创建而不是尝试恢复索引。确定创建索引所用

SQL 的方法之一是通过对以前生成的 expdp输出文件使用 impdp SQLFILE=<filename>命令来执行。此操作将生成在转储文件中创建对象所需的 SQL 语句。expdp和 impdp实用程序将在《Oracle Database 10g:数据库管理-课堂练习 I》中讲述。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 141:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-15

版权所有 © 2009,Oracle。保留所有权利。

数据库管理员的验证方法

远程数据库管理 本地数据库管理

是 是

否 否

是否具有安全连接? 使用 OS 验证。

使用口令文件。

是否希望使用 OS 验证?

面向数据库管理员的验证方法

根据是希望在数据库所在的那一台计算机上本地管理数据库,还是希望从一个远程客户机

管理许多不同的数据库服务器,可以选择使用操作系统验证或口令文件验证来验证数据库

管理员:

• 如果数据库具有口令文件且您已经具有 SYSDBA或 SYSOPER系统权限,则可以通

过口令文件进行验证。

• 如果服务器未使用口令文件,或者如果您尚未具有 SYSDBA或 SYSOPER权限因而

不在口令文件中,则您可以使用操作系统验证。在大多数操作系统中,数据库管理

员的验证是将数据库管理员的操作系统用户名放置到特殊组中,一般称为 OSDBA。该组中的用户将被授予 SYSDBA权限。一个类似的组 OSOPER用于向用户授予

SYSOPER权限。

操作系统验证优先于口令文件验证。特别是,如果您是操作系统的 OSDBA或 OSOPER组

的成员,并且以 SYSDBA或 SYSOPER身份连接,则连接时将具有相关的管理权限,而与

您指定的用户名/口令无关。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 142:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-16

版权所有 © 2009,Oracle。保留所有权利。

重新创建口令验证文件

1. 使用 OS 验证登录到数据库。

2. 将 REMOTE_LOGIN_PASSWORDFILE 参数设置为

NONE 并重新启动数据库。

3. 使用 orapwd 重新创建口令文件。

4. 将 REMOTE_LOGIN_PASSWORDFILE 设置为

EXCLUSIVE。

5. 向口令文件添加用户并向每个用户分配适当的权限。

6. 重新启动实例。

$ orapwd file=$ORACLE_HOME/dbs/orapwORCLpassword=admin entries=5

重新创建口令验证文件

Oracle 数据库提供了一个口令实用程序 orapwd来创建口令文件。使用 SYSDBA权限连

接时,是以 SYS方案连接,而不是以与用户名关联的方案连接。对于 SYSOPER,则将连

接到 PUBLIC方案。使用口令文件访问数据库的权限由授权用户发出的特殊 GRANT命令

提供。

通常,口令文件不包含在备份中,因为在大多数情况下,可在万不得已时重新创建口令文

件。如果丢失了口令文件,要重新创建该文件需要至少关闭并重新启动数据库一次。为了

避免不必要的停机时间,应该在备份中包含口令文件。

保护口令文件以及标识口令文件位置的环境变量对于系统安全性是至关重要的。对这些文

件和环境变量具有访问权限的任何用户都可能潜在地影响连接的安全性。

注:如果使用 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE(或 SHARED)装载了数

据库或实例,请不要删除或修改口令文件。否则,将无法使用该口令文件从远程重新连接。

即使替换了该文件,也无法使用新口令文件,因为时间戳和校验和将是错误的。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 143:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-17

重新创建口令验证文件(续)

使用口令文件

1. 使用 OS 验证登录到数据库。

2. 将 REMOTE_LOGIN_PASSWORDFILE参数设置为 NONE并重新启动数据库。

3. 使用口令实用程序 orapwd创建口令文件。orapwd file=filename password=password entries=max_users

其中:

- filename是口令文件的名称(必需)。

- password是 SYSOPER和 SYSDBA的口令(必需)。

- Entries是允许以 SYSDBA或 SYSOPER身份连接的 大相异用户数。如果超

出了此数值,必须创建新口令文件。使用较大的数值比较保险。等号 (=) 字符

两边没有空格。

示例:orapwd file=$ORACLE_HOME/dbs/orapwU15

password=admin entries=5

4. 将 REMOTE_LOGIN_PASSWORDFILE参数设置为 EXCLUSIVE,

其中:

- EXCLUSIVE表示仅一个实例可以使用口令文件且口令文件包含除 SYS之外的

其它名称。通过使用 EXCLUSIVE口令文件,可以将 SYSDBA或 SYSOPER权

限授予单独的用户。

5. 使用在步骤 3 中创建的口令文件连接到数据库。CONNECT sys/admin AS SYSDBA

6. 重新启动实例。

口令文件位置

UNIX:$ORACLE_HOME/dbs

Windows:%ORACLE_HOME%\database

维护口令文件

使用操作系统命令删除现有口令文件,然后使用口令实用程序创建新口令文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 144:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-18

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 恢复临时表空间

• 恢复重做日志组成员

• 恢复丢失的索引

• 重新创建口令文件

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 145:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 4-19

版权所有 © 2009,Oracle。保留所有权利。

练习概览:恢复丢失的 TEMPFILE和

重做日志文件

本练习包含以下主题:

• 在缺失临时文件的情况下启动数据库

• 创建新的临时文件

• 变更数据库的默认临时表空间

• 恢复丢失的联机重做日志成员

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 146:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 147:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

数据库恢复

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 148:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 执行用户管理的完全或不完全恢复

• 确定需要不完全恢复的情况

• 使用 RMAN 执行完全或不完全恢复

• 基于时间、SCN、日志序列、还原点或取消等方法

执行不完全恢复

• 恢复自动备份的控制文件

• 使用 Oracle Enterprise Manager 执行恢复

• 恢复只读表空间

用户管理RMAN CLIEM完全不完全控制文件RO TBS

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 149:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-3

版权所有 © 2009,Oracle。保留所有权利。

恢复方法

有两种执行恢复的方法:

• 用户管理的恢复

– 必须手动维护文件并将其移动到位。

– 使用 SQL*Plus 命令。

• RMAN 恢复

– 自动管理文件。

– 使用 RMAN 功能,包括所有资料档案库维护和报告功能。

– 可以通过使用 Oracle Enterprise Manager 来完成。

– Oracle Corporation 建议使用此方法。

恢复方法

用户管理的恢复比 RMAN 恢复需要更多的手动介入,RMAN 恢复是推荐的方法,将在本

课中加以详细介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 150:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-4

版权所有 © 2009,Oracle。保留所有权利。

用户管理的恢复:RECOVER命令

• 从备份还原所有数据库文件,然后恢复数据库:

• 从备份还原损坏的数据文件,然后恢复数据文件:

或:

SQL> RECOVER DATABASE

SQL> RECOVER TABLESPACE index_tbs

SQL> RECOVER DATAFILE 2> '/oradata/indx01.dbf'

用户管理的恢复:RECOVER 命令

执行用户管理的介质恢复的第一步是通过从备份复制数据文件来手动还原数据文件。如果

没有将数据文件还原到它的原始位置,则必须通过使用 ALTER DATABASE RENAME FILE命令用新的位置更新控制文件。还必须还原要恢复已还原的数据文件时所需的所有

归档日志文件。对于 RMAN 还原,将使用 SET NEWNAME命令指定该文件的新位置。

可以使用以下命令之一来恢复数据库或数据文件:

• RECOVER [AUTOMATIC] DATABASE此命令仅能用于关闭的数据库恢复。

• RECOVER [AUTOMATIC] TABLESPACE <NUMBER> | <NAME>此命令仅能用于打开的数据库恢复。

• RECOVER [AUTOMATIC] DATAFILE <'filename'> | <NAME>此命令既可以用于打开的数据库恢复,也可用于关闭的数据库恢复。

AUTOMATIC关键字指示 Oracle 数据库自动生成继续执行恢复操作所需的下一归档重做日

志文件的名称。否则,系统会提示您输入这些名称。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 151:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-5

版权所有 © 2009,Oracle。保留所有权利。

RMAN 恢复:RESTORE和 RECOVER命令

用户管理> RMAN CLI

EM完全不完全控制文件RO TBS

run{sql "ALTER TABLESPACE inv_tbs OFFLINE IMMEDIATE";

RESTORE TABLESPACE inv_tbs;RECOVER TABLESPACE inv_tbs DELETE ARCHIVELOG;sql "ALTER TABLESPACE inv_tbs ONLINE";}

RMAN 恢复:RESTORE 和 RECOVER 命令

如果使用 RMAN 执行介质恢复,它将从备份还原恢复操作过程中所需的任何归档重做日

志。如果备份存储在介质管理器上,则必须配置或分配用于访问存储在介质上的备份的

通道。

从备份重建数据库的全部或部分内容通常包含两个阶段:从备份检索数据文件的副本,然

后将在归档和联机重做日志中进行备份以来的更改重新应用于该文件,以使数据库恢复到

所需的 SCN(通常是最新的一个)。RESTORE命令将数据文件从磁带、磁盘或其它介质

上的备份位置检索到磁盘上,并使其可供数据库服务器使用。RECOVER命令获取已还原

的数据文件副本,并将数据库重做日志中记录的更改应用于该副本。

管理与这些还原文件关联的磁盘空间时一个非常有用的选项是 DELETE ARCHIVELOG选

项,它会在 RECOVER操作不再需要还原的归档重做日志时从磁盘删除这些日志。

对于还原到快速恢复区,DELETE ARCHIVELOG选项会自动生效。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 152:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-6

版权所有 © 2009,Oracle。保留所有权利。

使用 Oracle Enterprise Manager进行恢复

通过使用 Oracle Enterprise Manager 恢复向导,

可以创建和运行 RMAN 脚本来执行恢复。

RMAN> RECOVER DATABASE …

用户管理RMAN CLI

> EM 完全不完全控制文件RO TBS

使用 Oracle Enterprise Manager 进行恢复

还可以通过 Oracle Enterprise Manager 使用恢复向导来执行完全恢复或不完全恢复。在

“Login(登录)”页中,以具有 SYSDBA权限的用户登录。单击“Login(登录)”后,

可以看到“Database Summary(数据库概要)”页。

在“Database Summary(数据库概要)”页中,单击“Maintenance(维护)”选项卡。

“Maintenance(维护)”页为用户提供了各种备份、还原和恢复选项。在“Maintenance(维护)”页中,单击“Perform Recovery(执行恢复)”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 153:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-7

版权所有 © 2009,Oracle。保留所有权利。

完全恢复与不完全恢复

恢复可分为以下两类:

• 完全恢复是将数据库恢复到当前最新状态,包括直至

请求恢复时进行的所有已提交的数据更改。

• 不完全恢复是将数据库恢复到请求恢复操作之前的指定

的过去时间点。

恢复任务在此时开

完全恢复

不完全恢复

不完全恢复后丢失的事务处

从此备份还原

崩溃时间

完全恢复与不完全恢复

执行完全恢复时,数据库将恢复到完全最新的状态,包括至当前时间所做的所有已提交的

数据修改。但是执行不完全恢复时,数据库会恢复到过去的某个时间点。这意味着会缺失

一些事务处理;即恢复目标时间和当前时间之间所做的所有数据修改都会丢失。在许多情

况下,这就是所需要的目标,因为可能对数据库执行了某些应撤消的操作。恢复到过去某

一时间点是删除那些不需要的事务处理的一种方法。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 154:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-8

版权所有 © 2009,Oracle。保留所有权利。

完全恢复过程用户管理RMAN CLI EM

> 完全不完全控制文件RO TBS

还原的数据文件 包含已提交和未提交的事务处理的数据文件

恢复的数据文件

应用更改

应用还原块

6

5

3

2

1

归档日志 归档

日志 联机重做日志

4

打开数据库

完全恢复过程

下面是完全恢复过程中执行的步骤:

1. 通过备份还原损坏或丢失的文件。

2. 根据需要应用增量备份、归档重做日志文件和联机重做日志文件中的更改。将重做

日志更改应用于数据文件,直到到达当前联机日志,并且重新输入了最新的事务处

理。在整个过程中会生成还原块。这称为前滚或高速缓存恢复。

3. 此时,还原的数据文件中包含已提交和未提交的更改。

4. 在应用还原前打开数据库。这是为了提供更高的可用性。

5. 还原块用于回退任何未提交的更改。有时也称为事务处理恢复。

6. 此时,数据文件处于已恢复状态,且与数据库中的其它数据文件一致。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 155:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-9

版权所有 © 2009,Oracle。保留所有权利。

不完全恢复过程

包含已提交未提交的事务处理 PIT 恢复

的数据文件

应用还原块

63

2

1

归档日志 归档

日志 联机重做日志

打开数据库

XX

应用至时间点 (PIT) 的更改

从所需的过去时间点还原的数据文件(自所需的

过去时间点开始)

用户管理RMAN CLI EM 完全

> 不完全控制文件RO TBS

54

不完全恢复过程

不完全恢复或数据库时间点恢复使用备份来生成非当前版本的数据库。也就是说,不会

应用最新备份之后生成的所有重做记录。仅当绝对必要时才执行此类恢复。要执行不完

全恢复,需要:

• 恢复点之前生成的所有数据文件的有效脱机或联机备份

• 从备份时间到指定恢复时间的所有归档日志

下面列出了执行不完全恢复的过程:

1. 从备份还原数据文件。如果还原点目标并不很新,则使用的备份可能也不是最新的。

2. 从归档重做日志文件应用重做,根据需要包括尽可能多的数据以达到还原点目标。

3. 此时,数据文件包含一些已提交的事务处理和未提交的事务处理,因为重做可以

包含未提交的数据。

4. 在应用还原前打开数据库。这是为了提供更高的可用性。

5. 应用重做时,同时会应用支持还原数据文件的重做。这样,还原可以应用于数据

文件,以便还原任何未提交的事务处理。这是接下来要完成的操作。

6. 此时,数据文件已恢复到所选择的时间点。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 156:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-10

不完全恢复(续)

如果必须执行恢复且发现包含事务处理的归档日志丢失,其中的事务处理是在还原所用的

备份的创建时间与目标恢复 SCN 之间发生的,则时间点恢复是唯一的选择。没有丢失的

日志,则没有该期间内对数据文件进行更新的记录。唯一的选择就是从还原备份的时间点

恢复数据库,直到未损坏系列的归档日志所允许的时间点,然后使用 RESETLOGS 选项

打开数据库。丢失的重做日志文件中的或之后的所有更改都将丢失。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 157:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-11

版权所有 © 2009,Oracle。保留所有权利。

需要不完全恢复的情况

• 完全恢复由于归档日志文件丢失而失败。

• 丢失了数据文件和一个或多个未归档重做日志文件。

• 丢失了非多路复用联机重做日志文件。

需要不完全恢复的情况

在下列情况下,通常需要执行整个数据库的不完全备份:

• 重做日志丢失:重做日志未进行镜像,并且在某个重做日志归档前丢失了该日志

以及数据文件。在丢失的重做日志之后无法继续执行恢复。

• 归档丢失:完全恢复操作由于归档日志损坏或丢失而失败。应用归档日志之前,

恢复只能完成到过去某个时间。

使用控制文件的旧副本执行恢复或打开数据库时,必须在 RECOVER DATABASE命令中

指定 USING BACKUP CONTROLFILE子句。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 158:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-12

版权所有 © 2009,Oracle。保留所有权利。

不完全恢复的类型

不完全恢复有以下四种类型:

• 基于时间的恢复

• 基于取消的恢复

• 基于更改的恢复

• 日志序列恢复

不完全恢复的类型

基于时间的恢复

使用 UNTIL TIME子句,可以指定数据库应恢复到的过去的时间点。提交了直至指定时

间的所有更改后恢复将终止。用户对数据进行了不必要的更改或删除了重要的表时,如果

知道错误操作的大概时间,就可以使用此方法。如果您立即收到了系统通知,则恢复时间

和数据丢失可降到最低。经过严格测试的程序、安全性和过程可以避免进行这种类型的

恢复。

基于取消的恢复

在恢复过程中,可以在恢复提示符(而不是日志文件名)下输入 CANCEL来终止恢复。

可以在下列情况下使用此方法:

• 当前重做日志文件或组被损坏,无法用于恢复。进行镜像可以避免进行这种类型的

恢复。

• 丢失了进行恢复所需的归档重做日志文件。经常备份以及制定多个归档目标可以避

免进行这种类型的恢复。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 159:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-13

不完全恢复的类型(续)

基于更改的恢复

将 UNTIL CHANGE子句用于用户管理的备份和将 UNTIL SCN子句用于 RMAN 管理的

备份,可以指定要恢复的最后一次提交更改的系统更改号 (SCN)。提交了直至指定 SCN 的所有更改后恢复将终止。可以在分布式环境中恢复数据库时使用此方法。还可以使用

UNTIL RESTORE POINT语法并为 SCN 指定一个别名,即还原点。本课的后续部分将

对还原点进行介绍。

日志序列恢复

使用 RMAN 管理的备份,可以通过 UNTIL SEQUENCE子句指定要用于数据库恢复的

最后日志序列号。在应用了直至(但不包括)指定的日志文件的所有日志文件后,恢复

将终止。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 160:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-14

版权所有 © 2009,Oracle。保留所有权利。

执行用户管理的不完全恢复

• 将数据库恢复到某一时刻:

• 恢复数据库直到执行取消操作:

• 使用备份控制文件进行恢复:

SQL> RECOVER DATABASE UNTIL CANCEL;

SQL> RECOVER DATABASE UNTIL

2 TIME '2005-12-14:12:10:03';

SQL> RECOVER DATABASE 2 UNTIL TIME '2005-12-14:12:10:03'3 USING BACKUP CONTROLFILE;

执行用户管理的不完全恢复

使用以下命令执行不完全恢复:RECOVER [AUTOMATIC] DATABASE option

其中:

• AUTOMATIC:自动应用归档和重做日志文件• option:UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS'

UNTIL CANCEL UNTIL CHANGE <integer> USING BACKUP CONTROLFILE

注:要在恢复过程中自动应用重做日志文件,可以使用 SQL*Plus SET AUTORECOVERY ON命令,在恢复提示符下输入 AUTO,或者使用 RECOVER AUTOMATIC命令。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 161:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-15

版权所有 © 2009,Oracle。保留所有权利。

执行用户管理的不完全恢复

要执行用户管理的不完全恢复,请按以下步骤进行操作:

1. 关闭数据库。

2. 还原数据文件。

3. 装载数据库。

4. 恢复数据库。

5. 使用 RESETLOGS 选项打开数据库。

执行用户管理的不完全恢复(续)

1. 如果数据库处于打开状态,则使用 NORMAL、IMMEDIATE或 TRANSACTIONAL选

项关闭数据库。

2. 从备份(如果可能,使用最新的)还原所有数据文件。可能还需要还原归档日志。

如果有足够的空间,则还原至位置 LOG_ARCHIVE_DEST,或使用 ALTER SYSTEM ARCHIVE LOG START TO <位置> 命令或 SET LOGSOURCE <位置> 命令更改位置。

3. 装载数据库。

4. 使用 RECOVER DATABASE命令恢复数据库。

5. 要将数据文件与控制文件和重做日志同步,请使用 RESETLOGS选项打开数据库。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 162:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-16

版权所有 © 2009,Oracle。保留所有权利。

用户管理的基于时间的恢复:示例

情况如下:

• 某个作业运行出错,必须取消其结果和影响。

• 该操作发生在 15 分钟前,并且在此之后数据库活动

很少。

• 您决定执行不完全恢复,将数据库还原到 15 分钟前

的状态。

SQL> SHUTDOWN IMMEDIATE$ cp /BACKUP/*.dbf/u01/db01/ORADATASQL> STARTUP MOUNTSQL> RECOVER DATABASE UNTIL TIME '2005-11-28:11:44:00';SQL> ALTER DATABASE OPEN RESETLOGS;

用户管理的基于时间的恢复:示例

下面是使用 UNTIL TIME恢复的典型情况。假设:

• 当前时间为 2005 年 11 月 28 日中午 12:00。• 某个作业运行出错,影响了多个方案中的许多表。

• 该操作大约发生在上午 11:45。• 因为大多数员工现在都在开会,所以数据库活动很少。必须还原到作业运行前数据

库的状态。

因为知道错误的大概时间,而且自上午 11:44 以来数据库的结构未发生更改,所以可以

使用 UNTIL TIME方法:

1. 如果数据库处于打开状态,则使用 NORMAL、IMMEDIATE或 TRANSACTIONAL选项关闭数据库。

2. 从备份(如果可能,使用最新的)还原所有数据文件。可能还需要还原归档日志。

如果有足够的空间,则还原至位置 LOG_ARCHIVE_DEST,或使用 ALTER SYSTEM ARCHIVE LOG START TO <位置> 命令或 SET LOGSOURCE <位置> 命令更改位置。

3. 装载数据库。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 163:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-17

用户管理的基于时间的恢复:示例(续)

4. 恢复数据库:SQL> recover database until time '2005-11-28:11:44:00' ORA-00279: change 148448 … 11/27/05 17:04:20 needed for thread ... Media recovery complete.

5. 要将数据文件与控制文件和重做日志同步,请使用 RESETLOGS选项打开数据库:SQL> alter database open resetlogs; SQL> archive log list ... Oldest online log sequence 0 Next log sequence to archive 1 Current log sequence 1

恢复成功完成后,会通知用户数据库已经可用,需要重新输入恢复时间(上午 11:44)之

后输入的所有数据。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 164:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-18

版权所有 © 2009,Oracle。保留所有权利。

用户管理的基于取消的恢复:示例

情况与基于时间的示例相同,除了以下各项:

• 重做日志未进行多路复用。

• 一个联机重做日志丢失。

• 丢失的重做日志未归档。

• 该重做日志包含自上午 11:34 以来的信息。

• 丢失了 26 分钟的数据。

• 用户可以手动重新输入其数据。

用户管理的基于取消的恢复:示例

在搜索目录以获取重做日志文件后,发现找不到重做日志 log2a.rdo且该日志尚未归档。

因此,无法恢复到此点之后。

查询 V$ARCHIVED_LOG确定缺少归档日志序列 48 (log2a.rdo):SQL> SELECT * FROM v$archived_log; RECID STAMP ... FIRST_CHANGE# FIRST_TIME ----- --------- ... ------------- ----------

1 318531466 ... 88330 05-11-15:12:43 47 319512880 ... 309067 05-11-28:11:26 厦

门微思ORACLE授权培训中心

http://www.xmws.cn

Page 165:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-19

版权所有 © 2009,Oracle。保留所有权利。

用户管理的基于取消的恢复:示例

按以下步骤恢复数据库:

1. 关闭数据库。

2. 从最新备份还原所有数据文件。

3. 已经具有了有效备份,所以可以装载数据库。

4. 执行 RECOVER DATABASE UNTIL CANCEL。

5. 执行 ALTER DATABASE OPEN RESETLOGS 以

打开数据库。

用户管理的基于取消的恢复:示例(续)

基于取消的恢复与基于时间的恢复步骤相同,除了 RECOVER DATABASE这一步。执行

RECOVER DATABASE UNTIL CANCEL命令时,它将恢复数据库直到找不到日志文件。

提示您输入文件名时,请输入 CANCEL,恢复将停止在该时间点。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 166:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-20

版权所有 © 2009,Oracle。保留所有权利。

使用 RMAN 执行不完全恢复

1. 装载数据库。

2. 分配多个通道以并行执行操作。

3. 还原所有数据文件。

4. 使用 UNTIL TIME、UNTIL SEQUENCE 或

UNTIL SCN 恢复数据库。

5. 使用 RESETLOGS 打开数据库。

使用 RMAN 执行不完全恢复

RMAN 可以执行到过去时间、SCN 或日志序列号的数据库恢复。

数据库的不完全恢复需要使用 RESETLOGS选项打开数据库。此选项使联机重做日志具有

新的时间戳和 SCN,从而避免了可能因应用过时归档重做日志而损坏数据文件。不能将

某些数据文件恢复到 RESETLOGS之前的某一时刻,同时又将另一些数据文件恢复到

RESETLOGS之后的某一时刻。必须将所有数据文件恢复到同一 SCN。唯一的例外是数据

文件处于脱机正常状态或只读状态时。可以使处于只读或脱机正常状态的表空间中的文件

在 RESETLOGS后变为联机状态,因为对于存储在重做日志中的这些文件,没有发生事务

处理更改。

注:仅当备份是通过 RMAN 进行创建或注册的时,才能使用 RMAN 还原数据文件。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 167:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-21

版权所有 © 2009,Oracle。保留所有权利。

使用 RMAN 的基于时间的恢复:示例

RMAN> RUN {

2> SET UNTIL TIME = '2005-11-28:11:44:00';

3> RESTORE DATABASE;

4> RECOVER DATABASE;

5> ALTER DATABASE OPEN RESETLOGS; }

使用 RMAN 的基于时间的恢复:示例

在 2005 年 11 月 28 日星期二中午 12:00,您确定 OE.ORDERS表已被错误地删除。知道

了错误的大概时间且自上午 11:44 以来数据库结构未发生更改。此时可以使用 UNTIL TIME方法:

1. 如果目标数据库处于打开状态,则执行干净关闭。

2. 装载目标数据库。不要在恢复过程中备份数据库。

3. 确保正确设置了 NLS_LANG和 NLS_DATE_FORMAT环境变量$ NLS_LANG=american_america.we8iso8859p15 $ NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS'

4. 启动 Recovery Manager 并连接到目标数据库。$ rman target rman/rman@ORCL

5. 可以分配多个通道以提高性能:RMAN> run {allocate channel c1 type DISK;

2> allocate channel c2 type DISK;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 168:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-22

使用 RMAN 的基于时间的恢复:示例(续)

6. 使用 RMAN 命令指定恢复时间并从备份还原所有数据文件。RMAN 将基于 SET UNTIL命令选择正确的文件:

RMAN> ... set until time = '2005-11-28:11:44:00'; RMAN> ... restore database;

注:如果需要将归档重做日志文件还原到新的位置,则使用 RMAN SET ARCHIVELOG DESTINATION TO <位置> 命令。

7. 将数据库恢复到 SET UNTIL命令中指定的时间:RMAN> ... recover database;

8. 使用 RESETLOGS选项打开数据库:RMAN> ... alter database open resetlogs; }

9. 检查表是否存在。

10. 通知用户数据库已经可用,且应重新输入发生系统故障后提交的所有数据。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 169:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-23

版权所有 © 2009,Oracle。保留所有权利。

使用 RMAN 的日志序列恢复:示例

RMAN> RUN {2> SET UNTIL SEQUENCE 120 THREAD 1; 3> ALTER DATABASE MOUNT; 4> RESTORE DATABASE; 5> RECOVER DATABASE; # recovers through log 1196> ALTER DATABASE OPEN RESETLOGS;7> }

使用 RMAN 的日志序列恢复:示例

UNTIL SEQUENCE子句指定一个重做日志序列号和线程作为上限。RMAN 仅选择可以用

于恢复至(但不包括)指定日志序列号的文件。幻灯片中的示例假设日志序列 120 由于磁

盘崩溃而丢失,需要使用可用归档重做日志恢复数据库。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 170:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-24

版权所有 © 2009,Oracle。保留所有权利。

使用 Oracle Enterprise Manager 的不完全恢复

使用 Oracle Enterprise Manager 的不完全恢复

要将整个数据库恢复至某一时间点,请在“Perform Recovery(执行恢复)”页中,选择

“Recover to the current time or a previous point-in-time(恢复到当前时间或过去的某个时间

点)”选项。然后,单击“Perform Whole Database Recovery(执行整个数据库恢复)”。

选择“Restore all datafiles(还原所有数据文件)”以将数据库中的所有数据文件还原到以

前的备份状态。还可以从以前的已还原数据文件进行恢复。该方法将使用重做数据以将数

据库前滚至某时间点。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 171:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-25

版权所有 © 2009,Oracle。保留所有权利。

不完全备份和预警日志

下面是在不完全恢复情况下,有关预警日志的一些最佳方案:

• 恢复前后检查预警日志。

• 查找错误信息、提示和 SCN。

• 确认恢复过程中的各步骤都已成功完成。

不完全备份和预警日志

恢复过程中,进度信息将存储在预警日志中。在恢复前后,应始终检查此文件。下面是alert.log文件中的条目示例:

$ vi $ORACLE_BASE/admin/orcl/bdump/alert_orcl.log ... ALTER DATABASE RECOVER database until cancel Media Recovery Start ORA-279 signalled during: ALTER DATABASE RECOVER database until cancel ... Fri Aug 26 15:22:46 2005 ALTER DATABASE RECOVER CONTINUE DEFAULT ... Fri Aug 26 15:28:27 2005 ALTER DATABASE RECOVER CANCEL Fri Aug 26 15:28:27 2005 Media Recovery Canceled Completed: ALTER DATABASE RECOVER CANCEL

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 172:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-26

版权所有 © 2009,Oracle。保留所有权利。

还原点

还原点:

• 用作 SCN 或特定时间点

的别名

• 存储在控制文件中

• 可以与以下各项配合使用:

– RECOVER DATABASE

– FLASHBACK DATABASE

– FLASHBACK TABLE

SQL> CREATE RESTORE POINT before_load;

RMAN> RECOVER DATABASE UNTIL RESTORE POINT before_load;2

1

before_load

还原点

创建正常还原点把还原点名称指派给特定时间点或 SCN。此名称用作一种书签或别名,

可以做为指定时间点的简写与识别 RESTORE POINT子句的命令一起使用。

执行任何有可能要逆转的操作之前,可以创建一个正常还原点。还原点的名称和 SCN 将记录在控制文件中。这样,如果以后需要在 RECOVER DATABASE命令中引用该时间点,

则无需确定时间戳或 SCN 值就可指出该时间点。使用闪回数据库、闪回表或时间点恢复

时,可以使用还原点的名称而不是时间表达式或 SCN 来指出目标时间。如果在执行以后

要撤消的操作之前定义正常还原点,则不必提前手动记录 SCN,也不必使用闪回查询等

功能在事后查找正确的 SCN。

正常还原点非常便捷。控制文件可以维护数千个正常还原点的记录,而不会对数据库性能

产生显著影响。如果不手动删除,正常还原点最终会因过期而从控制文件中删除,所以不

需要进行实时维护。

注:有关将还原点与 FLASHBACK命令配合使用的内容将在“闪回”一课中加以介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 173:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-27

版权所有 © 2009,Oracle。保留所有权利。

不完全恢复:最佳方案

• 提前计划和实践方案。

• 研究并确认不完全恢复是必要的。

• 认真执行所有步骤。

• 恢复前后对整个数据库进行备份。

• 始终验证恢复是否已成功完成。

• 使用还原点。

不完全恢复:最佳方案

• 认真执行所有恢复步骤是非常重要的,因为大多数不完全恢复问题都是由恢复过程

中的 DBA 错误导致的。

• 在数据库恢复过程中,事务处理活动只能前滚到所需的时间,而不能回退到所需的

时间。这就是必须为要恢复到过去某一时间点的数据库还原所有数据文件的原因。

如果不能还原所有数据文件,则无法打开数据库(不同步的)。

• 开始不完全恢复前,请执行已关闭数据库的整体备份(包括控制文件和重做日志)。

这将有助于以下几个方面:

- 允许从错误中进行恢复。如果恢复失败(例如,恢复到所需的恢复点后),则重

做日志和控制文件将无法用于下一恢复,除非有这些文件的备份。

- 如果恢复失败,则可以节省时间。在这种情况下,可以从新的备份还原数据文件,

而不必从以前的备份进行还原,后者需要应用归档。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 174:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-28

不完全恢复:最佳方案(续)

注:如果未执行整体备份,则至少应归档当前重做日志:SQL> ALTER SYSTEM ARCHIVE LOG CURRENT

并备份控制文件:SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/u01/data/backup.ctl';

• 成功恢复后执行整体关闭备份。如果在下一计划备份完成前需要进行另一恢复,则

此步骤可以节省很多时间。如果使用的是 Oracle Database 10g,则可以选择此步骤。

• 始终在允许用户访问系统之前,验证此问题是否已得到解决,以防恢复失败后需要

重新执行这些步骤。

请看如下示例:

• 日志序列 14 的数据库具有从序列 2 (arch_2.rdo) 到序列 13 (arch_13.rdo) 的归档日志。

• 执行不完全恢复后,创建了新的数据库原型,将数据库日志序列设置为 1。• 此时,归档日志 arch_2.rdo到 arch_13.rdo是旧数据库原型的一部分。

• 几次日志切换后,用其它所有归档(包括 arch_3.rdo到 arch_13.rdo之间的

旧归档日志)重写了归档日志 arch_2.rdo并进行了备份。

• 在稍后的阶段中,如果恢复需要 arch_6.rdo,则您需要确保从备份还原的归档

日志对应于正确的数据库原型,否则就会导致错误。

为防止混淆,可以使用 log_archive_format数据库初始化参数的 %r格式选项来实现

以下操作:

• 自动将数据库重置日志 ID 合并到归档日志文件名中

• 确保为多个数据库原型中的归档日志文件构造了唯一的名称

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 175:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-29

版权所有 © 2009,Oracle。保留所有权利。

恢复控制文件自动备份

RecoveryManager(RMAN) 快速恢复区

数据库

控制文件

RECOVER DATABASE;

ALTER DATABASE OPEN RESETLOGS;

RMAN> RESTORE CONTROLFILE TO 2> '/oradata/ctlfile.bak' FROM AUTOBACKUP;

用户管理RMAN CLI EM 完全不完全

> 控制文件RO TBS

恢复控制文件自动备份

如果没有使用恢复目录,则应配置控制文件的自动备份,以便能够在需要时快速还原控制

文件。无论是否使用快速恢复区,用于还原控制文件的命令都相同。但是,如果使用快速

恢复区,则 RMAN 会隐式交叉检验控制文件中列出的备份和影像副本,并对处于快速恢

复区但已还原控制文件中未记录的所有文件进行编录,从而提高已还原控制文件在还原数

据库的其余部分时的作用。

注:还原控制文件后不自动交叉检验磁带备份。如果使用磁带备份,则在还原控制文件并

装载数据库之后,必须对磁带备份进行交叉检查。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 176:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-30

恢复控制文件自动备份(续)

要从自动备份还原控制文件,数据库必须处于 NOMOUNT状态。然后,使用 RESTORE CONTROLFILE FROM AUTOBACKUP命令:

RMAN> SHUTDOWN IMMEDIATE; RMAN> STARTUP NOMOUNT; RMAN> set dbid = 123456789; RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

RMAN 会搜索控制文件自动备份。如果找到一个自动备份,则 RMAN 会将控制文件从

该备份还原到 CONTROL_FILES初始化参数中列出的所有控制文件位置。

如果有恢复目录,则不必设置 DBID,也不必使用控制文件自动备份来还原控制文件。

可以使用 RESTORE CONTROLFILE命令,且没有任何参数:RMAN> RESTORE CONTROLFILE;

执行此操作时,实例必须处于 NOMOUNT状态,且 RMAN 必须连接到恢复目录。还原的

控制文件将写入 CONTROL_FILES初始化参数中列出的所有位置。

如果数据库的 SPFILE 也丢失了,而且需要从自动备份中还原,则还原过程与从自动备份

还原控制文件相似。必须首先设置数据库的 DBID,然后才能使用 RESTORE SPFILE FROM AUTOBACKUP命令。

在使用还原的服务器参数文件启动实例后,RMAN 可从自动备份中还原控制文件。还原

和装载控制文件后,就拥有了还原和恢复数据库所必需的备份信息。

从备份还原数据库的控制文件后,必须执行完全介质恢复,然后才能使用 RESETLOGS选项打开数据库。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 177:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-31

版权所有 © 2009,Oracle。保留所有权利。

创建新的控制文件

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

口令文件

参数文件

SYSTEM

SYSAUX

UNDO TEMP

USERS

INDEX

重做日志文件 1B

重做日志文件 1A

重做日志文件 2B

重做日志文件 2A

控制文件

创建新的控制文件

如果配置了控制文件自动备份,则应很少(如果有)需要重新创建控制文件。但是,如果

需要,可以生成并保存一个执行重新创建操作的脚本。

ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令可以生成一个用户跟踪

文件,其中包含用于重新创建控制文件的 SQL 命令。将跟踪文件复制到一个脚本文件

(如 new_control.sql)中,删除 STARTUP NOMOUNT之前的跟踪头信息,然后进

行任何所需的更改,如增加 MAXDATAFILES、MAXLOGFILES等。运行该脚本创建新的

控制文件。

已装载了或打开了数据库并且以具有 DBA 权限的用户身份建立连接时,必须使用此命令。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 178:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-32

版权所有 © 2009,Oracle。保留所有权利。

创建新的控制文件

创建新的控制文件(续)

使用数据库控制台,可以管理数据库使用的控制文件。在“Administration(管理)”页中,

在“Storage(存储)”部分选择“Control Files(控制文件)”。

可以使用“Control Files General(控制文件一般信息)”页查看控制文件镜像及其位置。

单击“Backup To Trace(备份到跟踪文件)”以创建控制文件的跟踪文件。

还可以编写自己的 CREATE CONTROLFILE命令,但是需要提供以下文件的完整路径名

称和大小:

• 重做日志文件

• 与数据库关联的所有数据文件,包括 SYSTEM和 SYSAUX的数据文件厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 179:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-33

版权所有 © 2009,Oracle。保留所有权利。

恢复只读表空间

更改表空间状态

崩溃并执行恢复

案例 1

案例 2

案例 3

备份

只读

读/写

只读

只读

读/写

*

*

*

* 用于恢复的控制文件备份(如果

当前控制文件丢失)

用户管理RMAN CLI EM 完全不完全控制文件

> RO TBS

恢复只读表空间

使表空间处于只读状态可以防止用户对表空间中的数据文件执行写入操作,而无论用户的

更新权限级别如何。只读表空间的主要目的为了消除对数据库庞大的静态部分执行备份和

恢复的必要。只读表空间还提供了一种保护历史数据的方法,使用户无法修改这些数据。

因为只读表空间永远无法进行更新,所以它们可以位于 CD-ROM 或 WORM(写入一次,

读取多次)设备上。

恢复只读表空间的方法取决于可用备份以及表空间在恢复期间内是变更为读/写状态还是

处于只读状态。

案例 1:要恢复的表空间处于只读状态,且进行最后一次备份时为只读状态。在这种情况

下,只需从备份还原表空间。不需要应用任何重做信息。

案例 2:要恢复的表空间处于读/写状态,但是进行最后一次备份时为只读状态。在这种情

况下,需要从备份还原表空间并应用自表空间变为读/写状态以来的重做信息。

案例 3:要恢复的表空间处于只读状态,但是进行最后一次备份时为读/写状态。在表空间

变为只读状态后应始终备份该表空间以避免这种情况。但是,如果发生这种情况,则必须

从备份还原表空间并恢复到表空间变为只读状态的时刻。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 180:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-34

恢复只读表空间(续)

在所有三个案例中,如果当前控制文件不可用,则星号表示应用于恢复的控制文件备份。

这是必要的,因为使用备份控制文件时,恢复进程将要求您执行 OPEN RESETLOGS。这

将更新数据文件头,如果数据文件处于只读状态,则将无法向其执行写入操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 181:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-35

版权所有 © 2009,Oracle。保留所有权利。

只读表空间恢复问题

在执行以下操作时,对于只读表空间必须考虑一些特殊的

事项 :

• 重新创建控制文件

• 重命名数据文件

• 使用备份控制文件

只读表空间恢复问题

重新创建控制文件

如果需要使用 CREATE CONTROL FILE命令重新创建控制文件,并且数据库具有只读表

空间,则必须执行特殊过程。通过 ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令生成的跟踪文件中列出了各个步骤。因为表空间为只读,未对其进行更改,

因此假设不需要恢复。表空间数据文件没有包含在控制文件中,因此,使用新控制文件启

动数据库时,将根据数据词典中的文件对控制文件内容进行交叉检验。在数据词典中找到

的但不包含在控制文件中的所有文件都将添加到控制文件中,其文件名类似于

MISSINGnnnnn。数据库打开后,必须使用 ALTER DATABASE RENAME FILE命令对

控制文件中的那些文件进行重命名。ALTER DATABASE RENAME FILE 'MISSING00005'

TO '/u01/app/oracle/oradata/orcl/example01.dbf'; ALTER TABLESPACE "EXAMPLE" ONLINE;

Oracle Corporation 建议您在 RMAN 中启用控制文件自动备份,这样就不必依靠此解决方

案,已经使用 BACKUP CONTROLFILE TO TRACE命令进行了备份的控制文件将需要此

解决方案。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 182:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-36

只读表空间恢复问题(续)

更改数据文件位置

如果无法将只读表空间中的数据文件的副本还原到正确的目标,则可以使用 ALTER DATABASE RENAME命令将文件放到新的位置。

备份控制文件

如果只读表空间位于只读介质上,则使用 USING BACKUP CONTROLFILE选项进行恢

复时可能会遇到错误,或者性能较差。如果备份控制文件表明备份控制文件时表空间处

于读/写状态,就会发生这种情况。在这种情况下,介质恢复可能会尝试向文件执行写入

操作。对于只读介质,数据库将发出错误消息,说明无法写入到文件。

下面是使用备份控制文件时可以用于恢复只读介质的备选方案:

• 使用备份控制文件执行恢复前,从只读表空间脱机提取数据文件,然后在介质恢复

结束时联机引入这些文件。

• 使用正确的控制文件版本进行恢复。如果恢复完成时表空间处于只读状态,则控制

文件备份的时间必须是表空间处于只读状态的时刻。同样,如果恢复结束时表空间

处于读/写状态,则控制文件的时间必须是表空间处于读/写状态的时刻。

恢复数据库

如果在数据库要恢复到的时间点数据文件处于只读状态,则 RMAN 将无法恢复该文件。

要更改此情况,并允许 RMAN 验证数据文件头对于该时间点是否是最新的,可通过

RECOVER DATABASE命令指定 CHECK READONLY选项。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 183:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-37

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 执行用户管理的完全或不完全恢复

• 使用 RMAN 执行完全或不完全恢复

• 确定需要不完全恢复的情况

• 基于时间、SCN、日志序列、还原点或取消等方法

执行不完全恢复

• 恢复控制文件自动备份

• 使用 Oracle Enterprise Manager 执行恢复

• 恢复只读表空间

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 184:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 5-38

版权所有 © 2009,Oracle。保留所有权利。

练习概览:执行不完全恢复

本练习包含以下主题:

• 使用 RMAN 进行时间点恢复

• 恢复丢失的控制文件

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 185:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

闪回

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 186:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 查询回收站

• 配置闪回数据库

• 执行闪回数据库到某一时间点

• 监视闪回日志统计信息

• 启用和禁用闪回数据库功能

• 使用 Oracle Enterprise Manager 恢复向导执行闪回

数据库

• 将可靠还原点与闪回数据库配合使用

回收站闪回数据库配置闪回数据库监视闪回数据库可靠还原点

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 187:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-3

版权所有 © 2009,Oracle。保留所有权利。

闪回技术:概述

是还原数据表使用错误的 WHERE 子句

进行更新

还原数据

还原数据

还原数据

回收站

闪回日志

使用

事务处理

版本

查询

删除

数据库

闪回技术

否将当前数据与过去数据

进行比较

否调查数据的多个历史状态事务处理

否比较行版本

是删除表表

是截断表;

发生了意外多表更改事件

数据库

影响数据方案示例对象级别

闪回技术:概述

Oracle 数据库中发生了逻辑损坏时必须使用闪回技术,因为您需要快捷地恢复数据。与人

为错误一样,很难确定错误事务处理所影响的对象和行。通过使用闪回技术,可以诊断错

误在数据库中是如何造成的,然后可以修复损坏。可以查看与特定行修改相关的事务处理,

查看某段时间期间内给定行的完整版本集,或只查看在过去特定时间所显示的数据。幻灯

片中的表显示了使用闪回技术的典型情况。

闪回数据库使用闪回日志来执行闪回。闪回删除功能使用回收站,其它所有技术都使用还

原数据。

并不是所有闪回功能都会修改数据库。一些方法只查询其它版本的数据。您可以使用这些

工具来调查问题,并帮助进行恢复。闪回查询的结果可以帮助您执行以下两种操作之一:

• 确定要执行哪类数据库修改闪回操作来修复问题。

• 将这些查询的结果集输入到 INSERT、UPDATE或 DELETE语句,以便可以轻松地

修复错误数据。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 188:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-4

版权所有 © 2009,Oracle。保留所有权利。

闪回删除和回收站

DROP TABLE employees; FLASHBACK TABLEemployeesTO BEFORE DROP;

发生错误。

RECYCLEBIN=ON

闪回删除和回收站

在 Oracle 数据库的早期版本中,如果错误地删除了表,则必须将数据库恢复到以前的时

间以恢复删除的表。此过程通常非常耗时,并且会导致丢失其它事务处理的工作。

Oracle Database 10g 引入了闪回删除功能,您可以使用此功能还原 DROP TABLE语句的

结果,而不必使用时间点恢复。

注:初始化参数 RECYCLEBIN用于控制闪回删除功能是打开 (ON) 还是关闭 (OFF)。如果

将该参数设置为 OFF,则删除的表不会进入回收站。如果将该参数设置为 ON,则删除的

表将进入回收站,并且可以进行恢复。默认情况下,将 RECYCLEBIN设置为 ON。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 189:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-5

版权所有 © 2009,Oracle。保留所有权利。

回收站

3

21

DROP TABLE employees;

BIN$zbjra9wy==$0EMPLOYEES_PK

EMPLOYEES

回收站

DBA_FREE_SPACE

BIN$zbjrBdpw==$0

USER_OBJECTS

BIN$zbjrBdpw==$0 EMPLOYEESBIN$zbjra9wy==$0 EMPLOYEES_PK

4

对象包括:

– 已重命名的

– 未移动的

回收站

如果不启用回收站,则删除表时,与该表及其相关对象关联的空间会立即变为可回收

(也就是说,该空间可用于其它对象)。

如果启用了回收站,则删除表时,则与该表及其相关对象关联的空间不会立即变为可回收,

即使该空间确实显示在 DBA_FREE_SPACE中。相反,会将删除的对象临时放在回收站中,

这些对象仍属于其各自的所有者。在空间不紧张时,绝不会自动回收回收站对象使用的空

间。这样,便可以在尽可能长的期限内恢复回收站对象。

将删除的表移动到回收站时,将使用系统生成的名称对该表及其关联对象和约束条件

进行重命名。该操作非常有必要,因为这可以避免以后使用相同名称创建新对象时发生

名称冲突。

回收站本身是一个数据词典表,用于维护已删除对象的原始名称与各自系统生成名称之间

的关系。可以使用 DBA_RECYCLEBIN视图查询回收站的内容。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 190:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-6

回收站(续)

幻灯片中的图表说明了这种新的行为:

1. 在表空间中创建了名为 EMPLOYEES的表。

2. 删除 EMPLOYEES表。

3. 此时,EMPLOYEES占用的区被视为可用空间。

4. 将 EMPLOYEES重命名并插入到回收站中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 191:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-7

版权所有 © 2009,Oracle。保留所有权利。

从回收站还原表

• 还原删除的表和相关对象。

• 如果多个回收站条目具有相同原始名称,则:

– 使用系统生成的唯一名称来还原特定版本

– 使用原始名称时,还原的表遵循后进先出 (LIFO) 的规则

• 重命名原始名称(如果当前正在使用该名称)。

FLASHBACK TABLE <table_name>TO BEFORE DROP [RENAME TO <new_name>];

从回收站还原表

使用 FLASHBACK TABLE ... TO BEFORE DROP命令从回收站恢复表及其所有可能的

相关对象。可以指定表的原始名称或删除对象时分配给对象的系统生成名称。

如果指定原始名称,且回收站包含多个具有该名称的对象,则最先恢复最晚移动到回收站

的对象(LIFO:后进先出)。如果需要检索表的较早版本,则可以指定要检索的表的系

统生成名称,或发出其它 FLASHBACK TABLE ... TO BEFORE DROP语句,直到检索

到所需的表。

如果自删除原始表后已经在同一方案中创建了名称相同的新表,则系统会返回一个错误,

除非您同时指定了 RENAME TO子句。

注:闪回删除的表时,恢复的索引、触发器和约束条件将保留各自的回收站名称。因此,

建议在闪回删除的表前查询回收站和 DBA_CONSTRAINTS。使用这种方法,可以将恢复

的索引、触发器和约束条件重命名为更实用的名称。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 192:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-8

版权所有 © 2009,Oracle。保留所有权利。

回收站:自动回收空间

BIN$zbjrBdpw==$0 BIN$zbjra9wy==$0

BIN$zbjra9wy==$0

BIN$zbjrBdpw==$0

1

2

3

回收站

DBA_FREE_SPACE - RECYCLEBIN

自动扩展

回收站:自动回收空间

只要回收站对象使用的空间没有被回收,就可以使用闪回删除功能恢复这些对象。下面

是回收站对象回收策略:

• 明确发出 PURGE命令时手动进行清除

• 在空间紧张时自动进行清除:对象处于回收站中时,DBA_FREE_SPACE也会报告

其对应空间,因为可以自动回收这些空间。然后按以下顺序使用特定表空间中的

空闲空间:

1. 与回收站对象不对应的空闲空间。

2. 与回收站对象对应的空闲空间。在这种情况下,将使用先进先出 (FIFO) 算法

自动将回收站对象从回收站中清除。

3. 自动分配的可用空间(如果表空间是可以自动扩展的)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 193:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-9

回收站:自动回收空间(续)

假定在 TBS1表空间内创建一个新表。如果向此表空间分配了与回收站对象不对应的可用

空间,则首先使用此可用空间。如果该空间不够,则使用与 TBS1内驻留的回收站对象对

应的可用空间。如果使用了某些回收站对象的可用空间,则会从回收站中自动清除这些对

象。此时,将无法再使用闪回删除功能恢复这些对象。如果仍未满足空间需求,则作为最

后的方法,会在可能的情况下扩展 TBS1表空间。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 194:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-10

版权所有 © 2009,Oracle。保留所有权利。

回收站:手动回收空间

PURGE {TABLE <table_name>|INDEX <index_name>}

PURGE TABLESPACE <ts_name> [USER <user_name>]

PURGE [USER_|DBA_]RECYCLEBIN

回收站:手动回收空间

使用 PURGE命令可从回收站中永久地删除对象。从回收站中清除某个对象时,会从数据

库中永久地删除该对象及其相关对象。因此,将无法再使用闪回删除功能恢复从回收站中

清除的对象。下面是可能使用的一些 PURGE命令:

• PURGE TABLE清除指定表。

• PURGE INDEX清除指定索引。

• PURGE TABLESPACE清除驻留在指定表空间内的所有对象。此外,也可能清除相

关的、驻留在其它表空间中的对象。此外,还可以指定 USER子句,以仅清除属于

指定用户的那些对象,这些对象对于指定表空间运行于较低的磁盘限额上。

• PURGE RECYCLEBIN清除属于当前用户的所有对象。RECYCLEBIN与

USER_RECYCLEBIN功能相同。

• PURGE DBA_RECYCLEBIN清除所有对象。要发出此命令,必须具有足够的系统权

限或 SYSDBA系统权限。

注:对于 PURGE TABLE和 PURGE INDEX命令,如果指定原始名称且

回收站包含多个具有该名称的对象,则首先清除位于回收站中时间最长的对象 (FIFO)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 195:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-11

版权所有 © 2009,Oracle。保留所有权利。

不使用回收站

DROP TABLESPACE <ts_name> [INCLUDING CONTENTS] ;

DROP USER <user_name> [CASCADE] ;

DROP TABLE <table_name> [PURGE] ;

不使用回收站

可以使用 DROP TABLE PURGE命令从数据库中永久地删除表及其相关对象。使用此命

令时,对应的对象不会移到回收站中。此命令的功能与 DROP TABLE在先前版本中提供

的功能相同。

发出 DROP TABLESPACE ...INCLUDING CONTENTS命令后,表空间中的对象不会移

到回收站中。而且,回收站中属于该表空间的对象也会被清除。发出没有 INCLUDING CONTENTS子句的相同命令时,要使命令能够成功地得以执行,表空间必须是空的。但回

收站中可以有属于该表空间的对象。这种情况下,会清除这些对象。

发出 DROP USER ...CASCADE命令后,将从数据库中永久地删除该用户及其拥有的所

有对象。回收站中属于已删除用户的所有对象都将被清除。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 196:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-12

版权所有 © 2009,Oracle。保留所有权利。

查询回收站

SELECT owner, original_name, object_name,type, ts_name, droptime, related, space

FROM dba_recyclebinWHERE can_undrop = 'YES';

SELECT original_name, object_name, type, ts_name, droptime, related, space

FROM user_recyclebinWHERE can_undrop = 'YES';

SQL> SHOW RECYCLEBIN

查询回收站

可以通过查询 user_recyclebin或 RECYCLEBIN查看已经删除的所有对象。

dba_recyclebin显示所有用户已删除的以及仍驻留在回收站中的所有对象。

还可以使用 SQL*Plus SHOW RECYCLEBIN命令。此命令只显示可“取消删除”的那些

对象。

以下示例显示了如何从回收站中提取重要信息:

• original_name是对象删除前的名称。

• object_name是对象删除后的系统生成名称。

• type是对象的类型。

• ts_name是对象所属的表空间的名称。

• droptime是删除对象的日期。

• related是已删除对象的对象标识符。

• space是对象当前使用的块数。

还可以使用 DNT 查看回收站的内容。

注:有关 DBA_RECYCLEBIN视图的详细信息,请参阅《Oracle Database Reference》指南。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 197:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-13

版权所有 © 2009,Oracle。保留所有权利。

查询已删除的表中的数据

SELECT ... FROM "BIN$zbjrBdpw==$0" [AS OF ...]WHERE ...

回收站

USER_INDEXES

YES

INDEX_NAMEDROPPED

NO SALES_PK

USER_TABLESTABLE_NAMEDROPPED

YES

NO SALES

BIN$zbjrBdpw==$0 EMPLOYEES

BIN$zbjra9wy==$0 EMPLOYEES_PK

查询已删除表中的数据

删除了表后,表会移动到回收站中,其原始名称将更改为唯一的系统生成名称。因为仍

拥有已删除的表,所以仍可以通过 DBA_TABLES、DBA_OBJECTS、DBA_SEGMENTS等各种字典视图查看该表的特性。为了区分在回收站中的表与不在回收站中的表,DBA_TABLES视图包含名为 DROPPED的新列,对于已删除但仍驻留在回收站中的表,

该列设置为 YES。

因此,只要系统生成的表名称位于回收站中,就可以对其使用 SELECT语句以及闪回

查询。

但是,不能对驻留在回收站中的对象发出任何 DML 或 DDL 语句。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 198:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-14

版权所有 © 2009,Oracle。保留所有权利。

闪回数据库:概述

闪回数据库操作:

• 作用类似于数据库的倒回按钮

• 可以在用户造成了逻辑数据损坏的情况下使用

数据库已坏。 数据库已“倒回”。“按倒回按钮”。用户生成误。

回收站> 闪回数据库

配置闪回数据库监视闪回数据库可靠还原点

闪回数据库:概述

使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复

到那个时间的状态。因为不需要还原备份,所以此操作速度很快。可以使用此功能还原导

致逻辑数据损坏的更改。

如果数据库中有介质丢失或物理损坏,则必须使用传统的恢复方法。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 199:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-15

版权所有 © 2009,Oracle。保留所有权利。

闪回数据库体系结构

闪回缓冲区

重做日志缓冲区

SGA

LGWR

RVWR闪回日志 重做日志

… …

缓冲区高速缓存

1

定期记录块前像。

使用前像撤消对数据库所做的更改。 执行前滚介质恢复。

所有更改

非所有更改!

2

闪回数据库体系结构

启用闪回数据库时,将启动新的 RVWR后台进程。此后台进程按顺序将闪回数据库数据

从闪回缓冲区写入闪回数据库日志,这些日志会被循环使用。随后,发出 FLASHBACK DATABASE命令时,使用闪回日志还原至块的前像,然后使用重做数据前滚至所需的闪回

时间。

启用闪回数据库的开销取决于数据库工作量的读写混合情况。因为查询不需要记录任何

闪回数据,所以工作量的写操作量越大,启用闪回数据库的开销就越高。

注:不会归档闪回数据库日志。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 200:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-16

版权所有 © 2009,Oracle。保留所有权利。

配置闪回数据库

1. 配置快速恢复区。 3. 启用闪回数据库。2. 设置保留目标。

SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT EXCLUSIVE;SQL> ALTER SYSTEM SET

2 DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;SQL> ALTER DATABASE FLASHBACK ON;SQL> ALTER DATABASE OPEN;

回收站闪回数据库

> 配置闪回数据库监视闪回数据库可靠还原点

配置闪回数据库

可按以下步骤配置闪回数据库: 1. 配置快速恢复区。 2. 使用初始化参数 DB_FLASHBACK_RETENTION_TARGET设置保留目标。可指定

一个上限(以分钟为单位),指示数据库能够闪回到多长时间以前。本示例使用

了 2880 分钟,相当于两天。此参数只是一个目标,并不提供任何保证。闪回时间

间隔取决于快速恢复区中保留的闪回数据量的大小。 3. 使用以下命令启用闪回数据库:

ALTER DATABASE FLASHBACK ON;

必须先配置数据库以进行归档,且必须在 MOUNT EXCLUSIVE模式下启动数据库

后,才能发出此命令来启用闪回数据库。

可以使用以下查询来确定是否已启用闪回数据库: SELECT flashback_on FROM v$database;

可以使用 ALTER DATABASE FLASHBACK OFF命令禁用闪回数据库。这样,会自动删

除所有现有的闪回数据库日志。

注:仅当在独占模式下装载(而不是打开)数据库时才能启用闪回数据库。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 201:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-17

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 配置闪回数据库

确保数据库处于 ARCHIVELOG 模式。

使用 EM 配置闪回数据库

登录到 Oracle Enterprise Manager Database Control。在“Maintenance(维护)”页中,选

择“Backup/Recovery Settings(备份/恢复设置)”,然后选择“Recovery Settings(恢复

设置)”。确保数据库处于 ARCHIVELOG模式。如果数据库未处于此模式,请选中

“ARCHIVELOG Mode(ARCHIVELOG 模式)”,然后单击“Continue(继续)”。需

要关闭并重新启动实例,更改才能生效。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 202:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-18

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 配置闪回数据库

启用闪回事件记录并指定快速恢复区。

使用 EM 配置闪回数据库(续)

如果确认数据库已处于 ARCHIVELOG模式下,则返回“Recovery Settings(恢复设置)”

页,并向下滚动到“Media Recovery(介质恢复)”和“Flash Recovery Area(快速恢复

区)”区域,以查看新的设置。配置了快速恢复区和归档后,将

USE_DB_RECOVERY_FILE_DEST配置为用于归档日志目的地 10。通过选中“Enable Flashback Logging(启用闪回事件记录)”来启用闪回事件记录。还可以设置闪回保留时

间,并查看关于闪回数据库窗口的重要信息。

检查快速恢复区位置。快速恢复区是 Oracle 数据库中所有与恢复相关的文件和活动的统

一存储位置。从介质故障完全恢复数据库所需的所有文件都包含在快速恢复区中。可以在

快速恢复区中创建的与恢复相关的文件包括:归档重做日志文件、控制文件、Recovery Manager (RMAN) 创建的备份和闪回日志。通过分配存储位置并将与恢复相关的文件集中

到特定区域内,Oracle DB 服务器减轻了数据库管理员的负担,使他们不必管理由这些组

件创建的磁盘文件。快速恢复区的默认位置是 $ORACLE_BASE。如果希望其位于其它位

置,可立即进行更改。向下滚动到“Recovery Settings(恢复设置)”页底部并单击

“Apply(应用)”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 203:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-19

版权所有 © 2009,Oracle。保留所有权利。

闪回数据库:示例

RMAN> FLASHBACK DATABASE TO TIME =2> "TO_DATE('27.05.04 16:00:00',3> 'YYYY-MM-DD HH24:MI:SS')";

RMAN> FLASHBACK DATABASE TO SCN=23565;

RMAN> FLASHBACK DATABASE2> TO SEQUENCE=223 THREAD=1;

SQL> FLASHBACK DATABASE2 TO TIMESTAMP(SYSDATE-1/24);

SQL> FLASHBACK DATABASE TO SCN 53943;

SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load;

闪回数据库:示例

可以使用 RMAN FLASHBACK DATABASE命令来执行闪回数据库操作。可以使用

SEQUENCE和 THREAD指定一个重做日志序列号和线程作为下限。RMAN 仅选择可以用

于闪回到(但不包括)指定序列号的文件。

也可以使用 FLASHBACK DATABASE SQL 命令将数据库返回到某一过去时间或 SCN。如

果使用 TO SCN子句,则必须提供一个数值。如果指定 TO TIMESTAMP,则必须提供时

间戳值。还可以指定还原点名称。

注:必须在独占模式下装载数据库才能发出 FLASHBACK DATABASE命令,并且完成以

上操作后必须使用 RESETLOGS选项打开数据库。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 204:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-20

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 执行闪回数据库

选择对象和操作类型。

使用 EM 执行闪回数据库

在“Maintenance(维护)”页中,选择“Perform Recovery(执行恢复)”。从“Object Type(对象类型)”下拉列表中选择“Whole Database(整个数据库)”。接下来,选择

“Recover to the current time or a previous point-in-time(恢复到当前时间或过去的某个时间

点)”作为“Operation Type(操作类型)”。最后,提供数据库用户(即属于 dba组的

用户)的操作系统身份证明。完成这些步骤以后,单击“Continue(继续)”继续执行闪

回数据库操作中的下一步骤。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 205:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-21

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 执行闪回数据库

启动恢复向导:

使用 EM 执行闪回数据库(续)

选择了恢复操作类型后,恢复向导就会启动。系统将通知您将关闭并在 MOUNT模式下重

新启动数据库。此操作会占用几分钟时间,系统会通知您发生延迟。等待相应时间后,

必须单击“Refresh(刷新)”以继续执行操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 206:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-22

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 执行闪回数据库

使用 EM 执行闪回数据库(续)

现在,恢复向导已启动。在此期间,数据库已关闭并在 MOUNT模式下重新启动。单击

“Refresh(刷新)”。

此时将显示“Perform Recovery: Point-in-time(执行恢复:时间点)”页。在此页上,选择

“Recover to a prior point-in-time(恢复到以前的时间点)”选项,然后指定日期或 SCN。

然后,单击“Next(下一步)”。

此时将出现“Perform Recovery: Flashback(执行恢复:闪回)”页,可以选择使用闪回执

行恢复或执行常规恢复。选择相应选项,然后单击“Next(下一步)”。

您将直接转至幻灯片中显示的“Perform Recovery: Review(执行恢复:复查)页。单击

“Submit(提交)”闪回数据库。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 207:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-23

版权所有 © 2009,Oracle。保留所有权利。

闪回数据库注意事项

• 闪回数据库操作完成后,打开数据库:

– 在只读模式下验证使用的目标时间或 SCN 正确无误。

– 通过 RESETLOGS操作打开,以允许 DML。• “闪回”与“恢复”是对立的。

• 以下情况下不能使用闪回数据库操作:

– 控制文件已还原或已重新创建。

– 表空间已删除。

– 已经收缩了数据文件。

• 使用 TO BEFORE RESETLOGS 闪回到最后一次

RESETLOGS 操作之前。

闪回数据库注意事项

在不能使用闪回数据库功能的情况下,应使用不完全恢复操作将数据库恢复至特定时间。

闪回数据库操作完成后,可在只读模式下打开数据库,验证是否使用了正确的目标时间或

SCN。如果没有,可以再次闪回数据库,或者通过执行恢复操作来前滚数据库。所以,要

还原闪回数据库操作,应前滚恢复数据库。

不能使用闪回数据库操作来恢复在闪回操作期间删除的数据文件。删除的数据文件会添加

到控制文件中且标记为脱机,但是不会闪回。闪回数据库不能将数据文件闪回至介于其创

建之后与调整操作之前的某一时刻。如果某个文件在数据库要闪回到的期间调整了大小,

则应在闪回数据库操作开始之前使该文件脱机。这适用于收缩的文件,而不是扩展的文件。

可以将闪回数据库用于已经配置为自动扩展的数据文件。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 208:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-24

闪回数据库考虑事项(续)

通过在 FLASHBACK DATABASE命令中补充 TO BEFORE RESETLOGS子句,可以闪回

至最后一次 RESETLOGS操作之前。

注:闪回保留目标不能绝对保证闪回的可用性。如果在快速恢复区中需要为必需的文件提

供空间,则可能会自动删除闪回日志。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 209:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-25

版权所有 © 2009,Oracle。保留所有权利。

监视闪回数据库

要针对保留目标监视容量:

• 查看快速恢复区磁盘限额:

• 确定当前闪回窗口:

• 监视闪回数据库日志中的事件记录:

SQL> SELECT estimated_flashback_size,2 flashback_size3 FROM V$FLASHBACK_DATABASE_LOG;

SQL> SELECT *2 FROM V$FLASHBACK_DATABASE_STAT;

SQL> SELECT oldest_flashback_scn,2 oldest_flashback_time3 FROM V$FLASHBACK_DATABASE_LOG;

回收站闪回数据库配置闪回数据库

> 监视闪回数据库可靠还原点

监视闪回数据库

监视快速恢复区的空间使用情况是非常重要的,因为这样可以知道在多大程度上满足了保

留目标。使用 V$FLASHBACK_DATABASE_LOG视图监视闪回数据库保留目标:

• ESTIMATED_FLASHBACK_SIZE使用先前记录的闪回数据,来估计要满足当前闪回

保留目标时闪回日志在快速恢复区中所需的磁盘空间。估计的依据是自实例启动以

来的工作量,或者是等于闪回保留目标的最近时间间隔,取较小的那个值。

• FLASHBACK_SIZE提供当前闪回数据的大小,以字节表示。

• OLDEST_FLASHBACK_SCN和 OLDEST_FLASHBACK_TIME显示可以将数据库闪回

到的最小 SCN 和时间的近似值。V$DATABASE中的 CURRENT_SCN提供当前数据

库 SCN。

使用 V$FLASHBACK_DATABASE_STAT视图监视闪回数据库日志中记录闪回数据的开销。

此视图包含 24 小时的信息,每一行代表一小时的时间间隔。使用此视图可确定闪回数据

的生成速率变化。SQL> SELECT begin_time, end_time, flashback_data, db_data,

2 redo_data, estimated_flashback_size AS EST_FB_SZE 3 FROM V$FLASHBACK_DATABASE_STAT;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 210:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-26

监视闪回数据库(续)

BEGIN_TIM END_TIME FLASHBACK_DATA DB_DATA REDO_DATA EST_FB_SZE --------- --------- -------------- ---------- ---------- ----------12-FEB-04 12-FEB-04 16384 0 24576 0 12-FEB-04 12-FEB-04 6594560 7471104 1533440 815923200 12-FEB-04 12-FEB-04 17235968 12361728 5150720 839467008 12-FEB-04 12-FEB-04 311648256 37249024 10272768 855195648

基于这些信息,可能需要调整保留时间或快速恢复区大小。

FLASHBACK_DATA和 REDO_DATA分别表示在时间间隔内写入的闪回数据字节数和重做

数据字节数,DB_DATA提供读取和写入的数据块字节数。此视图还包含一定时间间隔内

预计需要的闪回空间。

可以查询 V$RECOVERY_FILE_DEST来查看有关快速恢复区的信息。列说明如下:

• NAME:快速恢复区名称,指示位置字符串

• SPACE_LIMIT:DB_RECOVERY_FILE_DEST_SIZE参数中指定的磁盘限额

• SPACE_USED:快速恢复区文件使用的空间(以字节表示)

• SPACE_RECLAIMABLE:使用空间管理算法,通过删除过时、冗余的以及其它低优

先级的文件而回收的空间大小

• NUMBER_OF_FILES:文件数

SQL> SELECT name, space_limit AS quota, 2 space_used AS used, 3 space_reclaimable AS reclaimable, 4 number_of_files AS files 5 FROM v$recovery_file_dest ;

NAME QUOTA USED RECLAIMABLE FILES ------------------------ ---------- ---------- ----------- -----/u01/flash_recovery_area 5368709120 2509807104 203386880 226

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 211:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-27

版权所有 © 2009,Oracle。保留所有权利。

使用 EM 监视闪回数据库

使用 EM 监视闪回数据库

可在“Recovery Settings(恢复设置)”页中看到上面各页中提到的大多数闪回数据库统

计信息。这些度量包括当前所有闪回日志使用的空间、最低 SCN 和闪回数据中最低 SCN 的时间。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 212:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-28

版权所有 © 2009,Oracle。保留所有权利。

可靠还原点

可靠还原点确保您可以随时对该 SCN 执行FLASHBACK DATABASE 命令。

回收站闪回数据库配置闪回数据库监视闪回数据库

> 可靠还原点

SQL> CREATE RESTORE POINT before_load2 GUARANTEE FLASHBACK DATABASE;

可靠还原点

与“数据库恢复”一课中讲述的正常还原点一样,在恢复操作中可靠还原点也可以用作

SCN 的别名。但是,可靠还原点还提供与使用闪回数据库功能相关的特定功能。

在特定 SCN 创建可靠还原点后,会通过强制执行闪回数据库操作将数据库恢复到该 SCN 所对应的状态,即使未对数据库启用闪回事件记录也是如此。如果启用了闪回事件记录,

则创建可靠还原点会强迫保留所需的闪回日志,使闪回数据库操作可恢复到最早的可靠还

原点创建后的任何时间点。

只要快速恢复区中有足够的磁盘空间来存储所需的日志,就可以使用可靠还原点,将整个

数据库恢复至已知的几天或几周前的良好状态。

注:与正常还原点一样,可以使用可靠还原点指定 RECOVER DATABASE操作的时间点。

有关详细信息,请参阅“数据库恢复”一课。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 213:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-29

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 查询回收站

• 配置闪回数据库

• 使用 Oracle Enterprise Manager 或 RMAN 使数据库

闪回至某一时间点

• 监视闪回日志统计信息

• 启用和禁用闪回数据库功能

• 将可靠还原点与闪回数据库配合使用

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 214:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 6-30

版权所有 © 2009,Oracle。保留所有权利。

练习概览:执行闪回数据库

本练习包含以下主题:

• 通过执行闪回数据库功能撤消不需要的事务处理

• 监视闪回数据库的保留情况

• 确定闪回日志的大小

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 215:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

处理数据库损坏

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 216:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 确定数据库损坏的原因:

– 硬件

– 软件

• 使用下列功能检测数据库损坏:

– ANALYZE – DBVERIFY – DB_BLOCK_CHECKING – DBMS_REPAIR

• 使用 RMAN 修复数据库损坏

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 217:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-3

版权所有 © 2009,Oracle。保留所有权利。

什么是块损坏

• 只要对块执行读或写操作,就会执行下列一致性检查。

– 块版本

– 高速缓存中的 DBA(数据块地址)值与块缓冲区中的DBA 值比较的结果

– 块校验和(如果启用)

• 损坏的块被标识为以下类别:

– 介质损坏

– 逻辑(或软件)损坏

什么是块损坏?

所谓损坏的数据块,是指块没有采用可识别的 Oracle 格式,或者其内容在内部不一致。

通常情况下,损坏是由硬件故障或操作系统问题引起的。Oracle 数据库将损坏的块标识为

“逻辑损坏”或“介质损坏”。如果是逻辑损坏,则是 Oracle 内部错误。Oracle 数据库

检测到不一致之后,就将逻辑损坏的块标记为损坏。如果是介质损坏,则是块格式不正确;

从磁盘读取的块不包含有意义的信息。

通过恢复块,或者删除包含损坏块的数据库对象(或同时采用这两种方式),可以修复介

质损坏的块。如果介质损坏是由硬件故障引起的,则只有修复了硬件故障后,才能彻底解

决问题。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 218:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-4

版权所有 © 2009,Oracle。保留所有权利。

块损坏故障现象:ORA-01578

错误 ORA-01578:"ORACLE data block corrupted (file # %s, block # %s)":• 发现损坏的数据块时生成此信息

• 始终返回相对文件号和块号

• 返回到发出查询的会话(该查询在发现损坏时执行)

• 在 alert.log 文件中显示

块损坏故障现象:ORA-01578 一般情况下,ORA-01578 错误是由硬件问题引起的。如果 ORA-01578 错误始终返回相同

的参数,则最可能的原因是块介质损坏。

如果返回的参数每次都有变化,则可能存在硬件问题。客户应检查内存和页面空间,并检

查 I/O 子系统,以便查找有问题的控制器。

注:ORA-01578 会返回相对文件号,随之出现的 ORA-01110 错误会显示绝对文件号。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 219:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-5

版权所有 © 2009,Oracle。保留所有权利。

如何处理损坏

• 检查预警日志和操作系统日志文件。

• 使用可用的诊断工具,找出损坏的类型。

• 多次运行检查功能,确定错误是否持续存在。

• 根据需要,从损坏的对象中恢复数据。

如何处理损坏

始终尝试确定错误是否持续出现。多次运行 ANALYZE命令;如果可能,可执行关闭再启

动操作,然后重新尝试执行原先发生故障的操作。

查找是否有其它损坏。如果发现一个损坏的块,则可能还存在其它损坏的块。请使用诸如

DBVERIFY之类的工具处理类似的情况。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 220:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-6

版权所有 © 2009,Oracle。保留所有权利。

如何处理损坏

• 解决硬件问题:

– 内存条

– 磁盘控制器

– 磁盘

• 根据需要,从损坏的对象中恢复或还原数据。

如何处理损坏(续)

如果存在硬件故障,就不能继续工作了。遇到硬件问题时,应与供应商取得联系,在检查

并修复了计算机后再继续工作。此时应运行一次全面的硬件诊断会话。

硬件故障的类型可能会有很多种:

• I/O 硬件或固件故障

• 操作系统 I/O 或高速缓存问题

• 内存或分页问题

• 磁盘修复实用程序厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 221:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-7

版权所有 © 2009,Oracle。保留所有权利。

与损坏相关的功能

是无块介质恢复

是逻辑闪回

是逻辑DBMS_REPAIR

否逻辑DB_BLOCK_CHECKING

物理

物理

逻辑

物理

损坏损坏

否DB_BLOCK_CHECKSUM

否exp

否ANALYZE

否DBVERIFY

修复损坏功能

与损坏相关的功能

在 Oracle 数据库中,有许多可用于检测、诊断和修复损坏的工具。本幻灯片汇总了本课

程涉及的其中一些工具。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 222:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-8

版权所有 © 2009,Oracle。保留所有权利。

DBVERIFY 实用程序

• 只能检查数据文件;不能检查重做日志文件

• 检查块一致性

• 可以在打开数据库的情况下使用

• 该实用程序的名称:dbv

$ dbv file=/u01/oradata/users01.dbf \blocksize=8192

DBVERIFY 实用程序

DBVERIFY 是一种外部命令行实用程序,可以对脱机或联机的数据库执行物理数据结构

完整性检查。可以对备份文件与联机文件(或文件片段)运行此实用程序。DBVERIFY 实用程序的主要用途,是确保在还原数据库或数据文件之前,其备份有效;也可用作诊断

数据损坏问题的辅助工具。因为可以对脱机数据库运行 DBVERIFY,因此可显著提高完

整性检查的速度。

DBVERIFY 的局限性包括:

• DBVERIFY 不能检测诸如 INDEX与 TABLE不匹配之类的问题,此类问题可通过

ANALYZE TABLE .. VALIDATE STRUCTURE CASCADE命令进行检测。

• DBVERIFY 不验证重做日志文件或控制文件。

• DBVERIFY 只单独检查数据块;不考虑数据块是否属于现有对象。

• 对于裸设备,应使用 END参数,以免扫描的块范围超出数据文件空间末尾。dbv FILE=/dev/rdsk/r1.dbf END=last_data_block#

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 223:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-9

版权所有 © 2009,Oracle。保留所有权利。

解释 DBVERIFY 输出

• 一个“page”表示一个块。

• 如果块的头尾不匹配,DBVERIFY 就会重新读取此块。如果块的头尾匹配,则报告一个流入块;否则报告一个块损坏。

Total Pages Examined : 12800Total Pages Processed (Data) : 4408Total Pages Failing (Data) : 0Total Pages Processed (Index): 1264...

Total Pages Marked Corrupt : 4Total Pages Influx : 0Highest block SCN : 654836 (0.654836)

解释 DBVERIFY 输出

流入块是指切分块。如果 DBVERIFY 报告了流入块,但未报告损坏,则表明当其第一次

读取此块时,DBWn正在写入一个新版本,它获取了此块的部分旧版本和部分新版本。

而且,DBVERIFY 只检查逻辑损坏。因此,有可能在高水线标记之上出现损坏。以下是

一个 DBVERIFY 检查示例:$ dbv file=example01.dbf blocksize=8192DBVERIFY: Release 10.2.0.1.0 - Production on Fri Sep 9 13:17:45 2005

Copyright (c) 1982, 2005, Oracle.All rights reserved.

DBVERIFY - Verification starting : FILE = example01.dbf

DBVERIFY - Verification complete

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 224:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-10

解释 DBVERIFY 输出(续)Total Pages Examined : 12800 Total Pages Processed (Data) : 4409 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 1264 Total Pages Failing (Index): 0 Total Pages Processed (Other): 1539 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 5588 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Highest block SCN : 654836 (0.654836)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 225:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-11

版权所有 © 2009,Oracle。保留所有权利。

ANALYZE命令

• 执行逻辑块检查

• 不将块标记为软损坏;只报告软损坏情况

• 验证索引项和表项

SQL> ANALYZE TABLE table_name VALIDATE 2 STRUCTURE CASCADE;

SQL> ANALYZE INDEX index_name VALIDATE 2 STRUCTURE;

ANALYZE 命令

使用 ANALYZE命令可以验证表或表分区的结构,以及索引或索引分区的结构。要分析的

对象必须位于本地计算机,并且必须是在您自己的方案中,或者必须拥有 ANALYZE ANY系统权限。CASCADE选项可以验证对象,包括该对象的所有相关对象。可以在 SQL*Plus 会话中针对特定对象运行此命令,执行完整性检查;并且通过多次执行同一个 ANALYZE命令,可以确定错误是否为永久性错误。

对于已分区的表,ANALYZE还可以验证行是否属于正确的分区。如果行的顺序错误,则

会将行 ID 插入 INVALID_ROWS表中。SQL> ANALYZE TABLE partitioned_table PARTITION (p1)

2 VALIDATE STRUCTURE INTO invalid_rows;

一条简单的 select 语句 (SELECT * FROM table) 可以执行完整的表扫描,表示它可以

读取所有数据块,直到表的高水线标记为止。可以使用该命令执行快速检查,查看当前表

数据的损坏情况。也可用 Data Pump 命令导出对象;该命令也可完整地扫描每个表。

注:ANALYZE将验证自动段空间管理 (ASSM) 段的位图信息,但不考虑 ASSM 段中高水

线标记下未格式化的块。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 226:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-12

版权所有 © 2009,Oracle。保留所有权利。

实时验证块完整性:DB_BLOCK_CHECKING

DB_BLOCK_CHECKING 初始化参数:

• 在对每个块执行自我一致性检查时,控制检查的处理程度

• 可防止内存和数据损坏

• 可以使用 ALTER SESSION 或 ALTER SYSTEM 命令进行设置

实时验证块完整性:DB_BLOCK_CHECKING

DB_BLOCK_CHECKING设置为 TRUE时,Oracle 数据库将对所有数据块执行块检查。

Oracle 数据库通过读取块中的数据来检查块,以确保此数据块的自我一致性。块检查常常

可以防止内存和数据损坏。块检查通常会产生 1% 到 10% 的开销,具体取决于工作量。

正在执行的更新或插入操作越多,执行块检查的开销就会越高。DB_BLOCK_CHECKING有以下四个可能的值:

• OFF:在除 SYSTEM之外的任何表空间中都不执行块检查。

• LOW:在内存中块的内容发生更改之后(例如,在 UPDATE或 INSERT语句之后

以及在磁盘上读取时),执行基本的块头检查。

• MEDIUM:执行所有 LOW检查,并对所有不是按索引组织的表块执行块检查。

• FULL:执行所有 LOW和 MEDIUM检查,以及对索引块的检查。

如果性能开销可以接受,则应将 DB_BLOCK_CHECKING设置为 FULL。默认值为

FALSE,此值等同于以前版本中的 OFF。即使关闭了此选项,也始终对 SYSTEM表空间

执行块检查。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 227:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-13

版权所有 © 2009,Oracle。保留所有权利。

实时验证块完整性:DB_BLOCK_CHECKSUM

DB_BLOCK_CHECKSUM 初始化参数:

• 确定是否保持校验和,以及是否对每个块都进行验证

• 可以防止由底层 I/O 系统引起的损坏

a14f

实时验证块完整性:DB_BLOCK_CHECKSUM

如果 DB_BLOCK_CHECKSUM设置为 TRUE,则 DBWn进程和直接加载程序将计算校验和,

并在将其写入磁盘时,将此校验和存储在每个数据块的高速缓存头中。校验和是一个根据

块中存储的所有字节数计算出的数字。在随后读取此块时,将重新计算校验和,并将此次

计算得到的值与存储的值进行比较。有了校验和,数据库只要付出 1% 到 2% 的开销,便

可检测因底层磁盘、存储系统或 I/O 系统引起的损坏;因此,Oracle 建议将

DB_BLOCK_CHECKSUM设置为默认值 TRUE。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 228:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-14

版权所有 © 2009,Oracle。保留所有权利。

使用 EXP检测损坏

可以使用常规导出来检测损坏。

$ exp hr/hr tables=departments

About to export specified tables via Conventional Path .... . exporting table DEPARTMENTSEXP-00056: ORACLE error 1578 encounteredORA-01578: ORACLE data block corrupted (file # 5, block # 51)ORA-01110: data file 5: '/u01/app/oracle/oradata/orcl/example01.dbf'

使用 EXP 检测损坏

检测块损坏的另一种工具是导出实用程序或 EXP。因为 EXP会对要导出的对象的每个块

进行完整的扫描,所以在遇到损坏时,它会报告一个错误。

注:“数据泵导出”实用程序也可用于检测损坏,因为它对数据库执行的活动与“导出”

实用程序的相同。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 229:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-15

版权所有 © 2009,Oracle。保留所有权利。

使用闪回检查逻辑损坏

DBA

用户

撤消 SQL 或闪回表

发现损坏的数据

闪回版本查询

闪回事务查询

使用闪回检查逻辑损坏

排除物理损坏之后,可以使用闪回功能组合来确定发生逻辑损坏的时间。例如,可以先使

用闪回版本查询来查看某行在一个时段内的值。闪回版本查询还可以返回事务处理标识。

得到事务处理标识之后,就可以查看受同一事务处理影响的所有对象。

要还原数据损坏,可以使用 UNDO_SQL列中返回的信息来修复错误,也可以将表闪回到

发布此事务处理之前的时间 (SCN)。

注:有关执行闪回版本查询的详细资料,请参阅课程《Oracle Database 10g:数据库

管理-课堂练习 I》。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 230:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-16

版权所有 © 2009,Oracle。保留所有权利。

DBMS_REPAIR 程序包

可用过程

• CHECK_OBJECT

• FIX_CORRUPT_BLOCKS

• DUMP_ORPHAN_KEYS

• REBUILD_FREELISTS

• SEGMENT_FIX_STATUS • SKIP_CORRUPT_BLOCKS

• ADMIN_TABLES

DBMS_REPAIR 程序包

管理数据块损坏的另一种方法是使用 DBMS_REPAIR程序包。可以使用 DBMS_REPAIR检测并修复表和索引中损坏的块。使用此方法,可以在条件允许时解决损坏问题,并且还

可以在尝试重建或修复对象时继续使用这些对象。程序包中包含的过程有:

• CHECK_OBJECT:检测并报告表或索引中的损坏

• FIX_CORRUPT_BLOCKS:将原先由 CHECK_OBJECT过程识别的块标记为软件(或逻辑)损坏

• DUMP_ORPHAN_KEYS:将索引条目报告到一个孤立的键表中,此键表指向损坏的数据块中的行

• REBUILD_FREELISTS:重建对象的可用列表

• SEGMENT_FIX_STATUS:段空间管理为 AUTO时,可提供修复位图条目损坏状态的功能

• SKIP_CORRUPT_BLOCKS:在表与索引扫描期间忽略标记为损坏的块。如果不使用

此过程,则在遇到标记为损坏的块时,将出现 ORA-01578 错误

• ADMIN_TABLES:提供修复孤立键表所需的管理功能(创建、删除或清除)。这些

表始终采用 SYS模式进行创建

注:孤立键是指向不再存在的表行的索引条目。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 231:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-17

版权所有 © 2009,Oracle。保留所有权利。

使用 DBMS_REPAIR

1. 检测并报告损坏。

2. 评估 DBMS_REPAIR 的成本和优势。

SET SERVEROUTPUT ONDECLARE num_corrupt INT;BEGINnum_corrupt := 0;DBMS_REPAIR.CHECK_OBJECT (Schema_name => 'HR',object_name => 'DEPARTMENTS',repair_table_name => 'REPAIR_TABLE',corrupt_count => num_corrupt);

END;

使用 DBMS_REPAIR

在使用 DBMS_REPAIR之前,您的首要任务应当是检测并报告损坏。报告不仅要表明出

错的块,还要给出相关的修复指令。使用本课中先前介绍的选项之后,可以考虑采用

DBMS_REPAIR程序包来修复损坏。CHECK_OBJECT过程检查指定的对象,并使用有关

损坏以及修复指令的信息来填写修复表。在执行任何 DBMS_REPAIR过程之前,必须使

用 ADMIN_TABLES过程建立修复表:BEGIN DBMS_REPAIR.ADMIN_TABLES (

table_name => 'REPAIR_TABLE', table_type => DBMS_REPAIR.REPAIR_TABLE, action => DBMS_REPAIR.CREATE_ACTION, tablespace => 'USERS');

END;

使用 DBMS_REPAIR之前,必须对使用该过程的好处与后果进行权衡。还应当检查可用

于解决损坏对象的其它选项。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 232:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-18

使用 DBMS_REPAIR(续)

第一步是回答下列问题:

• 损坏程度如何?要确定是否发生损坏,以及是否存在修复操作,请执行

CHECK_OBJECT过程,然后查询修复表。

• 还有什么其它选项可用于解决块损坏问题?

• 使用 DBMS_REPAIR使对象变为可用后,会带来哪些逻辑损坏或副作用?是否能够

妥善地解决这些问题?

• 如果修复涉及到数据丢失,则能否检索到这种丢失的数据?

数据块被标记为损坏时,可以从索引中检索数据。DUMP_ORPHAN_KEYS过程可以帮助您

检索此信息。当然,是否用这种方式检索数据,取决于索引与表之间的冗余量。下面的示

例说明了如何为 USERS表空间创建孤立的键表。BEGIN DBMS_REPAIR.ADMIN_TABLES (

table_name => 'ORPHAN_KEY_TABLE', table_type => DBMS_REPAIR.ORPHAN_TABLE, action => DBMS_REPAIR.CREATE_ACTION, tablespace => 'USERS');

END;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 233:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-19

版权所有 © 2009,Oracle。保留所有权利。

使用 DBMS_REPAIR

3. 使对象变为可用。

SET SERVEROUTPUT ONDECLARE num_fix INT;BEGINnum_fix := 0;DBMS_REPAIR.FIX_CORRUPT_BLOCKS (schema_name => 'HR',object_name => 'DEPARTMENTS',object_type => DBMS_REPAIR.TABLE_OBJECT,repair_table_name => 'REPAIR_TABLE',fix_count => num_fix);

END;

使用 DBMS_REPAIR(续)

通过在表与索引扫描期间忽略损坏,DBMS_REPAIR使对象变为可用。通过使用

FIX_CORRUPT_BLOCKS和 SKIP_CORRUPT_BLOCKS过程,可建立一种环境,以便跳

过 DBMS_REPAIR修复能力范围之外的损坏,从而使损坏的对象变为可用。

如果损坏涉及到数据丢失,例如在数据块中出现坏行,则 FIX_CORRUPT_BLOCKS过程

会将此类所有块都标记为损坏。然后,可以运行 SKIP_CORRUPT_BLOCKS过程,跳过该

对象中标记为损坏的块。设置为跳过时,表和索引扫描将跳过所有标记为损坏的块。上述

方法既适用于介质损坏块,也适用于软件损坏块。通过查看 DBA_TABLES数据字典视图

中的 SKIP_CORRUPT列,可以确定这一设置当前是否对表有效。

如果索引与表不同步,则在某些情况下,SET TRANSACTION READ ONLY事务处理可

能有不一致的情况;在这些情况下,一个查询仅用于探测索引,随后的一个查询将同时探

测索引和表。如果将表块标记为损坏,则两次查询会返回不同的结果,从而违反只读事务

处理的规则。解决此问题的一个方法是,不要跳过 SET TRANSACTION READ ONLY事

务处理中的损坏。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 234:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-20

版权所有 © 2009,Oracle。保留所有权利。

使用 DBMS_REPAIR

4. 修复损坏并重建丢失的数据。

SET SERVEROUTPUT ONDECLARE num_orphans INT;BEGINnum_orphans := 0;DBMS_REPAIR.DUMP_ORPHAN_KEYS (schema_name => 'SCOTT',object_name => 'PK_DEPT',object_type => DBMS_REPAIR.INDEX_OBJECT,repair_table_name => 'REPAIR_TABLE',orphan_table_name => 'ORPHAN_KEY_TABLE',key_count => num_orphans);DBMS_OUTPUT.PUT_LINE('orphan key count: ' ||

TO_CHAR(num_orphans));END;

使用 DBMS_REPAIR(续)

使对象变为可用之后,可以使用 DUMP_ORPHAN_KEYS过程恢复数据。此过程将报告指

向损坏数据块中的行的索引条目。所有此类索引条目都会插入到一个孤立的键表中,此键

表中存放着损坏的键和行标识。孤立的键表必须是以前就已创建的表。

检索到索引条目信息之后,就可以使用 ALTER INDEX ... REBUILD ONLINE语句重

建索引了。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 235:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-21

版权所有 © 2009,Oracle。保留所有权利。

块介质恢复 (BMR)

块介质恢复:

• 降低平均恢复时间 (MTTR) • 提高介质恢复期间的可用性

– 恢复期间数据文件保持联机状态

– 只有正在恢复的块是不可访问的

• 可以通过 RMAN 使用 BLOCKRECOVER 命令进行调用。

– 从可用备份中还原个别块

– 与服务器协调工作恢复块介质

块介质恢复 (BMR) BMR 将介质恢复的最小可恢复单位从数据文件缩小到块。如果已知数据库中只有少量的

块需要介质恢复,则更有效的方式是有选择地进行还原,只恢复需要恢复的块。只需将正

在恢复的块变成不可用,即使数据库的其余部分在恢复期间继续可用。与文件级别的恢复

相比,BMR 有两个主要优势:

• 降低平均恢复时间 (MTTR) • 由于正在恢复的数据文件继续保持联机状态,所以可以提高数据在介质恢复期间的

可用性。

BMR 使用现有的恢复机制,将来自重做流的更改应用到从相应的备份中还原的块版本。

必须使用 RMAN 才能执行 BMR。RMAN 从可用的备份中还原个别数据块,并与 Oracle 服务器进程协调来进行还原。如果没有块级恢复,则即使只损坏了一个块,也必须还原

整个文件,并且必须将所有重做数据应用到该文件。使用块级恢复降低的 MTTR 包括了

还原时间和恢复时间的减少。请注意,只能进行完全恢复。不完全恢复会导致数据库出现

逻辑上的不一致。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 236:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-22

版权所有 © 2009,Oracle。保留所有权利。

BLOCKRECOVER命令

RMAN BLOCKRECOVER 命令:

• 确定包含要进行恢复的块的备份

• 读取备份并将请求的块累积到内存缓冲区

• 必要时,通过从备份中读取归档日志来管理块介质恢复会话

• 不能用于不完全恢复

RMAN> BLOCKRECOVER DATAFILE 6 BLOCK 3;

BLOCKRECOVER 命令

RMAN 通过 BLOCKRECOVER命令支持 BMR。用户遇到块损坏时,错误消息、预警日志

和跟踪文件会指示引发问题的块。DBA 随后可以调用此命令仅还原有问题的块,从而节

约大量的停机时间,并提高数据的可用性。

BLOCKRECOVER命令将执行以下任务:

• 确定包含要进行恢复的块的备份

• 读取备份并将请求的块累积到内存缓冲区如果所需的任何块受到损坏(介质损坏或

逻辑损坏),RMAN 就会读取此文件下一个最旧的备份,以寻找该块的有效副本。

UNTIL选项将可选择的内容限制为在指定时间、SCN 或日志序列之上或之前执行

的备份集或文件副本,从而强制 BLOCKRECOVER使用较旧的备份,而不使用最新

的备份

• 启动并管理块介质恢复会话,以便根据需要从备份中读取归档日志

• 始终执行完全恢复。使用 BLOCKRECOVER命令时,不能执行时间点恢复

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 237:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-23

版权所有 © 2009,Oracle。保留所有权利。

使用 BLOCKRECOVER 的示例

• 恢复一组损坏的块

• 按还原类型限制块介质恢复

• 按备份标记限制块介质恢复

• 按时间、SCN 或日志序列限制块介质恢复

使用 BLOCKRECOVER 的示例

• 恢复一组损坏的块BLOCKRECOVER DATAFILE 2 BLOCK 12, 13 DATAFILE 7 BLOCK 5, 98, 99 DATAFILE 9 BLOCK 19;

• 此示例恢复一系列块,并且只从数据文件副本进行还原:{ BLOCKRECOVER DATAFILE 3 BLOCK 1,2,3,4,5 TABLESPACE sales DBA 4194405, 4194409, 4194412 FROM DATAFILE COPY;}

注:DBA 是数据块地址。

• 按备份标记限制 BMR:BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 FROM TAG "weekly_backup";

• 下面的示例恢复 SYSTEM表空间中的两个块,并强制从创建时间至少在两天以前的备份中进行还原:

BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME 'SYSDATE-2';

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 238:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-24

使用 BLOCKRECOVER 的示例(续)

• 下面的示例恢复两个块,并强制使用在 SCN 100 之前执行的备份进行还原:BLOCKRECOVER DATAFILE 9 BLOCK 13 DATAFILE 2 BLOCK 19 RESTORE UNTIL SCN 100;

• 下面的示例恢复两个块,并强制使用在日志序列 7024 之前执行的备份进行还原:BLOCKRECOVER DATAFILE 9 BLOCK 13 DATAFILE 2 BLOCK 19 RESTORE UNTIL SEQUENCE 7024;

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 239:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-25

版权所有 © 2009,Oracle。保留所有权利。

RMAN BMR 接口

动态视图显示损坏的当前状态。

• V$DATABASE_BLOCK_CORRUPTION 视图显示当前损坏的数据库块的列表。

• V$BACKUP_CORRUPTION 视图显示数据文件备份中损坏的块的列表。

• V$COPY_CORRUPTION 视图显示图像文件副本中损坏的块的列表。

RMAN> BLOCKRECOVER CORRUPTION LIST2> RESTORE UNTIL TIME 'sysdate – 10';

RMAN BMR 接口

通过使用 CORRUPTION LIST子句,可以恢复 V$DATABASE_BLOCK_CORRUPTION中

列出的块。遇到损坏的块时,就会在备份操作期间填写此视图。如果备份遇到的损坏块数

量超过可接受的数量,则根本不会填写此视图。此时应运行 BACKUP…VALIDATE命令,

以将所有损坏块的记录完整地填写到此视图中。

通过块介质恢复(或正常的介质恢复)修复了块之后,直到进行新的备份时才会更新

V$DATABASE_BLOCK_CORRUPTION。UNTIL子句指定仅还原在指定时间、SCN 或日志

序列号之前创建的且用于恢复的备份和副本。RMAN 仍完全恢复到当前时刻。

以下两种类型的损坏会通过 BACKUP与 COPY命令,分别向 V$BACKUP_CORRUPTION和

V$COPY_CORRUPTION添加行:

• 物理损坏(有时称作介质损坏):Oracle 服务器根本无法识别此块:校验和无效,

块的内容全部为零,或者块头和块尾不匹配。默认情况下,物理损坏检查为打开状

态,可以用 NOCHECKSUM选项关闭此功能。

• 逻辑损坏:块的校验和有效,块头和块尾也匹配,但是内容在逻辑上不一致的。

默认情况下,逻辑检查为关闭状态,可以使用 CHECK LOGICAL选项打开此功能。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 240:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-26

版权所有 © 2009,Oracle。保留所有权利。

可以采用的替代操作

• 表:损坏的块中的数据已丢失。

– 删除然后重新创建表,再从导出转储中导入数据。

– 使用 SQL 或 PL/SQL,将数据从该表移到一个新建的表。

• 索引:删除然后重新创建索引。

可以采用的替代操作

如果不打算还原数据文件,也不进行恢复,则可使用以下语句确定具有损坏的块的对象。

可以在错误消息中找到绝对文件号(例如 5)和块号(例如 2),例如:ORA-01578: ORACLE data block corrupted (file #5, block # 2)

运行以下命令:SQL> SELECT segment_name, segment_type, relative_fno

2 FROM dba_extents3 WHERE file_id = 54 AND 2 BETWEEN block_id AND block_id + blocks - 1;

SEGMENT_NAME SEGMENT_TYPE RELATIVE_FNO-------------- --------------- ------------EXAMPLE TABLE PARTITION 5

确定了损坏的对象之后,就可以使用其它选项从损坏的对象中恢复了。对于表,可以使用

导出转储文件。也可以使用 SQL,利用损坏的表生成一个有效的表。这可能需要对业务

数据有一定的了解。如果存在损坏的索引,则最有效的方法可能就是删除并重新创建索引。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 241:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-27

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 确定数据库损坏的原因:

– 硬件

– 软件

• 使用下列功能检测数据库损坏:

– ANALYZE – dbverify – DB_BLOCK_CHECKING – DBMS_REPAIR

• 使用 RMAN 修复数据库损坏

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 242:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 7-28

版权所有 © 2009,Oracle。保留所有权利。

练习概览:执行块介质恢复

本练习包含以下主题:

• 发现损坏

• 确定损坏的位置

• 使用块介质恢复功能,从损坏中恢复

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 243:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

监视和管理内存

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 244:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 描述 SGA 中的内存组件

• 实施自动管理共享内存

• 手动配置 SGA 参数

• 配置自动 PGA 内存管理

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 245:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-3

版权所有 © 2009,Oracle。保留所有权利。

内存管理:概览

DBA 必须将内存管理视为其工作中至关重要的部分,因为:

• 可用内存空间量有限

• 为某些类型的功能分配更多内存可提高整体性能

• 自动优化的内存分配通常是正确的配置,但特定环境

甚至短期情况下可能需要特别注意

内存管理:概览

由于数据库服务器上的可用内存量有限,因此,对于 Oracle 数据库实例,必须注意内存

的分配方式。如果将过多的内存分配给没有此需求的特定区域使用,则很可能导致其它功

能区没有足够的内存,无法以 优方式工作。采用自动确定和维护内存分配的功能,极大

地简化了该项任务。但是,要实现系统内存 佳利用,即使是自动优化的内存也需要进行

监控,有时可能还需要某种程度的手动配置。

除《Oracle Database 10g:数据库管理-课堂练习 I》一课中对内存优化所做的介绍之外,

本课还讲述了自动内存优化功能的工作原理、何时进行手动优化、什么是程序全局区

(PGA) 以及 Oracle 实例中每个内存结构的详细信息。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 246:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-4

版权所有 © 2009,Oracle。保留所有权利。

Oracle 内存结构

SGA

Java 池 数据库缓冲区高速缓存

共享池

重做日志缓冲区

大型池流池

服务器进程 1 PGA 服务器

进程 2 PGA 后台进程 PGA

保留缓冲区高速缓存

循环缓冲区高速缓存

nK 块大小缓冲区高速缓存

Oracle 内存结构

与 Oracle 实例关联的基本内存结构包括:

• 系统全局区 (SGA):由所有服务器进程和后台进程共享

• 程序全局区 (PGA):由每个服务器和后台进程专用,每个进程都有一个 PGA。

系统全局区 (SGA) 是共享内存区,包含实例的数据和控制信息,由以下各项组成:

• 数据库缓冲区高速缓存:用于缓存从磁盘检索到的数据块

• 重做日志缓冲区:用于缓存重做信息,直到其可以写入磁盘为止

• 共享池:用于缓存可在用户间共享的各种结构

• 大型池:用于缓冲大型 I/O 请求的可选区域,以便支持并行查询、共享服务器、

Oracle XA 以及某些类型的备份操作

• Java 池:用于存放Java 虚拟机 (JVM) 中特定于会话的 Java 代码和数据

• 流池:由 Oracle Streams 使用

• 保留缓冲区高速缓存:用于存放会尽可能长地保留在缓冲区高速缓存中的数据

• 循环缓冲区高速缓存:用于存放缓冲区高速缓存中很快过期的数据

• nK 块大小缓冲区高速缓存:用于缓存大小与默认数据库块大小不同的数据块,用来

支持可传输的表空间

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 247:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-5

Oracle 内存结构(续)

数据库缓冲区高速缓存、共享池、大型池、流池和 Java 池的大小可以按照当前需求自动

调整。同样,在不关闭实例的情况下,那些内存缓冲区以及保留缓冲区高速缓存、循环缓

冲区高速缓存和 nK 块大小缓冲区高速缓存也可以进行更改。

预配置的数据库已进行预先优化,内存参数均具有适当的设置。但是,随着数据库使用率

的增长,您可能会发现需要更改内存参数的设置。

Oracle 数据库会提供预警和指导,以标识内存大小问题,从而帮助确定相应的内存参数值。

程序全局区 (PGA) 是一个内存区,其中包含每个服务器进程的数据及控制信息。服务器

进程是处理客户机请求的进程。每个服务器进程都有在服务器进程启动时创建的自己专用

的 PGA。只有该服务器进程才能访问。

所用 PGA 内存量和 PGA 的内容取决于实例是否是在共享服务器模式下配置的。通常,

PGA 包含下列内容:

• 专用 SQL 区:包含绑定信息和运行时内存结构等数据。发出 SQL 语句的每个会话

都有一个专用 SQL 区。

• 会话内存:此处分配的内存用于存放会话变量以及与该会话相关的其它信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 248:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-6

版权所有 © 2009,Oracle。保留所有权利。

缓冲区高速缓存

数据文件

SGA检查点队列

....

DBWn

服务器

DB_BLOCK_SIZE

DB_CACHE_SIZE

DB_RECYCLE_CACHE_SIZE

DB_KEEP_CACHE_SIZE

LRU 列表

....

DB 缓冲区高速缓存

缓冲区高速缓存

通过指定 DB_CACHE_SIZE参数的值,可以配置缓冲区高速缓存。缓冲区高速缓存可存

放数据文件中块大小为 DB_BLOCK_SIZE的数据块的副本。缓冲区高速缓存是 SGA 的一部分;因此所有用户都可以共享这些块。服务器进程将数据文件中的数据读入缓冲区

高速缓存。为了提高性能,服务器进程有时在一个读操作中会读取多个块。然后由 DBWn进程将数据从缓冲区高速缓存写入数据文件。为提高性能,DBWn在一个写操作中会写入

多个块。

在任何给定时间,缓冲区高速缓存都可能会存放一个数据库块的多个副本。虽然该块只存

在一个当前副本,但为了满足查询需要,服务器进程可能需要根据过去的映像信息构造读

一致性副本。这称为读一致性 (CR) 块。

近 少使用 (LRU) 列表可监视缓冲区的使用情况。缓冲区将依据其被引用时间的远近

和引用频率进行排序。因此, 经常使用且 近使用过的缓冲区将列在 近 常使用一端。

传入的块先被复制到 近 少使用一端的缓冲区中,然后该缓冲区将被指定到列表中央,

作为起点。从这个起点开始,缓冲区根据使用情况在列表中上下移动。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 249:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-7

缓冲区高速缓存(续)

缓冲区高速缓存中的缓冲区可以处于以下四种状态之一:

• 已连接:当前正将该块读入高速缓存或正在写入该块。其它会话正等待访问该块。

• 干净的:该缓冲区目前未连接,如果其当前内容(数据块)将不再引用,则可以立

即执行过期处理。这些内容与磁盘保持同步,或者缓冲区包含块的读一致性快照。

• 空闲/未使用:缓冲区因实例刚启动而处于空白状态。此状态与“干净的”状态非常

相似,不同之处在于缓冲区未曾使用过。

• 灰:缓冲区不再处于连接状态,但内容(数据块)已更改,因此必须先通过 DBWn将内容刷新到磁盘,然后才能执行过期处理。

服务器进程使用缓冲区高速缓存中的缓冲区;而 DBWn进程通过将更改的缓冲区写回数据

文件,使高速缓存中的缓冲区变为可用状态。

检查点队列中列出将要写出到磁盘的缓冲区 Oracle 数据库支持同一数据库中有多种块大

小。标准块大小用于 SYSTEM表空间。标准块大小可以通过设置初始化参数

DB_BLOCK_SIZE来指定。其有效值介于 2K 和 32K 之间,默认值为 8K。非标准块大小

的缓冲区的高速缓存大小通过以下参数指定:

• DB_2K_CACHE_SIZE

• DB_4K_CACHE_SIZE

• DB_8K_CACHE_SIZE

• DB_16K_CACHE_SIZE

• DB_32K_CACHE_SIZE

DB_nK_CACHE_SIZE参数不能用于调整标准块大小的高速缓存的大小。如果

DB_BLOCK_SIZE的值为 nK,则设置 DB_nK_CACHE_SIZE是非法的。标准块大小的高

速缓存的大小始终由 DB_CACHE_SIZE的值确定。

由于每个缓冲区高速缓存的大小都有限制,因此,通常并非磁盘上的所有数据都能放在高

速缓存中。当高速缓存写满时,后续高速缓存未命中会导致 Oracle 数据库将高速缓存中

已有的灰数据写入磁盘,以便为新数据腾出空间。(如果缓冲区中没有灰数据,则不需要

写入磁盘即可将新块读入该缓冲区。)以后若对已写入磁盘的任何数据进行访问,则会导

致再次出现高速缓存未命中现象。

数据请求导致高速缓存命中的几率会受到高速缓存大小的影响。高速缓存越大,包含所请

求数据的几率也就越大。因此,增加高速缓存大小会提高引起高速缓存命中的数据请求的

百分比。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 250:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-8

版权所有 © 2009,Oracle。保留所有权利。

使用多个缓冲区池

SGADB 缓冲区高速缓存

保留池

循环池

默认池

使用多个缓冲区池

数据库管理员 (DBA) 可以创建多个缓冲区池来提高数据库缓冲区高速缓存的性能。您可以

根据对象的访问情况将其分配给某个缓冲区池。缓冲区池有三种:

• 保留:此池用于保留内存中可能要重用的对象。将这些对象保留在内存中可减少 I/O 操作。通过使池的大小大于分配给该池的各个段的总大小,可以将缓冲区保留在此池

中。这意味着缓冲区不必执行过期处理。保留池可通过指定 DB_KEEP_CACHE_SIZE参数的值来配置。

• 循环:此池用于内存中重用几率很小的块。循环池的大小要小于分配给该池的各个段

的总大小。这意味着读入该池的块经常需要在缓冲区内执行过期处理。循环池可通过

指定 DB_RECYCLE_CACHE_SIZE参数的值来配置。

• 默认:此池始终存在。它相当于没有保留池和循环池的实例的缓冲区高速缓存,可通

过 DB_CACHE_SIZE参数进行配置。

注:保留池或循环池中的内存不是默认缓冲区池的子集。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 251:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-9

版权所有 © 2009,Oracle。保留所有权利。

使用多个缓冲区池

CREATE INDEX cust_idx …STORAGE (BUFFER_POOL KEEP …);

ALTER TABLE oe.customers STORAGE (BUFFER_POOL RECYCLE);

ALTER INDEX oe.cust_lname_ix STORAGE (BUFFER_POOL KEEP);

使用多个缓冲区池(续)

BUFFER_POOL子句用于定义对象的默认缓冲区池。它是 STORAGE子句的一部分,对

CREATE和 ALTER表、簇和索引语句有效。未明确设置缓冲区池的对象中的块将进入默

认缓冲区池。

其语法为 BUFFER_POOL [KEEP | RECYCLE | DEFAULT]。

使用 ALTER语句更改对象的默认缓冲区池时,已缓存的块会一直保留在其当前缓冲区中,

直到正常缓冲区管理活动将它们清除为止。从磁盘读取的块将被放置在为该段新指定的缓

冲区池中。

由于多个缓冲区池被分配给某一个段,所以有多个段的对象可以将块放置在多个缓冲区池

中。例如,按索引组织的表在索引段和溢出段上可以有多个不同的池。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 252:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-10

版权所有 © 2009,Oracle。保留所有权利。

共享池

库高速缓存

数据字典高速缓存

UGA

共享池共享池

共享池

• 大小通过 SHARED_POOL_SIZE 指定。

• 库高速缓存包含语句文本、已进行语法分析的代码和

执行计划。

• 数据字典高速缓存包含数据字典表中各表、列和权限

的定义。

• 用户全局区 (UGA) 包含会话信息(如果使用 Oracle 共享服务器)。

共享池

可以使用 SHARED_POOL_SIZE初始化参数指定共享池的大小。共享池是用于存储多个

会话共享的信息的内存区。它包含不同类型的数据,如幻灯片中的图所示。

库高速缓存

库高速缓存包含共享 SQL 区和 PL/SQL 区-经过完全语法分析或编译的 PL/SQL 块和

SQL 语句的表示法。

PL/SQL 块包括:

• 过程和函数

• 程序包

• 触发器

• 匿名 PL/SQL 块

数据字典高速缓存

数据字典高速缓存将字典对象的定义存放在内存中。

用户全局区

UGA 包含 Oracle 共享服务器的会话信息。使用共享服务器会话时,如果尚未配置大型池,则 UGA 位于共享池中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 253:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-11

版权所有 © 2009,Oracle。保留所有权利。

大型池

• 可配置为 SGA 中一个单独的内存区

• 大小由 LARGE_POOL_SIZE 参数指定

• 用于在内存中为以下各项存储数据:

– UGA – 备份和还原操作

– 并行查询消息传送

共享池数据库缓冲区

高速缓存重做日志缓冲区

大型池

库高速缓存

字典高速缓存

UGA 备份

会话

并行

大型池

大型池的存在

大型池必须显式配置。大型池的内存不是来自共享池,而是直接来自 SGA,这就增大了

Oracle 服务器在实例启动时需要的共享内存量。

大型池的优势

大型池用于为以下各项分配大量会话内存:

• I/O 服务器进程

• 备份和还原操作

• Oracle 共享服务器进程和 Oracle XA 接口(事务处理与多个数据库交互时使用)

由于从大型池为 Oracle 共享服务器分配会话内存,因此共享池中由于频繁分配和取消

分配大对象而产生的碎片也就很少。将大对象从共享池中分离出来,可增加共享池内存

的使用效率,这意味着,它可以将更多内存用于处理新的请求,以及在需要时用于保留

现有数据。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 254:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-12

版权所有 © 2009,Oracle。保留所有权利。

Java 池

• 可配置为 SGA 中一个单独的内存区

• 大小由 JAVA_POOL_SIZE 参数指定

• 用于将 JVM 中特定于会话的所有 Java 代码和数据

存储在内存中

共享池数据库缓冲区

高速缓存重做日志缓冲区

大型池库高速缓存

字典高速缓存 Java 池

Java 池Java 池是 SGA 中的结构,用于存储 Java 引擎中特定于会话的所有 Java 代码和数据。

共享池

共享池内存由 JVM 内的类加载程序使用。类加载程序对每个加载的类使用大约 8 KB 内存。编译数据库中的 Java 源代码或使用数据库中的 Java 资源对象时,也使用共享池。

创建调用说明时和系统跟踪运行时动态加载的 Java 类时,也会占用共享池内存。

Java 池

Oracle JVM 内存管理器将 Java 池的内存分配给运行时执行期间的所有其它 Java 状态,包

括 Java 方法和类定义的共享内存中表示法,以及调用结束时移植到会话空间的 Java 对象。

Java 池内存的使用方式有多种,具体取决于 Oracle 数据库服务器是否使用共享服务器。

有关 Java 池内存使用的详细信息,请参阅《Oracle Database Java Developer’s Guide》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 255:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-13

版权所有 © 2009,Oracle。保留所有权利。

重做日志缓冲区

SQL> UPDATE employees

2 SET salary=salary*1.1

3 WHERE employee_id=736;

LGWR控制文件

ARCn

归档日志文件

重做日志文件

数据文件

共享池重做日志缓冲区

数据库缓冲区高速缓存

库高速缓存

字典高速缓存

服务器进程

重做日志缓冲区

Oracle 服务器进程将重做条目从用户的内存空间复制到每个 DML 或 DDL 语句的重做日

志缓冲区。重做条目包含重建或重做 DML 和 DDL 操作对数据库的更改所必需的信息。

它们用于数据库恢复,需要占用缓冲区中的连续空间。

重做日志缓冲区是一个循环缓冲区;服务器进程可以用新条目覆盖重做日志缓冲区中已

写入磁盘的条目。LGWR 进程的写速度通常都很快,足以确保缓冲区中始终有存储新条

目的空间。LGWR 进程将重做日志缓冲区写入磁盘上的活动联机重做日志文件(或活动

组成员)中。LGWR 进程将 LGWR 上次写入磁盘以来进入缓冲区的所有重做条目复制到

磁盘。

什么导致 LGWR 执行写操作?

在以下情况下,LGWR 会从重做日志缓冲区中写出重做数据:

• 用户进程提交事务处理时

• 每隔三秒钟,或重做日志缓冲区三分之一的空间已填满,或包含至少 1 MB 数据时

• DBWn进程将修改的缓冲区写入磁盘时(如果相应的重做日志数据尚未写入磁盘)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 256:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-14

版权所有 © 2009,Oracle。保留所有权利。

自动管理共享内存:概览

• 自动根据工作量变化调整

• 最大程度地提高内存利用率

• 有助于消除内存不足的错误

缓冲区高速缓存

大型池

共享池

Java 池

缓冲区高速缓存

大型池

共享池

Java 池

联机用户 批处理作业

流池 流池

示例:

自动管理共享内存:概览

自动管理共享内存 (ASMM) 是 Oracle 数据库中另一个关键的自我管理增强功能。此功能

使 Oracle 数据库实例使用的大多数重要共享内存结构实现了管理自动化,减轻了您手动

配置这些组件的工作量。除了更高效地利用可用内存,进而降低获取额外硬件内存资源所

花费的成本以外,ASMM 功能还引进了更动态、更灵活和适应能力更强的内存管理方案,

极大地简化了 Oracle 数据库的管理。

例如,对于白天运行大型联机事务处理 (OLTP) 作业(要求大型缓冲区高速缓存)和夜晚

运行并行批处理作业(要求大型池的内存空间比较大)的系统,就必须同时配置缓冲区高

速缓存和大型池,以便适应峰值需求。

有了 ASMM 功能,当 OLTP 作业运行时,缓冲区高速缓存会获取大部分内存来保证良好

的 I/O 性能。以后启动数据分析和报告批处理作业时,内存又会自动移植到大型池,供并

行查询操作使用,而不会产生内存溢出错误。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 257:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-15

版权所有 © 2009,Oracle。保留所有权利。

自动管理共享内存的好处

DB_CACHE_SIZESHARED_POOL_SIZELARGE_POOL_SIZEJAVA_POOL_SIZESTREAMS_POOL_SIZE

SGA 总大小

SGA_TARGET

自动管理共享内存的好处

自动管理共享内存功能简化了系统全局区 (SGA) 的配置。过去,需要手动指定分配给数

据库缓冲区高速缓存、共享池、Java 池、大型池和流池的内存量。如何 优地配置这些

组件的大小经常是件极富挑战的事情。内存量不够大会导致性能较差和内存不足错误

(ORA-4031),而内存量过大又会浪费内存。

有了这一功能,您就能指定所有 SGA 组件要使用的总内存量。Oracle 数据库会根据工作

量需求,定期在本幻灯片介绍的各个组件之间重新分配内存。

在早期版本中,您不能确切控制 SGA 的总大小,因为内存分配的对象是固定 SGA 和超过用户指定的 SGA 参数总大小的其它内部元数据分配。此额外内存通常介于 10 MB 和 20 MB 之间。

SGA 大小初始化参数 (SGA_TARGET) 包含 SGA 中的所有内存,其中包括自动调整大小的

组件、手动调整大小的组件以及启动期间的所有内部分配。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 258:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-16

版权所有 © 2009,Oracle。保留所有权利。

ASMM 的工作原理

• ASMM 以 MMAN 在后台捕获的工作量信息为基础。

• MMAN 使用内存指导。

• 将内存移到最迫切需要的地方。

• 如果使用 SPFILE(推荐):

– 在关闭时保存组件大小。

– 保存的值用于引导程序组件大小。

– 无需再确定最佳值。

ASMM 的工作原理

自动管理共享内存功能使用名为内存管理器 (MMAN) 的后台进程。MMAN充当 SGA 内存

中介,协调内存组件的大小。SGA 内存中介会不断跟踪组件的大小和待处理的大小调整

操作。

SGA 内存中介会观察系统和工作量,以便确定理想的内存分配方案。SGA 内存中介永不

满足于现有方案,它每隔几分钟就执行一次检查,以便使内存始终用在需要的地方。如果

没有自动共享内存管理功能,必须分别预计各组件在峰值时的内存需求,然后对其内存

大小进行调整。

在工作量信息基础上,自动共享内存管理功能会:

• 定期在后台捕获统计信息

• 使用内存指导

• 进行假设分析,确定 佳内存分配方案

• 将内存移到 迫切需要的地方

• 如果使用了 SPFILE,则在关闭时保存组件大小(这些大小可以在 后一次关闭前

重新起用)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 259:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-17

版权所有 © 2009,Oracle。保留所有权利。

使用 Database Control 配置 ASMM

使用 Database Control 配置 ASMM 要使用 Database Control 配置自动管理共享内存功能,请执行以下步骤:

1. 单击“Administration(管理)”选项卡。

2. 在“Instance(实例)”标题下,选择“Memory Parameters(内存参数)”。

3. 单击“SGA”选项卡。

4. 单击自动管理共享内存功能的“Enable(启用)”按钮,然后输入 SGA 总大小 (MB)。

使用 Database Control 启用 ASMM 时,会自动发出一些语句来更改自动优化的参数。所

有这些参数(DB_CACHE_SIZE除外)都设置为零,表示它们没有 小大小。请将

DB_CACHE_SIZE设置为 4 MB,以便定义一个可在内存中驻留足够多 SYSTEM表空间的

小大小。如果不进行这些更改,则先前设置的值将被理解为(相对较高的) 小大小,

这很可能给内存大小调整算法增加不必要的负担。

注:单击“Enable(启用)”时,可以输入 SGA_TARGET的值。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 260:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-18

版权所有 © 2009,Oracle。保留所有权利。

手动配置 ASMM

要使某些内存组件具有最小大小,应手动配置这些组件大小:

• 如果自动计算得出的大小因某种原因不能满足您的需要

• 如果所需内存中存在 ASMM 未检测到的短期峰值或谷值

• 如果只想确保特定组件的最小内存量

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 261:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-19

版权所有 © 2009,Oracle。保留所有权利。

手动配置 ASMM

SGA_TARGET = 8G

SGA 总大小 = 8 GB

Java 池

数据库缓冲区高速缓存

重做日志缓冲区

共享池

大型池固定 SGA

STATISTICS_LEVEL = TYPICAL

自动优化 自动优化

自动优化自动优化

流池

保留缓冲区池

自动优化

手动配置 ASMM 使用 SGA_TARGET初始化参数可手动配置自动管理共享内存功能。默认情况下,

SGA_TARGET设置为 0,这表示禁用自动管理共享内存功能,必须手动配置数据库内存。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 262:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-20

手动配置 ASMM(续)

如果将 SGA_TARGET指定为非零值,则下列五个内存池的大小会自动调整:数据库缓冲

区高速缓存(默认池)、共享池、大型池、流池和 Java 池。

用于配置这些内存池的参数(例如 SHARED_POOL_SIZE)称为自动优化的参数。

下列缓冲区被称为手动调整大小的组件:

• 日志缓冲区

• 其它缓冲区高速缓存(KEEP/RECYCLE,非默认块大小)

• 固定 SGA 和其它内部分配

注:自动管理共享内存功能要求将 STATISTICS_LEVEL设置为 TYPICAL或 ALL。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 263:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-21

版权所有 © 2009,Oracle。保留所有权利。

自动优化的 SGA 参数的行为

• 未设置 SGA_TARGET 或将其设置为零时:

– 自动优化的参数行为正常

– SHARED_POOL_SIZE可能需要根据早期数据库版本中

使用的设置增加

• SGA_TARGET 设置为非零值时:

– 自动优化的参数的默认值为零

– 指定的值用作下限大小

SELECT SUM(bytes)/1024/1024 size_mb FROM v$sgastat WHERE pool = 'shared pool';

SELECT component, current_size/1024/1024 size_mbFROM v$sga_dynamic_components;

自动优化的 SGA 参数的行为

未设置 SGA_TARGET或将其设置为零时,自动优化的 SGA 参数的行为正常:它们指定相

应组件的实际大小。

禁用了自动共享内存管理功能时,仍可以指定自动优化的 SGA 参数的值,但这些值具有

不同的含义。如果将任何自动优化的参数设置为非零值,则自动优化算法会将指定的值用

作下限。例如,如果将 SGA_TARGET设置为 8 GB,SHARED_POOL_SIZE设置为 1 GB,则自动管理共享内存算法不会将共享池收缩到 1 GB 以下。使用幻灯片中给出的第二个查

询可确定 SGA 中自动优化的组件的实际大小。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 264:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-22

版权所有 © 2009,Oracle。保留所有权利。

手动优化的 SGA 参数的行为

• 有些组件不能自动优化。

– KEEP(保留)和 RECYCLE(循环)缓冲区高速缓存

– 具备多个块大小的高速缓存

• 这些组件必须使用数据库参数手动配置。

• 这些组件使用的内存会减少可用于自动优化 SGA 的内存量。

手动优化的 SGA 参数的行为

手动优化的 SGA 参数有:

• DB_KEEP_CACHE_SIZE

• DB_RECYCLE_CACHE_SIZE

• DB_nK_CACHE_SIZE (n = 2, 4, 8, 16, 32)

如果要使用不自动优化的内存组件,则必须配置相应的参数。为这些参数指定的值会精确

地控制相应内存组件的大小。

设置了 SGA_TARGET时,从 SGA_TARGET值中减去手动优化的 SGA 大小参数的总大小,

余额将提供给自动调整的 SGA 组件。

例如,如果 SGA_TARGET设置为 8 GB,DB_RECYCLE_CACHE_SIZE设置为 1 GB,则

五个自动优化的组件的总大小(共享池、Java 池、默认缓冲区高速缓存、流池和大小型池)

限制为 7 GB。这 7 GB 大小还包括固定 SGA 和日志缓冲区,只有为这两者分配了内存后,

其余的内存才在这些自动优化的组件之间进行分配。循环高速缓存的大小为 1 GB(由参

数指定)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 265:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-23

版权所有 © 2009,Oracle。保留所有权利。

使用 V$PARAMETER视图

SGA_TARGET = 8G

SELECT name, value, isdefaultFROM v$parameterWHERE name LIKE '%size';

DB_CACHE_SIZE = 0JAVA_POOL_SIZE = 0LARGE_POOL_SIZE = 0SHARED_POOL_SIZE = 0STREAMS_POOL_SIZE = 0

使用 V$PARAMETER 视图

如果为 SGA_TARGET指定非零值,且未指定自动优化的 SGA 参数的值,则

V$PARAMETER视图中自动优化的 SGA 参数的值为 0,ISDEFAULT列的值为 TRUE。

如果已为任何自动优化的 SGA 参数指定了值,则查询 V$PARAMETER时显示的值是您为

该参数指定的值。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 266:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-24

版权所有 © 2009,Oracle。保留所有权利。

修改 SGA_TARGET参数

• SGA_TARGET 初始化参数:

– 是动态参数

– 最多可增大到 SGA_MAX_SIZE

– 可以减小,直到所有组件都达到其下限大小为止

• 更改 SGA_TARGET 的值只会影响自动调整大小的组件。

修改 SGA_TARGET 参数

SGA_TARGET是一个动态参数,可以通过 Database Control 或使用 ALTER SYSTEM命令

更改。

SGA_MAX_SIZE是可分配给 SGA 的 大内存量。更改该值后,必须重新启动数据库才能

生效。SGA_TARGET 多可增大到 SGA_MAX_SIZE值。它可以减小,直到任一自动优化

的组件达到其 小大小:用户指定的 小值或内部确定的 小值。

• 如果增大 SGA_TARGET的值,则会根据自动优化策略在自动优化的组件之间分配额

外的内存。

• 如果减小 SGA_TARGET的值,则这部分内存将按照自动优化策略从一个或多个自动

优化的组件处提取。

假定 SGA_MAX_SIZE设置为 10 GB,SGA_TARGET设置为 8 GB。如果

DB_KEEP_CACHE_SIZE设置为 1 GB,且您将 SGA_TARGET增大为 9 GB,则这额外的

1 GB 只会在 SGA_TARGET控制的组件之间进行分配。DB_KEEP_CACHE_SIZE的值不受

影响。同样,如果将 SGA_TARGET减小到 7 GB,则这 1 GB 也只会从 SGA_TARGET控制

的那些组件中提取。这种减少并不会影响手动控制的参数(如 DB_KEEP_CACHE_SIZE)的设置。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 267:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-25

版权所有 © 2009,Oracle。保留所有权利。

禁用 ASMM

• 将 SGA_TARGET 设置为零可禁用自动优化功能。

• 自动优化的参数设置为其当前大小。

• SGA 大小总体上不受影响。

SGA 大小 = 8GB

参数:

sga_target = 8Gshared_pool_size = 1G

参数:

sga_target = 0db_cache_size = 5Gshared_pool_size = 2Glarge_pool_size = 512Mjava_pool_size = 256Mstreams_pool_size = 256M

SGA 大小 = 8GB

原始值

禁用 ASMM 通过将 SGA_TARGET设置为零,可以动态选择禁用自动管理共享内存功能。在此情况下,

所有自动优化的参数的值都将设置为其对应组件的当前大小;即使用户早先为自动优化的

参数指定了其它非零值,也是如此。

在本幻灯片的示例中,SGA_TARGET的值为 8 GB,SHARED_POOL_SIZE的值为 1 GB。如果系统将共享池组件的大小内部调整为 2 GB,则将 SGA_TARGET设置为零会导致

SHARED_POOL_SIZE被设置为 2 GB,从而覆盖用户定义的原有值。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 268:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-26

版权所有 © 2009,Oracle。保留所有权利。

手动调整动态 SGA 参数的大小

• 对于自动优化的参数,手动调整大小会:

– 导致组件大小立即调整(如果新值大于当前值)

– 更改下限大小(如果新值小于当前大小)

• 调整手动优化的参数的大小只会影响 SGA 的可调部分。

手动调整动态 SGA 参数的大小

调整了自动优化的参数的大小并设置了 SGA_TARGET值后,只有当新值大于组件的当前

大小时,这种调整才会导致组件的大小立即发生更改。例如,如果将 SGA_TARGET设置

为 8 GB,将 SHARED_POOL_SIZE设置为 2 GB,可确保共享池始终不小于 2 GB,以满

足必要的内存分配需求。之后,即使将 SHARED_POOL_SIZE值调整为 1 GB,也不会对

共享池的大小产生立即影响。只会使自动内存优化算法以后可以将共享池大小减少到

1 GB(如果需要)。相反,如果共享池的大小 初设置为 1 GB,那么将

SHARED_POOL_SIZE值调整为 2 GB 时,共享池组件的大小会立即增加到 2 GB。此大小

调整操作中使用的内存从一个或多个自动优化的组件中提取,手动优化的组件的大小不受

影响。

手动调整大小的组件的参数也可以动态变更,但不同之处在于,参数的值会立即指定相应

组件的精确大小。因此,如果手动调整的组件的大小增大,则增加的那部分内存将从一个

或多个自动调整大小的组件处提取。如果手动调整的组件的大小减小,则释放的内存将会

提供给自动调整大小的组件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 269:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-27

版权所有 © 2009,Oracle。保留所有权利。

程序全局区 (PGA)

PGA

服务器进程

PGA

共享池或

大型池PGA

专用连接

共享服务器

PGA

共享服务器连接

专用SQL 区

游标和SQL 区 会话内存 工作区

程序全局区 (PGA) 程序全局区 (PGA) 是包含某服务器进程的数据及控制信息的内存区。这是 Oracle 服务器

在服务器进程启动时创建的非共享内存,只有该服务器进程才能访问。由关联到某个

Oracle 实例的所有服务器进程分配的 PGA 总内存,也称为该实例分配的聚集 PGA 内存。

使用共享服务器时,部分 PGA 可位于 SGA 中。

PGA 内存通常包含以下各项:

专用 SQL 区

专用 SQL 区包含绑定信息和运行时内存结构等数据。这些信息是每个会话的 SQL 语句调

用所特有的;在其它方面,绑定变量有不同的值,游标的状态也不同。发出 SQL 语句的

每个会话都有一个专用 SQL 区。提交同一 SQL 语句的每个用户也都有其自己的专用 SQL 区,该专用 SQL 区使用一个共享 SQL 区。这样,许多专用 SQL 区可与同一个共享 SQL 区关联。专用 SQL 区的位置取决于为会话建立的连接类型。如果会话是通过专用服务器

连接的,则专用 SQL 区位于该服务器进程的 PGA 中。不过,如果会话是通过共享服务器

连接的,则部分专用 SQL 区将保留在 SGA 中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 270:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-28

程序全局区(续)

游标和 SQL 区

Oracle 预编译器程序或 OCI 程序的应用程序开发人员可以显式打开特定专用 SQL 区的游

标或句柄,并在该程序的整个执行过程中将它们用作命名资源。数据库为某些 SQL 语句

隐式发出的递归游标也使用共享 SQL 区。

工作区

对于复杂查询(例如,决策支持查询),会将大部分 PGA 供内存密集型运算符分配的

工作区专用,例如:

• 基于排序的运算符(如 ORDER BY、GROUP BY、ROLLUP)和窗口函数

• 散列联接

• 位图合并

• 位图创建

• 批量装载操作使用的写缓冲区

排序运算符使用工作区(排序区),对一组行执行内存中排序。与此类似,散列联接运算

符使用工作区(散列区),根据其左侧输入内容生成散列表。

工作区的大小是可以控制和优化的。通常,较大的工作区可以显著改进特定运算符的性能,

不过代价是消耗较多的内存。

会话内存

会话内存是用于存放会话的变量(登录信息)以及与会话相关的其它信息的内存。对于共

享服务器,会话内存是共享的,而不是专用的。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 271:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-29

版权所有 © 2009,Oracle。保留所有权利。

自动 PGA 内存管理

• 根据 PGA_AGGREGATE_TARGET 参数,动态调整

专用于工作区的 PGA 内存量

• 有助于最大限度地提高所有内存密集型 SQL 操作的

性能

• 默认情况下是启用的

自动 PGA 内存管理

理想情况下,工作区的大小只要能容纳其相关 SQL 运算符分配的输入数据和辅助内存结

构就已足够。这一大小称为工作区的 佳大小。工作区大小小于 佳大小时,响应时间就

会增加,因为要对部分输入数据执行额外的传输操作。

自动 PGA 内存管理功能简化并改进了 PGA 内存的分配方式。默认情况下,PGA 内存管

理功能是启用的。在此模式下,Oracle 数据库以 SGA 内存大小的 20% 为基准,动态调整

专用于工作区的那部分 PGA 内存的大小。 小值为 10 MB。

在自动 PGA 内存管理模式下运行时,所有会话的工作区大小的调整都是自动的,

在该模式下运行的所有会话都会忽略 *_AREA_SIZE参数(例如 SORT_AREA_SIZE)。

在任何给定时间,可用于实例中各活动工作区的 PGA 内存总量自动从

PGA_AGGREGATE_TARGET初始化参数派生。此内存量设置为

PGA_AGGREGATE_TARGET值减去系统其它组件分配的 PGA 内存量(例如,会话分配的

PGA 内存)。由此得到的 PGA 内存随后按照各活动工作区的特定内存需求分配给相应的

工作区。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 272:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-30

版权所有 © 2009,Oracle。保留所有权利。

PGA 管理资源

• 管理 PGA_AGGREGATE_TARGET 初始化参数的统计

信息,如 PGA 高速缓存命中百分比

• 用于监视 PGA 工作区的视图包括:

– v$sql_workarea_histogram

– v$pgastat

– v$sql_workarea_active

– v$sql_workarea

– v$tempseg_usage

• 用于调整 PGA 工作区大小的视图有:

– v$pga_target_advice

– v$pga_target_advice_histogram

PGA 管理资源

配置新实例时,难以确切知道 PGA_AGGREGATE_TARGET的适当设置。该设置可以通过

以下三个阶段确定:

1. 根据惯例,初步估算 PGA_AGGREGATE_TARGET。默认情况下,Oracle DB 将其设

置为 SGA 大小的 20%。不过,对于大型 DSS 系统而言,此初始设置可能太低。

2. 在实例上运行典型工作量,使用 Oracle 收集到的 PGA 统计信息监视性能,查看

大 PGA 大小的配置是过低还是过高。

3. 使用 Oracle PGA 建议统计信息来优化 PGA_AGGREGATE_TARGET。

为了能够向后兼容,可以通过将 PGA_AGGREGATE_TARGET初始化参数值设置为 0,来禁用自动 PGA 内存管理。禁用了自动 PGA 内存管理功能后,可以使用关联的

*_AREA_SIZE参数调整工作区的 大大小。以下是这些参数的示例:

• SORT_AREA_SIZE

• HASH_AREA_SIZE

• BITMAP_MERGE_AREA_SIZE

• CREATE_BITMAP_AREA_SIZE

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 273:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-31

版权所有 © 2009,Oracle。保留所有权利。

使用内存指导调整 SGA 的大小

使用内存指导调整 SGA 的大小(续)

使用内存指导可以优化内存结构的大小。如果启用了自动管理共享内存功能,则可以使

用该功能优化 SGA 的总大小。如果禁用了 ASMM,则可以使用此指导来优化 SGA 的不

同组件。

内存指导包括三个指导,可以在以下 SGA 内存结构方面向用户提供建议:

• 共享池

• 缓冲区高速缓存

可以通过执行以下步骤调用内存指导:

1. 在“Database(数据库)”主页中,单击“Related Links(相关链接)”区域的

“Advisor Central(指导中心)”。

2. 在“Advisor Central(指导中心)”页中,单击“Memory Advisor(内存指导)”。

此时将显示“Memory Parameters(内存参数)”页。该页对 SGA 的内存使用情况

做了详细说明。

3. 单击“Shared Pool(共享池)”值或“Buffer Cache(缓冲区高速缓存)”值旁边

的“Advice(建议)”,以调用相应的指导。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 274:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-32

版权所有 © 2009,Oracle。保留所有权利。

使用内存指导调整 PGA 的大小

使用内存指导调整 PGA 的大小

可使用内存指导获取有关 PGA 大小的建议。为此,请单击“PGA”选项卡,然后单击

“Advice(建议)”。本例的图显示,将“Aggregate PGA Target(聚集 PGA 目标)”值

由 80 MB 提高到大约 140 MB 后,可将高速缓存命中百分比由 60% 提高到近 100%。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 275:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-33

版权所有 © 2009,Oracle。保留所有权利。

有效使用内存:准则

• 尽量使 SGA 适合物理内存。

• 优化以实现高缓冲区高速缓存命中率,但要注意以下

几点:

– 即使有效且必需的全表扫描也会降低命中率。

– 可能存在因不必要地重复读取同一块而出现命中率虚升

的情况。

• 使用内存指导。

有效使用内存:准则

如果可能, 好使 SGA 适合物理内存,以便提供 快的访问速度。即使操作系统可能提

供额外的虚拟内存,该内存也经常会因其性质而换出到磁盘。在某些平台上,可以使用

LOCK_SGA初始化参数将 SGA 锁定到物理内存中。

执行 SQL 语句时,将请求 Oracle 数据块进行读、写或读写操作。这称为逻辑 I/O。请求

某个块时,Oracle 数据库会先查看它是否已在内存中。如果不在内存中,则从磁盘中读取,

这称为物理 I/O。在内存中发现块的次数与逻辑 I/O 的总次数之比,称为缓冲区高速缓存

命中率。通常,命中率越高越好,因为这意味着在内存中找到了更多的块,而不必进行磁

盘 I/O 操作。

缓冲区高速缓存命中率高于 99% 并非难得的事情。但这并不始终意味着系统得到了很好

的优化。如果某个查询的执行频率超过了必要的次数,而且它不断地反复请求相同的块,

则命中率就会提高。如果这是个低效或不必要的查询,则会虚升命中率。这是因为它首先

不应以这种方式执行或不应如此频繁地执行。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 276:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-34

有效使用内存:准则(续)

此外,考虑到大型全表扫描(完全读取整个表)会降低此命中率,因为可能要从磁盘中读

取整个表;此类扫描可能不会利用某些已在缓冲区高速缓存中的块。所以,如果应用程序

中有一些必要的大型全表扫描,则即使是优化良好的数据库,其数据库缓冲区高速缓存命

中率也可能始终很低。

请使用 Enterprise Manager 的内存指导。这可以帮助您基于特定数据库中的活动调整 SGA 的大小。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 277:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-35

版权所有 © 2009,Oracle。保留所有权利。

库高速缓存的内存优化准则

• 为开发人员制定格式使用约定,以便 SQL 语句符合

高速缓存的要求。

• 使用绑定变量。

• 消除不必要的重复 SQL。• 考虑使用 CURSOR_SHARING。

• 尽可能使用 PL/SQL。• 缓存序列号。

• 连接库高速缓存中的对象。

库高速缓存的内存优化准则

库高速缓存是共享池的一部分,它是 Oracle 数据库用于存储所有执行的 SQL、PL/SQL 和Java 代码的地方。这些代码进入此中央位置的目的是为了能够让所有用户共享。共享的好

处在于,所有用户都能利用 SQL 代为执行的工作。因此,对于每条语句,不论它执行多

少次,也不管有多少用户执行它,对语句进行语法分析和确定数据访问路径(也称为“解

释计划”)之类的任务都只执行一次。如果库高速缓存过小,则没有空间容纳所有要执行

的语句,因此对于某些语句,也就无法利用此工作共享的优势。如果库高速缓存过大,又

会给系统带来管理其内容的负担。

因为库高速缓存中 终可能会填满一些看似不同、实际却是同一语句副本的语句。导致此

问题的一个常见原因是每条语句的格式稍有不同。如果字符串不完全比较就没有匹配项。

另一个原因是使用了文字而不是绑定变量。当两条语句之间的唯一差别是文字值时,如果

用绑定变量替换这些文字,则大多数情况下,这些语句的每次执行和整个系统都将受益。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 278:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-36

库高速缓存的内存优化准则(续)

可以设置 CURSOR_SHARING初始化参数,指示系统在语句的其它部分都匹配时自动用

绑定变量替换文字。通常,在适当时使用绑定变量更正应用程序之前,您应将此设置作为

临时手段。与所有这些准则一样,使用此变量也可能有其它负面影响,这一点您应该调查

清楚。

避免从应用程序中的几个不同位置发出同一 SQL 语句,而是使用 PL/SQL 将一条或多条

语句放置在一个存储过程中。以后只需调用该存储过程。这样可保证该 SQL 语句是共享

的,因为它只位于一个地方。同样,该 SQL 语句也已经过语法分析并有了解释计划,因

为它位于一个已编译的存储过程中。

序列号可以缓存。因此,如果某些序列的活动频繁,请为其设置一个合适的高速缓存大小,

然后利用它。

可以使用 DBMS_SHARED_POOL程序包来连接库高速缓存中的对象。这样可减少重新加

载和重新编译对象的几率。有关如何使用该程序包的详细信息,请参阅《PL/SQL 程序包

和类型参考》一文。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 279:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-37

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 描述 SGA 中的内存组件

• 实施自动管理共享内存

• 手动配置 SGA 参数

• 使用自动 PGA 内存管理

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 280:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 8-38

版权所有 © 2009,Oracle。保留所有权利。

练习概览:使用 ASMM 纠正内存分配问题

本练习包含以下主题:

• 诊断内存分配问题

• 启用自动共享内存管理功能

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 281:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

自动性能管理

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 282:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 诊断数据库的性能问题

• 配置自动工作量资料档案库

• 访问数据库指导

• 使用 SQL 访问指导改进数据库性能

• 有效地使用异步 COMMIT

优化

统计信息

SGA 附加

AWR指导

异步 Commit

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 283:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-3

版权所有 © 2009,Oracle。保留所有权利。

优化活动

性能管理中的三项活动为:

• 性能规划

• 实例优化

• SQL 优化

优化活动

优化活动包括三个方面,即性能规划、实例优化和 SQL 优化。

• 性能规划是建立环境的过程,包括硬件、软件、操作系统、网络基础结构等等。

• 实例优化是对 Oracle 数据库参数和操作系统参数进行实际调整,从而使 Oracle 数据

库获得更好的性能。

• SQL 优化涉及到使应用程序提交有效的 SQL。这需要考虑到应用程序范围的优化,

以及特定于语句的优化。在系统范围内,需要确保应用程序的各个部分都能够利用

彼此的工作,并且不会产生不必要的资源竞争。在本课中,您将学习用于优化特定

SQL 语句的常见操作。

注:有关性能优化的详细信息,请参阅《Oracle Database Performance Tuning Guide》。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 284:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-4

版权所有 © 2009,Oracle。保留所有权利。

性能规划

• 投资选项

• 系统体系结构

• 可伸缩性

• 应用程序设计原理

• 工作量测试、建模和实施

• 部署新的应用程序

性能规划

性能规划包括许多方面。必须考虑到系统体系结构中的投资:满足需求所需的硬件和软件

基础结构。硬盘驱动器和控制器的数量会影响数据的访问速度。在多个设备上条带化数据

是一种常用的提高性能的方法。当然,这需要通过分析来确定适合于给定环境、应用程序

和性能需求的值。

应用程序的伸缩能力也是非常重要的。这意味着能够处理越来越多的用户、客户机、会话

或事务处理,而不会对系统整体性能产生大的影响。限制可伸缩性的 明显因素是用户间

的串行化操作。如果所有的用户同时都必须经过同一路径,则在添加更多用户时,毫无疑

问地会对性能造成负面影响。这是因为会有越来越多的用户排队等待通过该路径。编写的

SQL 语句质量差也会影响可伸缩性。这会使许多用户都在等待低效 SQL 的完成;每个用

户都在与其他用户竞争大量资源,但实际上他们并不需要这些资源。

应用程序的设计原理会对性能产生重大影响。设计的简洁性、视图和索引的使用以及数据

建模都是非常重要的。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 285:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-5

性能规划(续)

任何应用程序都必须在典型的生产工作量下进行测试。这需要对数据库大小和工作量

进行估计,并生成测试数据和系统负载。

部署新的应用程序(或应用程序的新版本)时必须考虑到性能。有时,需要在推广新

应用程序的过程中制定设计决策使其与旧系统保持兼容。新的数据库应该根据生产环境,

为其承载的应用程序专门进行配置。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 286:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-6

版权所有 © 2009,Oracle。保留所有权利。

实例优化

• 有定义合理的目标。

• 将内存分配至数据库结构。

• 考虑数据库中各部分的 I/O 要求。

• 优化操作系统以获得最佳数据库性能。

实例优化

任何优化活动在开始时,都必须有具体的目标。例如像“每分钟处理 500 个销售事务”

这样的目标要比“使处理速度尽可能地快,并且能知道它达到需求的时间”这类目标更

容易实现。

必须为应用程序分配合适的 Oracle 数据库内存,以获得 佳性能。可以使用的内存是有

限的。为 Oracle 数据库的某些部分分配的内存太少会导致后台操作的效率很低。如果不

进行分析,您甚至可能都意识不到这个问题。

磁盘 I/O 通常会成为数据库的瓶颈,因此,任何数据库实施的开始阶段都需要特别注意。

操作系统的配置也会影响 Oracle 数据库的性能。有关详细信息,请参阅相应平台的

《Oracle 数据库安装指南》。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 287:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-7

版权所有 © 2009,Oracle。保留所有权利。

性能优化方法

优化步骤:

• 从上至下进行优化。即:

– 在优化应用程序代码之前先优化设计

– 在优化实例之前先优化代码

• 优化那些潜在好处最大的方面。

– 确定最长的等待时间

– 确定最大的服务次数

• 达到目标时停止优化。

性能优化方法

Oracle 根据多年的经验开发了一种优化方法。基本步骤如下:

• 在优化实例之前检查 OS 统计信息以及一般的计算机运行状况,以确保问题出现在

数据库中。

• 从上至下进行优化。从优化设计开始,然后优化应用程序,再优化实例。例如,

在优化磁盘上的表空间布局之前,请尽量避免造成 I/O 争用的全表扫描。

• 优化那些潜在好处 大的方面。本课程中介绍的优化方法非常简单。确定 大的瓶

颈并对其进行优化。重复此步骤。各种优化工具都有一些方法来确定占用时间 多

的 SQL 语句、资源争用或服务。Oracle 数据库提供时间模型和度量来自动确定瓶颈。

• 达到目标时停止优化。此步骤隐含的前提是您已设置了优化目标。

这是优化数据库实例的常用方法,可能需要进行多个来回。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 288:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-8

版权所有 © 2009,Oracle。保留所有权利。

收集统计信息

• 性能优化取决于准确统计信息的收集。

• 有不同类型的统计信息:

– 优化程序统计信息

– 系统统计信息

• 有不同的统计信息收集方法:

– 使用 GATHER_STATS_JOB自动收集

– 使用 DBMS_STATS程序包手动收集

– 通过设置数据库初始化参数进行收集

– 通过从另一个数据库导入统计信息进行收集

收集统计信息

优化程序统计信息是描述有关数据库和数据库中对象的详细信息的数据集。查询优化程序

使用这些统计信息,为每个 SQL 语句选择 佳的执行计划。

系统统计信息为查询优化程序描述系统的硬件特征,例如 I/O 及 CPU 性能和利用率。

选择执行计划时,优化程序会估计每个查询所需的 I/O 和 CPU 资源。通过系统统计信息,

查询优化程序可以更加准确地估计 I/O 和 CPU 开销,从而选择更好的执行计划。系统统

计信息是使用 DBMS_STATS.GATHER_SYSTEM_STATS过程收集的。搜集系统统计信

息时,Oracle 数据库对指定时段内的系统活动进行分析。系统统计信息不是自动搜集的。

Oracle Corporation 建议您使用 DBMS_STATS程序包来搜集系统统计信息。

建议您允许 Oracle 数据库自动搜集统计信息,以此来搜集优化程序统计信息。

GATHER_STATS_JOB作业是在创建数据库时自动创建的,并由调度程序进行管理。

它会搜集数据库中优化程序统计信息缺失或已过时的所有对象的统计信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 289:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-9

统计信息收集(续)

如果选择不使用统计信息自动搜集功能,则必须手动收集所有方案中的统计信息,包括系

统方案。如果数据库中的数据定期发生更改,则您也需要定期搜集统计信息,以确保统计

信息能够准确地反映数据库对象的特征。要手动收集统计信息,请使用 DBMS_STATS程

序包。此 PL/SQL 程序包还可用于修改、查看、导出、导入和删除统计信息。

还可以通过数据库初始化参数来管理优化程序和系统统计信息收集。例如:

• OPTIMIZER_DYNAMIC_SAMPLING参数控制优化程序执行的动态采样的级别。当

表和相关索引的统计信息不可用或因为过于陈旧而不可信时,可以使用动态采样来

进行估计。当收集到的统计信息无法使用或可能会导致重大估计错误时,动态采样

也可以估计单表的谓词选择性。

• STATISTICS_LEVEL参数控制数据库中所有主要统计信息的收集或指导,并设置

数据库的统计信息收集级别。此参数的值有 BASIC、TYPICAL和 ALL。

• 除了已提供的等待计数之外,TIMED_STATISTICS参数还可以指示 Oracle 服务器

搜集事件的等待时间。在将事件的总等待时间与两次性能数据收集之间所用的总时

间进行比较时,此数据非常有用。

• TIMED_OS_STATISTICS参数指定时间间隔(秒),当客户机向服务器发送请求时

或请求完成时,Oracle 将按照该时间间隔收集操作系统统计信息。

如果 STATISTICS_LEVEL初始化参数设置为 TYPICAL或 ALL,则会自动收集数据库的

计时系统统计信息。如果 STATISTICS_LEVEL设置为 BASIC,则必须将

TIMED_STATISTICS设置为 TRUE,以启用计时统计信息的收集。请注意,将

STATISTICS_LEVEL设置为 BASIC时将禁用许多自动功能,因此不建议使用该项。

如果明确设置了 TIMED_STATISTICS或 TIMED_OS_STATISTICS,则无论是在初始化

参数文件中还是使用 ALTER SYSTEM或 ALTER SESSION命令,该明确设置的值都将

覆盖从 STATISTICS_LEVEL派生得到的值。

通过查询 V$STATISTICS_LEVEL视图可以确定受 STATISTICAL_LEVEL参数影响的

参数。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 290:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-10

版权所有 © 2009,Oracle。保留所有权利。

Oracle 等待事件

• 等待事件集合提供了由于各种原因而不得不等待

或必须等待的会话或进程的有关信息。

• V$EVENT_NAME 视图中列出了这些事件。

优化

> 统计信息

SGA 附加

AWR指导

异步 Commit

Oracle 等待事件

等待事件是按服务器进程或线程递增的统计信息,指示必须等待事件完成之后才能继续

处理。等待事件数据显示了可能会影响性能的问题的各种症状,如闩锁争用、缓冲区争用

和 I/O 争用。记住,这些只是问题的症状,而不是实际的原因。

等待事件按类别进行分组。等待事件的类别包括:管理、应用程序、簇、提交、并发、

配置、空闲、网络、其他、调度程序、系统 I/O 和用户 I/O。

Oracle 数据库中有 800 多种等待事件,包括空闲缓冲区等待、闩锁释放、缓冲区忙等待、

数据库文件顺序读取和数据库文件分散读取。

使用 EM,可以通过打开“Performance(性能)”页并查看“Sessions: Waiting and Working(会话:等待和运行)”图(如幻灯片中所示)来查看等待事件。通过单击特定

等待事件类别的链接,可以使用“Top Sessions(顶层会话)”界面追溯至特定的等待事

件。在本例中, 重要的等待事件是文件读取。

有关 常见 Oracle 事件的列表,请参阅《Oracle Database Reference 10g》一文。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 291:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-11

版权所有 © 2009,Oracle。保留所有权利。

系统统计信息

V$SGASTAT• pool• name• bytes

V$SYSSTAT• statistic#• name• class• value• stat_id

V$SYSTEM_EVENT• event• total_waits• total_timeouts• time_waited• average_wait• time_waited_micro

V$EVENT_NAME• event_number• event_id• name• parameter1• parameter2• parameter3• wait_class

V$SYSTEM_WAIT_CLASS• wait_class_id• wait_class#• wait_class• total_waits• time_waited

系统统计信息

要有效地诊断性能问题,必须有统计信息可供使用。Oracle 数据库为系统、会话和单个

SQL 语句生成许多类型的累积统计信息。Oracle 数据库还跟踪段和服务的累计统计信息。

分析其中任一范围内的性能问题时,通常需要查看所关注时段内统计信息的变化(差值)。

等待事件统计信息

所有可能的等待事件均在 V$EVENT_NAME视图中编录。

所有会话的累计统计信息都存储在 V$SYSTEM_EVENT中,该视图显示特定事件从实例

启动以来的等待事件合计。

在排除故障时,需要了解进程是否曾等待某项资源。

系统范围的统计信息

所有系统范围的统计信息均在 V$STATNAME视图中编录:在 Oracle Database 10g 中大约

有 330 种统计信息。

服务器在 V$SYSSTAT视图中显示所有计算的系统统计信息。可以通过查询此视图,

找到自实例启动以来的累计合计。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 292:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-12

系统统计信息(续)

系统范围的统计信息(续)

例如:SQL> SELECT name, class, value FROM v$sysstat; NAME CLASS VALUE ------------------------------- ------ ----------... table scans (short tables) 64 135116 table scans (long tables) 64 250 table scans (rowid ranges) 64 0 table scans (cache partitions) 64 3 table scans (direct read) 64 0 table scan rows gotten 64 14789836 table scan blocks gotten 64 558542 ...

系统范围的统计信息按优化主题和调试用途分类。这些类别包括一般实例活动、重做日志缓冲区活动、锁定、数据库缓冲区高速缓存活动等等。

您还可以通过查询 V$SYSTEM_WAIT_CLASS来查看特定等待类别的所有等待事件。例如(应用了格式):

SQL> SELECT * FROM V$SYSTEM_WAIT_CLASS 2 WHERE wait_class LIKE '%I/O%';

CLASS_ID CLASS# WAIT_CLASS TOTAL_WAITS TIME_WAITED ---------- ------ ------------ ----------- -----------1740759767 8 User I/O 1119152 39038 4108307767 9 System I/O 296959 27929

SGA 全局统计信息

服务器在 V$SGASTAT视图中显示所有计算的内存统计信息。可以通过查询此视图,找到从实例启动以来详细 SGA 使用率的累积合计。例如:

SQL> SELECT * FROM v$sgastat; POOL NAME BYTES ------ ------------------------- ----------

fixed_sga 7780360 buffer_cache 25165824 log_buffer 262144

shared pool sessions 1284644 shared pool sql area 22376876 ...

所示结果只是输出显示的一部分。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 293:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-13

版权所有 © 2009,Oracle。保留所有权利。

显示与会话有关的统计信息

V$STATNAME

• statistic#• name• class

V$SESSTAT• sid• statistic#• value

V$SESSION• sid• serial#• username• command• osuser• seq#• event#• event• p1/2/3text• p1/2/3• p1/2/3raw• wait_class• wait_time• seconds_in_wait• state• ...

V$SESSION_EVENT• sid• event• total_waits• total_timeouts• time_waited• average_wait• max_wait• time_waited_micro• event_id

V$EVENT_NAME• event#• name• parameter1• parameter2• parameter3

显示与会话有关的统计信息

通过查询 V$SESSION可以显示每个已登录用户的当前会话信息。例如,可以使用

V$SESSION来确定会话是否代表用户会话,或者是否由数据库服务器进程

(BACKGROUND) 创建。

可以查询 V$SESSION或 V$SESSION_WAIT来确定活动会话所等待的资源或事件。

Oracle 服务器在 V$SESSTAT视图中显示用户会话统计信息。V$SESSION_EVENT视图列出了会话等待事件的信息。

统计信息的累积值通常是通过动态性能视图来提供的,如 V$SESSTAT视图和

V$SYSSTAT视图。请注意,在关闭数据库实例时将重置动态视图中的累计值。

V$MYSTAT视图可显示当前会话的统计信息。

还可以通过查询 V$SESSMETRIC视图来显示所有活动会话的性能度量值。此视图

列出了 CPU 利用率、物理读取数、硬分析数和逻辑读取比率等性能度量。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 294:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-14

版权所有 © 2009,Oracle。保留所有权利。

显示与服务有关的统计信息

对于 n层环境,由于会话统计信息并非十分有用,因此可

以在下列视图中查看服务级别的统计信息:

• V$SERVICE_EVENT:以每个事件为基础的每个服务的

聚集等待计数和等待时间

• V$SERVICE_WAIT_CLASS:以等待类别为基础的每个

服务的聚集等待计数和等待时间

显示与服务有关的统计信息

在应用程序服务器共享数据库连接的 n 层环境中,查看会话可能无法获取用于分析性能所

需的信息。将会话按服务名称分组可以更加准确地监视性能。以下这两个视图提供的信息

与名称相似的对应会话视图所提供的信息相同,不同之处在于所提供的是服务层的信息而

不是会话层的信息。

V$SERVICE_WAIT_CLASS显示每个服务的等待统计信息,这些信息按等待类别细分。

V$SERVICE_EVENT显示的信息与 V$SERVICE_WAIT_CLASS相同,只不过这些信息

按照事件 ID 进一步细分。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 295:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-15

版权所有 © 2009,Oracle。保留所有权利。

故障排除和优化视图

实例/数据库V$DATABASE V$INSTANCE V$PARAMETER V$SPPARAMETER V$SYSTEM_PARAMETER V$PROCESS V$BGPROCESS V$PX_PROCESS_SYSSTATV$SYSTEM_EVENT

磁盘V$DATAFILE V$FILESTAT V$LOG V$LOG_HISTORY V$DBFILE V$TEMPFILE V$TEMPSEG_USAGE V$SEGMENT_STATISTICS

争用V$LOCK V$UNDOSTAT V$WAITSTAT V$LATCH

内存V$BUFFER_POOL_STATISTICS V$LIBRARYCACHE V$SGAINFO V$PGASTAT

故障排除和优化视图

本幻灯片列出了一些视图,您可能需要访问这些视图来确定性能问题的原因或分析数据库

的当前状态。

有关这些视图的完整说明,请参阅《Oracle Database Reference Manual》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 296:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-16

版权所有 © 2009,Oracle。保留所有权利。

字典视图

• 以下字典视图和特殊视图提供了使用 DBMS_STATS程序包后生成的有用的统计信息:

– DBA_TABLES、DBA_TAB_COLUMNS

– DBA_CLUSTERS

– DBA_INDEXES

– DBA_TAB_HISTOGRAMS

• 这些统计信息是静态的,直到再次执行 DBMS_STATS中的相应过程。

字典视图

在需要查看数据存储的详细信息时,请使用 DBMS_STATS程序包,该程序包将收集统计

信息并填充一些 DBA_xxx视图中的列。

DBMS_STATS将填充视图中有关下列内容的列:

• 区和块中的表数据存储:

- DBA_TABLES - DBA_TAB_COLUMNS

• 区和块中的簇数据存储:

- DBA_CLUSTERS

• 区和块中的索引数据存储以及索引有效性:

- DBA_INDEXES

• 非索引列和索引列的数据分布:

- DBA_TAB_HISTOGRAMS

有关使用 DBMS_STATS程序包的详细信息,请参阅《Oracle Database Performance Tuning Guide》。

执行 ANALYZE INDEX … VALIDATE STRUCTURE命令,可填充包含索引统计信息的INDEX_STATS视图和 INDEX_HISTOGRAM视图。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 297:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-17

版权所有 © 2009,Oracle。保留所有权利。

诊断挂起或速度异常慢的数据库

当数据库的执行速度非常慢或者数据库被挂起时,

用于进行问题分析:

• 直接访问 SGA 以监视性能(内存访问模式)

– V$SESSION

– V$SESSION_WAIT

– V$SYSTEM_EVENT

– V$SYSSTAT

– 使用 Enterprise Manager 进行挂起分析

优化

统计信息

> SGA 附加

AWR指导

异步 Commit

诊断挂起或速度异常慢的数据库

当数据库的性能非常差,或者实际已被挂起时,可以通过一些功能来进行问题分析。

系统支持直接从系统全局区 (SGA) 收集实时性能统计信息,这是使用优化的或轻型系统

级调用作为 SQL 的替代方法来实现的。在 Enterprise Manager 中,这称为内存访问模式。

每个 Oracle 实例都有一个 SGA 收集器线程,该线程在开始监视数据库实例时由 EM 代理

自动启动。幻灯片中所示的 V$视图是主要性能视图,它们用于高级性能诊断,因此可以

直接访问 SGA。如果需要更广泛的细化信息,则必须使用 SQL 进行检索。同时还将收集

主机信息(如 CPU 数量和主机名称),并通过 EM 界面显示这些信息。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 298:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-18

版权所有 © 2009,Oracle。保留所有权利。

使用内存访问模式

1

23

4

使用内存访问模式

在主页的“Related Links(相关链接)”部分中单击“Monitor in Memory Access Mode(在内存访问模式下监视)”链接,可以访问内存访问模式图形页。通过该链接,可以在

“Memory Access(内存访问)”查看模式下打开“Performance(性能)”页。如幻灯片

中所示,第一次时必须选择“Enable Memory Access Mode(启用内存访问模式)”,以

后可以根据需要禁用此项。

要返回“SQL Access(SQL 访问)”查看模式,只需单击“Performance(性能)”页上

的“Switch to SQL Access Mode(切换到 SQL 访问模式)”按钮。

内存访问模式避免了与分析和执行 SQL 语句相关联的计算,因此能够稳健处理由于库高

速缓存争用导致无法使用 SQL 监视实例的严重情况。对于速度缓慢或挂起的系统,应该

切换到内存访问模式。

内存访问模式中的页包含的数据的采样频率高于 SQL 模式中的页。由于这个原因,SQL 模式中显示的图表可能会略有不同。因此,内存访问模式页提供了更多的与事件起止位

置有关的信息,并且还可以检测持续时间较短的事件,而这些事件在其他情况下可能会

被忽视。

注:内存访问模式也称为直接 SGA 附加模式。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 299:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-19

版权所有 © 2009,Oracle。保留所有权利。

使用挂起分析页

小窗口

使用挂起分析页

要分析挂起和系统速度减慢的原因,可以在 EM 的“Performance(性能)”页的

“Additional Monitoring Links(其他监视链接)”部分中使用“Hang Analysis(挂起

分析)”页。您还可以使用“Blocking Sessions(阻塞会话)”页来显示当前阻塞其他

会话的所有会话的列表。

使用“Hang Analysis(挂起分析)”页可以:

• 确定造成瓶颈的会话

• 检查正在阻塞或已阻塞会话的会话概要

此页提供了系统中等待会话的图形拓扑,已阻塞的会话显示在正在阻塞的会话的下方。

Enterprise Manager 根据活动历史记录来评估情况,并确定已被挂起或者可能要被挂起

(而非仅是瞬间进入等待状态)的会话。要查看有关会话的概要信息,请在拓扑中单击

会话 ID。此时将出现“Session Summary(会话概要)”页,其中显示所选会话的一般

信息。单击“Session Summary(会话概要)”页上的“View Session Details(查看会话

详细信息)”可以获得更详细的会话信息,并确定终止会话是否有利。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 300:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-20

使用挂起分析页(续)

根据对会话状态严重性的判断,会话在拓扑中分别以绿色、黄色或红色显示。

您还可以根据所需的拓扑大小选择“Zoom Factor(缩放因子)”百分比。如果有很多被

阻塞的会话,可以使用较小的因子来显示系统的所有等待信息,然后放大相关的部分并

查看拓扑,或者进一步细化。

在“Zoom Factor (缩放因子)”小窗口的区域中单击,可移动到所要查看的拓扑位置。

例如,如果单击窗口的左侧,则拓扑会向右移动,此时可以查看拓扑左侧的所有内容。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 301:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-21

版权所有 © 2009,Oracle。保留所有权利。

自动工作量资料档案库优化

统计信息

SGA 附加

> AWR 指导

异步 Commit

SYSAUX

SGA

内存中

统计信息

06:00:0007:00:0008:00:00

快照 1快照 2快照 3快照 4

09:00:00

09:30:00

ADDM 查找

首要问题。MMON

自动工作量资料档案库

自动工作量资料档案库 (AWR) 是 SYS拥有的永久性系统性能统计信息的集合。AWR 驻留在 SYSAUX表空间中。

快照是在特定时间捕获并存储在 AWR 中的一组性能统计信息。快照用于计算统计信息

的更改率。每个快照都用一个快照序列号 (snap_id) 进行标识,该序列号在 AWR 中是

唯一的。

Statspack 用户在 Oracle Database 10g 中应开始使用工作量资料档案库。但是,尚不支持

将 Statspack 数据移植到工作量资料档案库中。同样,工作量资料档案库也不能向后兼容

Statspack 方案。

默认情况下,快照每 60 分钟生成一次。通过更改快照 INTERVAL参数可以调整此频率。

由于数据库指导依赖于这些快照,因此应注意,调整间隔设置可能会影响诊断精确度。

例如,如果将 INTERVAL设置为 4 小时,则可能会遗漏在 60 分钟间隔内出现的峰值。

可以使用 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS存储过程

或 Database Control 来更改控制快照收集的设置。在 Database Control 中,单击

“Administration(管理)”选项卡页的“Statistics Management(统计信息管理)”区域

中的“Automatic Workload Repository(自动工作量资料档案库)”。然后,单击“Edit(编辑)”进行更改。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 302:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-22

自动工作量资料档案库(续)

与 Database Control 相比,存储过程在定义 INTERVAL值方面更为灵活。

使用 Database Control 或 DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT存储过

程可以手动获取快照。支持手动获取快照的同时,也支持系统生成的自动快照。如果

希望在与自动计划不一致的两个特定时间点捕获系统行为,则需要使用手动快照。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 303:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-23

版权所有 © 2009,Oracle。保留所有权利。

AWR 快照基线

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE ( -start_snap_id IN NUMBER ,end_snap_id IN NUMBER ,baseline_name IN VARCHAR2);

过去的相关时段

AWR 快照基线

基线是标记重要时段的快照数据集的机制。一个快照集定义为一对快照;这两个快照通过

其快照序列号 (snap_ids) 进行标识。每个基线对应于一对(且仅对应于一对)快照。

基线既可通过用户提供的名称进行标识,也可用系统生成的标识符进行区分。可以通过使

用 Database Control 或执行 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE过程

并指定名称和一对快照标识符对来创建基线。基线标识符将分配给新创建的基线。基线标

识符在数据库的生命周期中是唯一的。

基线用于保留快照数据。因此,属于基线的快照在删除基线之前一直保留。

通常,在过去某些有代表性的时段中设置快照集,以用于与当前系统行为进行比较。您也

可使用 Database Control 中的基线来设置基于阈值的预警。

可从 DBA_HIST_SNAPSHOT或 Database Control 直接获取 snap_id。

注:有关 DBMS_WORKLOAD_REPOSITORY程序包的详细信息,请参阅《Oracle Database PL/SQL Packages and Types Reference Guide》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 304:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-24

版权所有 © 2009,Oracle。保留所有权利。

指导框架:概览

ADDM

SQL 优化

指导

SQL 访问

指导

内存

空间

PGA 指导

SGA

段指导

还原指导

缓冲区高速缓存

指导

库高速缓存

指导

PGA

优化

统计信息

SGA 附加

AWR > 指导

异步 Commit

指导框架:概览

指导是服务器组件,可对各相应组件的资源使用情况和性能提供有用的反馈信息。指导

使用上文所述的所有资源,但不仅限于这些资源。可用指导的列表如下:

• 自动数据库诊断监视器 (ADDM):执行自上而下的实例分析,确定问题和潜在的

原因,并提供修复问题的建议案。ADDM 可潜在地调用其他指导。

• SQL 优化指导:提供优化 SQL 语句的建议。

• SQL 访问指导:处理方案问题并确定 佳数据访问路径(如索引和实体化视图)。

• PGA 指导:提供工作区域的详细统计信息,并根据工作量特征提供有关 佳使用

程序全局区 (PGA) 内存的建议案。

• SGA 指导:根据系统全局区 (SGA) 中各个组件的访问模式,负责优化和建议 SGA 的大小。

• 段指导:监视对象空间问题并分析增长趋势。

• 还原指导:建议参数值和用于支持指定时间的闪回操作所需的额外空间量。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 305:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-25

指导框架:概览(续)

指导基础结构提供的主要优点有:

• 所有指导均使用统一的界面。

• 可以调用所有指导并以一致的方式生成报告结果。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 306:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-26

版权所有 © 2009,Oracle。保留所有权利。

Database Control 和指导

Database Control 和指导

“Advisor Central(指导中心)”页是所有指导的主页。单击“Database(数据库)”

主页的“Related Links(相关链接)”区域中的“Advisor Central(指导中心)”链接,

可以访问此页。但是,这并不是数据库控制台中唯一可以调用指导的位置。

在“Advisor Central(指导中心)”页上,可以列出在 AWR 中注册的所有指导任务。

您还可以按指导类型和预定义时段过滤此列表。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 307:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-27

版权所有 © 2009,Oracle。保留所有权利。

典型的指导优化会话

调整任务参数。

接受结果?

实施建议案。是

执行分析。

创建指导任务。

典型的指导优化会话

典型的优化会话由以下步骤组成:

1. 创建指导任务。

指导任务是指导资料档案库中管理优化操作的可执行数据区域。

2. 调整适当的任务参数。

在主指导任务中设置参数。这些参数将控制指导的行为。

3. 执行分析。

任务的执行是一个同步操作;在操作完成后或检测到用户中断时才返回控制权。

任何时刻,均可以中断操作并在分析过程中检查直到该点的结果。如果对结果不

满意,可以继续执行来获得进一步的建议案,或者调整任务数据重新执行。

4. 检查结果。

可以使用各种内建视图或幻灯片中所示的过程来检查分析结果。可以选择接受、

拒绝或忽略建议案。如果拒绝了建议案,则可能需要使用拒绝的建议案作为

下一分析操作的建议来重新运行分析。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 308:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-28

版权所有 © 2009,Oracle。保留所有权利。

手动调用 ADDM

手动调用 ADDM 默认情况下,会针对存储在 AWR 中的每个 Oracle 数据库快照运行 ADDM 任务。但是,

可以创建一个定制 ADDM 任务,以分析使用起始快照和结束快照确定的时段。要创建

ADDM 任务,请执行以下步骤:

1. 导航到“Database(数据库)”主页。在“Related Links(相关链接)”部分中,

单击“Advisor Central(指导中心)”。

2. 在“Advisors(指导)”下,选择“ADDM”。

3. 选择“Period Start Time(时段起始时间)”选项,然后单击要用作时段起始点的快

照。然后,选择“End Time(结束时间)”选项,并单击要用作时段终止点的快照。

4. 使用“ADDM Task(ADDM 任务)”页可查看所选 ADDM 任务的结果。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 309:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-29

版权所有 © 2009,Oracle。保留所有权利。

使用 SQL 优化指导:概述

• 可使用 SQL 优化指导分析 SQL 语句,并获得

性能建议。

• SQL 优化指导的分析来源:

– 顶级 SQL:分析当前活动的顶级 SQL 语句

– SQL 优化集:分析用户提供的一套 SQL 语句

– 快照:分析快照

– 基线:分析基线

使用 SQL 优化指导:概述

可以使用 SQL 优化指导分析 SQL 语句,并获得性能建议案。通常,运行此指导类似于

使用 ADDM 查找性能问题的操作。

此外,可以运行 SQL 优化指导来分析哪些 SQL 语句占用的 CPU 时间、I/O 和内存 多。

SQL 优化指导在《Oracle Database 10g:数据库管理-课堂练习 I》一课中进行了详细

介绍。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 310:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-30

版权所有 © 2009,Oracle。保留所有权利。

SQL 访问指导:概览

SQL 访问指导

建议

- 索引

- 实体化视图

- 实体化视图日志

工作量说明

- SQL 语句

- SQL 优化集

- SQL 高速缓存内容

- 统计信息

- 方案名称

SQL 访问指导:概览

SQL 访问指导能够为给定工作量建议一套适当的实体化视图、实体化视图日志和索引。

了解和使用这些结构在优化 SQL 时至关重要,因为这些结构在数据检索时能够极大地

改善性能。

SQL 访问指导建议使用位图索引、基于函数的索引和 B 树索引。位图索引可减少许多类

型的即席查询的响应时间,并且相对于其它索引技术而言降低了存储要求。B 树索引在

数据仓库中 为常用,用于为唯一关键字或接近唯一的关键字编制索引。

SQL 访问指导的另一个组件还提供了优化实体化视图的建议,使这些视图可以快速刷新

并利用常规查询重写。

注:有关实体化视图和查询重写的详细信息,请参阅《Oracle Database Performance Tuning Guide》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 311:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-31

版权所有 © 2009,Oracle。保留所有权利。

典型的 SQL 访问指导会话

典型的 SQL 访问指导会话

启动 SQL 访问指导会话时,可以选择“Use Default Options(使用默认选项)”,以一组

推荐的预定义指导选项启动。此外,还可以通过选择“Inherit Options from a Task or Template(从任务或模板继承选项)”启动任务,使该任务继承一组由模板或任务定义的

选项值。这些模板包括多个针对一般目的环境、OLTP 和数据仓库数据库设计的一般模板。

可以保存先前任务中的定制模板并在需要时重新使用。

单击“Continue(继续)”以启动 SQL 访问指导向导。

注:可以从 Database Control 的“Advisor Central(指导中心)”页访问 SQL 访问指导。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 312:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-32

版权所有 © 2009,Oracle。保留所有权利。

工作量来源

工作量来源

使用 SQL 访问指导向导的“Workload Source(工作量来源)”页,提供访问指导可用于

生成建议案的已定义工作量。支持的工作量来源包括:

• 当前和 近的 SQL 活动:使用高速缓存中的当前 SQL 作为工作量

• 从 SQL 资料档案库中导入工作量:可以指定将先前创建的 SQL 优化集作为工作量

来源

• 用户定义的工作量;从表或视图中导入 SQL:可以接收不一定能够在当前数据库中

运行的工作量的建议案。这将在应用程序开始运行之前提供并实施访问建议案

• 从以下方案和表中创建假想工作量:提供允许指导搜索维表并生成工作量的方案

通过应用“Filter Options(过滤器选项)”部分中的可用过滤器,可以进一步缩小工作量

的范围。使用这些选项,可以缩小出现在工作量中的 SQL 语句的范围。指导将过滤器应

用于工作量后,可以对重点部分进行优化。可用的过滤器选项包括:

• 消耗资源 多的 SQL 语句

• 用户、模块标识符或操作

• 表

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 313:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-33

版权所有 © 2009,Oracle。保留所有权利。

建议选项

建议选项

使用“Recommendations Options(建议选项)”页可以选择是否限制指导基于单个访问方

法提出建议。在“Recommendation Types(建议案类型)”部分中,选择“Indexes Views(索引视图)”和/或“Materialized Views(实体化视图)”。可以选择“Evaluation Only(仅评估)”,从而只评估现有的访问结构。在此模式下,指导不生成新的建议,而是就

现有结构的使用提出意见。此项在跟踪当前索引、实体化视图的有效性和 MV 日志使用

率随时间变化方面非常有用。

可以使用“Advisor Mode(指导模式)”部分的两种模式之一运行指导。这些模式会影响

建议的质量和处理所需的时间。在“Comprehensive Mode(综合模式)”中,指导将搜索

候选的大型池,以便得到 高质量的建议案。在“Limited Mode(限制模式)”中,指导

执行速度很快,但是会限制候选建议案。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 314:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-34

版权所有 © 2009,Oracle。保留所有权利。

建议选项

建议选项(续)

可以选择“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(执行计数)”划分优先级。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 315:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-35

建议选项(续)

使用“Default Storage Locations(默认存储位置)”部分可以覆盖为方案和表空间位置定

义的默认值。默认情况下,索引放置在所引用表的方案和表空间中。实体化视图放置在

相应用户的方案和表空间中,该用户执行的某一个查询为实体化视图建议提供了信息。

定义了这些参数以后,可以调度和复查优化任务。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 316:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-36

版权所有 © 2009,Oracle。保留所有权利。

复查建议

复查建议

使用“Advisor Central(指导中心)”页可以列出所有已完成的 SQL 访问指导任务。选择

要查看建议的任务,然后单击“View Result(查看结果)”按钮。使用“Results for Task(任务结果)”的“Summary(概要)”页,可以访问指导查找结果的概览。该页中给出

了图表和统计信息,提供了建议可能对整体工作量性能和查询执行时间产生的改进。使用

该页可以显示语句计数和建议操作计数。

要查看指导任务结果的其他方面,请单击该页上的三个选项卡之一:“Recommendations(建议案)”、“SQL Statements(SQL 语句)”或“Details(详细资料)”。

“Recommendations(建议案)”页中提供了一个图表和一个表,其中按整个工作量的总

成本的改进百分比显示顶级建议案。顶级建议对总体性能的改进幅度 大。

单击“Show SQL(显示 SQL)”按钮,可以查看为所选建议生成的 SQL 脚本。在表中单

击相应的建议标识符,可以查看实施建议所需执行的操作列表。在“Actions(操作)”

页上,可以查看实施操作所需执行的所有相应 SQL 语句。对于不希望实施的建议,请使

对应的复选框处于未选中状态。然后,单击“Schedule Implementation(调度实施)”按

钮来实施保留的操作。此步骤按调度程序作业的形式执行。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 317:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-37

版权所有 © 2009,Oracle。保留所有权利。

异步 COMMIT

• 默认 COMMIT 行为是一直等待,直到将重做操作保存

在重做日志文件中。

• 现在,可以将默认行为更改为“not wait(不等待)”。

• 异步 COMMIT 对于较高的事务处理吞吐量是非常有用的。

• 但是,事务处理可能会丢失。

– 计算机崩溃

– 重做日志文件出现文件 I/O 问题

优化

统计信息

SGA 附加

AWR 指导

> 异步 Commit

异步 COMMIT

提交事务处理时,日志写进程 (LGWR) 将提交的重做以及相应事务处理中所有更改的累积

重做写入磁盘。默认情况下,在调用返回到客户机之前,Oracle 数据库将重做写入磁盘。

此行为在提交过程中产生了等待时间,因为应用程序必须等待将重做写入到磁盘。

假设正在写入一个要求事务处理吞吐量非常高的应用程序。如果希望用提交持久性来换取

较短的提交等待时间,则可以更改默认的 COMMIT选项,使应用程序无需等待 Oracle 数据库向联机重做日志中写入数据。

这样,在提交返回到用户时,为事务处理生成的重做不会进行保存。这会造成一个很小的

漏洞,即本以为已提交的事务处理可能会回退。 明显的一个例子就是计算机崩溃时。在

这种情况下,重做日志缓冲区中缓冲的所有提交重做在写入联机重做日志文件之前也都会

丢失。另一个例子是联机重做日志出现文件 I/O 问题时,此时 LGWR实际上在尝试强制将

重做日志缓冲区中缓冲的所有重做写入到磁盘。如果重做日志不是多路复用的,无法提供

冗余级别,则有可能丢失提交操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 318:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-38

版权所有 © 2009,Oracle。保留所有权利。

使用异步 COMMIT

• 可能的组合:

– IMMEDIATE、WAIT(这是默认值)

– IMMEDIATE、NOWAIT

– BATCH、WAIT

– BATCH、NOWAIT

• 系统层或会话层的示例:

• COMMIT 语句示例:

ALTER SYSTEM SET COMMIT_WRITE = IMMEDIATE, WAIT

ALTER SESSION SET COMMIT_WRITE = IMMEDIATE, NOWAIT

COMMIT WRITE BATCH WAIT

COMMIT WRITE BATCH NOWAIT

使用异步 COMMIT

可以在下列位置更改提交行为:

• 系统层或会话层的 COMMIT_WRITE初始化参数

• COMMIT语句

IMMEDIATE选项确保事务处理提交的重做可立即通过 LGWR进程写出;即,启动 I/O 操作。BATCH选项表示重做已缓冲但没有启动 I/O 操作。但是,仍允许 LGWR在其控制

的时间内将重做写入到磁盘。

WAIT选项确保在将与提交对应的重做保存到联机重做日志中前,提交不会返回。使用

NOWAIT选项时,提交返回时不需要等待将提交重做写入到联机重做日志。

不提供任何选项时,默认值为 IMMEDIATE和 WAIT,这与早期数据库版本一致。不能

同时指定 BATCH和 IMMEDIATE,也不能同时指定 WAIT和 NOWAIT。

设置了初始化参数后,没有选项的 COMMIT语句中将遵照参数中指定的选项。

注:COMMIT语句中的选项会覆盖初始化参数中的当前设置。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 319:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-39

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 诊断数据库的性能问题

• 配置自动工作量资料档案库

• 访问数据库指导

• 使用 SQL 访问指导改进数据库性能

• 有效地使用异步 COMMIT

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 320:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 9-40

版权所有 © 2009,Oracle。保留所有权利。

练习概览:使用 ADDM 诊断性能问题

本练习包含以下主题:

• 查看和解释 ADDM 查找结果,以便诊断性能问题

• 实施这些查找结果

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 321:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

管理方案对象

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 322:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能管理方案对象,以及:

• 确定符合自己需求的表类型:堆、分区、IOT 或簇

• 执行相关的 DBA 任务:

– 估计新表的大小

– 分析增长趋势

– 管理优化程序统计信息

– 联机重组方案对象

表类型

分区

IOT簇

DBA 任务

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 323:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-3

版权所有 © 2009,Oracle。保留所有权利。

表类型

一个或多个表中的相关数据存储在一起。聚簇表

数据(包括非键值)按顺序存储在 B 树索引

结构中。

按索引组织的表 (IOT)

数据被分为多个更小、更易管理的片段。分区表

数据以无序集合(堆)方式存储。普通(按堆组织的)表

说明类型

IOT分区

表类型

“按堆组织的”普通表在《Oracle Database 10g:数据库管理-课堂练习 I》一课中进行

了介绍。

分区是表或索引的片段。创建分区的目的是为了简化超大型数据库 (VLDB) 的管理工作,

这类数据库中可能包含数兆兆字节的数据。

与数据以无序集合(堆)存储的按堆组织的表不同,按索引组织的表 (IOT) 中的数据以按

主键排序的方式存储在 B 树索引结构中。

簇包含一个表或共享相同数据块的一组表,因为这些表共享相同的列,并且经常一起使用。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 324:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-4

版权所有 © 2009,Oracle。保留所有权利。

什么是分区,为什么使用分区

分区:

• 是“超大型”表或索引的片段

• 存储在自己的段中

• 用于提高性能和易管理性

表类型

> 分区

IOT簇

DBA 任务

什么是分区,为什么使用分区

分区是“超大型”表或索引的片段,它存储在自己的段中,因而便于单独管理。例如,

包含数百千兆字节数据的数据仓库表就是“超大型”表。为了更便于管理和提高性能,

分区可以进一步细分为子分区。

分区还可以改善数据库的性能,因为许多查询可以根据 WHERE 子句忽略不包含所请求行

的分区,从而减少了生成结果集所需扫描的数据量。

通过为不同的表分区或索引分区分配不同的并行执行服务器,可以对分区表和分区索引

并行执行操作。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 325:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-5

版权所有 © 2009,Oracle。保留所有权利。

分区

分区的特性包括:

• 相同的逻辑属性:列、约束条件和索引均相同

• 不同的物理属性:存储在不同的表空间中

• 对应用程序是透明的

• 多种分区方法

分区

每个分区都存储在自己的段中,因此可以单独管理。分区之间可以相互独立地工作,因此

提供了一种可以更好地优化可用性和性能的结构。

如果使用的是并行执行,则分区提供了另一种并行方式。通过为不同的表分区或索引分区

分配不同的并行执行服务器,可以对分区表和分区索引并行执行操作。

表或索引的分区和子分区都具有一些相同的逻辑属性。例如,表中的所有分区(或子分区)

都有相同的列定义和约束条件定义,而索引的所有分区(或子分区)都有相同的索引选项。

不过,它们可以具有不同的物理属性(例如 TABLESPACE)。将分区存储在单独的表空

间中对于独立备份和恢复是非常有利的,这样可以控制到磁盘驱动器的映射(平衡 IO)

并降低数据损坏的可能性。

分区对于针对分区表运行的现有应用程序和标准 DML 语句是透明的。不过,可以对应用

程序进行编程,通过在 DML 中使用扩展分区表或索引的名称,充分利用分区的功能。

有关分区表和分区索引的详细信息(包括分区方法),请参阅《Oracle 数据库管理员

指南》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 326:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-6

版权所有 © 2009,Oracle。保留所有权利。

创建分区

创建分区

Database Control 支持各种类型的表分区和索引分区,并且可以简化这些分区的创建过程。

向导将指导您完成此过程,并对可能的选项提出建议。

选择“Administration > Tables(管理 > 表)”。在“Tables(表)”页上,单击“Create(创建)”按钮以创建分区表。此时将显示“Create Table: Table Organization(创建表:

表组织)”页,在该页中可以决定是创建按堆组织的表还是按索引组织的表。然后,单击

“Continue(继续)”按钮,访问“Create Table(创建表)”页。在此页上,可以指定表

名和其它各种信息。单击“Partitions(分区)”选项卡,然后单击“Create Partitions(创

建分区)”按钮。此时将打开“Create Partitions: Partitioning Method(创建分区:分区方

法)”页,如幻灯片中所显示。这是创建向导中创建分区表的入口点。确定分区类型,然

后单击“Continue(继续)”按钮。向导将通过定义分区列及相关说明,指导您完成创建

过程。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 327:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-7

版权所有 © 2009,Oracle。保留所有权利。

分区方法

• 范围分区:根据列值的逻辑范围(例如,一年中的

月份)映射行

• 散列分区:根据分区键的散列值映射行

• 列表分区:根据 DBA 提供的离散值列表映射行

• 范围-散列分区:使用范围方法映射行,然后在每个

范围分区内创建散列子分区

• 范围-列表分区:先根据某一范围的值映射行,然后

根据离散值映射行

分区方法

• 当数据均匀分布在范围内时,范围分区的性能 佳。

• 散列分区表示数据自动、均匀地分布:DBA 不能控制特定行映射到分区的方式。

例如:

CREATE TABLE regions (region_id NUMBER, region_name VARCHAR2 (25)) PARTITION BY HASH (region_id) PARTITIONS 4 STORE IN (tbs1, tbs2, tbs3, tbs4);

上例显示的是一个散列分区表。分区列是 id;创建了四个分区并为它们分配了系统

生成的名称,这些分区存储在名称分别为 tbs1、tbs2、tbs3和 tbs4的四个表

空间中。

• 如果需要明确地控制行映射到分区的方式,请在每个分区的说明中为分区列指定

一个离散值列表。例如,指定国家/地区代码或省/市/自治区代码。

• 由范围-散列分区生成的组合分区对于历史数据和条带化都是理想的选择。

• 范围-列表分区表的分区只是逻辑结构,因为它们的数据存储在其子分区的段中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 328:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-8

版权所有 © 2009,Oracle。保留所有权利。

分区维护

分区维护

在创建分区对象后,可以使用 Database Control 维护其分区。

选择“Administration > Tables(管理 > 表)”。单击所需的分区表。此时将显示“Edit Table(编辑表)”页,单击其中的“Partitions(分区)”选项卡可打开幻灯片中所显示

的页。选择所需的分区,然后从“Actions(操作)”下拉列表中选择相应的操作,便可

对该分区应用分区维护操作。

注:使用“Advanced Options(高级选项)”按钮可以更改所选分区的存储特性。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 329:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-9

版权所有 © 2009,Oracle。保留所有权利。

按索引组织的表

访问常规表

通过 ROWID访问表

访问 IOT

非键列

键列

行标题

表类型

分区

> IOT 簇

DBA 任务

按索引组织的表

与数据以无序集合(堆)存储的(按堆组织的)普通表不同,按索引组织的表 (IOT) 中的

数据以按主键排序的方式存储在 B 树索引结构中。除了存储主键列值之外,IOT 的 B 树中的每个索引条目还存储非键列值。

按索引组织的表具备完整的表功能。它们支持各种功能,例如约束条件、触发器、LOB 和对象列、分区、并行操作、联机重组以及复制。甚至可以对按索引组织的表创建索引。

按索引组织的表非常适合 OLTP 应用程序,这类应用程序要求基于主键实现快速访问和高

可用性。在联机订单处理中,对订单表执行的查询和 DML 操作主要就是基于主键,而大

量的 DML 操作会产生碎片,因而需要频繁地进行重组。由于按索引组织的表可以联机重

组,并且不会使其二级索引失效,因此可以极大地缩短甚至消除不可用的时间段。

按索引组织的表可以替代:

• 按主键建立索引的表(通过使用 CREATE INDEX语句)

• 存储在索引簇中的聚簇表,该表是使用将表的主键映射到聚簇键的 CREATECLUSTER语句创建的

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 330:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-10

版权所有 © 2009,Oracle。保留所有权利。

按索引组织的表和堆表

• 与堆表相比较,IOT:– 可以基于键更快地访问表数据

– 不会复制主键值的存储区

– 要求的存储空间更少

– 使用二级索引和逻辑行 ID – 可用性更高,因为表重组时不会使二级索引失效

• IOT 有以下限制:

– 必须有一个不是 DEFERRABLE 的主键

– 不能聚簇

– 不能使用组合分区

– 不能包含类型为 ROWID或 LONG的列

按索引组织的表和堆表

按索引组织的表没有常规(物理)行 ID,而是使用逻辑行 ID。逻辑行 ID 通过以下两种

方法实现对 IOT 中各行的可能的 快访问:

• 物理推测法,其访问时间相当于对物理行 ID 的访问时间

• 不推测(或在推测错误后)访问,这将对 IOT 执行主键访问

推测的基础是对行所在的文件和块的了解。如果创建了索引,则块信息比较准确,但如果

叶块发生了拆分,则该信息会改变。如果推测错误,且该行已不在指定的块中,则将使用

逻辑行 ID 条目的剩余部分(即主键)来获取该行。

Oracle 数据库使用基于表主键的逻辑行 ID 来对按索引组织的表编制二级索引。由于按索

引组织的表中的行没有永久性物理地址,因此当行转移到新块中后,物理推测也会失效。

此时,要获取新的推测,可以重建二级索引。请注意,与对普通表重建索引不同,对按索

引组织的表重建二级索引需涉及到读取基表的操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 331:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-11

按索引组织的表和堆表(续)

一种更快、更便捷地修复推测的方法是使用 ALTER INDEX ... UPDATE BLOCKREFERENCES语句。此语句是联机执行的,同时仍允许对底层的按索引组织的表执行

DML 操作。

重建二级索引后,或者以其它方式更新推测中的块引用后,请重新收集索引统计信息。

对于 UROWID数据类型,应用程序可以象使用物理行 ID 那样使用逻辑行 ID。例如,选择

行 ID 以便日后更新,或者作为游标的一部分。UROWID还可用于存储通过网关访问的其

它数据库中的行 ID。UROWID类型也可用于引用物理行 ID。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 332:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-12

版权所有 © 2009,Oracle。保留所有权利。

创建按索引组织的表

SQL> CREATE TABLE country2 ( country_id CHAR(2) 3 CONSTRAINT country_id_nn NOT NULL,4 country_name VARCHAR2(40),5 currency_name VARCHAR2(25),6 currency_symbol VARCHAR2(3),7 map BLOB,8 flag BLOB,9 CONSTRAINT country_c_id_pk10 PRIMARY KEY (country_id))11 ORGANIZATION INDEX12 TABLESPACE indx13 PCTTHRESHOLD 2014 OVERFLOW TABLESPACE users;

创建按索引组织的表

常规的 B 树索引条目通常都很小。它们只包含每行的主键值和行 ID 值。许多这样的小索

引条目可以存储在叶块中。按索引组织的表却不必如此,因为它们存储完整的行。

将大条目存储在索引叶块中会降低索引的搜索和扫描速度。您可以通过设置代表块大小

百分比的阈值,指定将行转到溢出区中。

作为搜索的基准,主键列必须始终存储在 IOT 索引块中。不过,可以将非键值放在单独

的区域,即行溢出区中,以便 B 树本身保留紧密的聚簇。

按索引组织的表与普通表只是在物理组织结构上有差别。逻辑上,其处理方式与普通表

相同。可以像指定常规表那样,在 INSERT、SELECT、DELETE和 UPDATE语句中指定

按索引组织的表。

所有可用于普通表的变更选项均可用于按索引组织的表。这些选项包括 ADD、MODIFY、DROP COLUMNS和 DROP CONSTRAINTS。不过,按索引组织的表的主键约束条件不能

被删除、延迟或禁用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 333:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-13

版权所有 © 2009,Oracle。保留所有权利。

簇表类型

分区

IOT > 簇

DBA 任务

聚簇的 orders 和

order_item表

簇键(ORD_NO)101 ORD_DT CUST_CD

05-JAN-97 R01 PROD QTYA4102 20A5675 19 W0824 10

102 ORD_DT CUST_CD07-JAN-97 N45

PROD QTYA2091 11G7830 20 N9587 26

未聚簇的 orders 和

order_item表

ORD_NO ORD_DT CUST_CD------ ------ ------

101 05-JAN-97 R01102 07-JAN-97 N45

ORD_NO PROD QTY ...----- ------ ------

101 A4102 20102 A2091 11102 G7830 20102 N9587 26101 A5675 19101 W0824 10

簇的定义

簇是由共享相同数据块的一个或多个表构成的组,因为这些表共享相同的列,并且经常

一起用在联接查询中。将表存储在簇中的方式为 DBA 提供了一种非标准化数据的方法。

如果您在数据库中实施聚簇表,则无需更改访问这些表的任何应用程序的代码。簇对于

终用户和程序员都是透明的。

簇的性能优势

• 由于聚簇表是相互联接的,因此减少了磁盘 I/O 操作,加快了访问时间。

• 对于键值相同的所有行,每个簇键值只存储一次;因此它使用的存储空间较少。

性能注意事项

对聚簇表执行全表扫描时,速度通常要比非聚簇表慢。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 334:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-14

版权所有 © 2009,Oracle。保留所有权利。

簇类型

索引簇 已排序的散列簇散列簇

1

2

3

散列函数 散列函数

簇类型

索引簇

索引簇使用索引(称为簇索引)来维护簇中的数据。要存储、访问或维护索引簇中的数据,

必须有簇索引。

簇索引用于指向含有给定键值的行所在的块。簇索引的结构类似于普通索引的结构。

虽然普通索引不存储空键值,但簇索引可存储空键值。簇索引中每个键值只有一个条目。

因此,对于同一组键值,簇索引很可能要比普通索引小。

散列簇

散列簇使用散列算法(用户定义的或系统生成的)来计算某行的位置,对于检索和 DML 操作均是如此。

对于使用簇键的等式搜索,由于只有一个段要扫描(不需要访问索引),因此散列簇提供

的性能比索引簇更高。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 335:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-15

簇类型(续)

已排序的散列簇

在已排序的散列簇内,行经过排序后,组织成列表的形式。每个列表对应于一个特定值,

该值是由相应的已排序的散列簇为散列键列定义的。在每个列表中,行按排序键列指定

的顺序排序,而排序键列则由相应的已排序的散列簇定义。在谓词中使用散列键列查询

已排序的散列聚簇表时,这也是默认的返回顺序。

对于要求保证 SQL 语句之间的返回顺序的查询而言,已排序的散列簇具有不需要占用

CPU 时间和专用内存来对查询的数据进行排序的优势。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 336:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-16

版权所有 © 2009,Oracle。保留所有权利。

簇的应用场合

按数据插入顺序检索数据

使用键的等式谓词进行查询

键值的数量可预测

经常联接的主从表

很少更新的键

均匀分布的键值

统一键分布

已排序的

散列散列索引条件

簇的应用场合

何时不使用簇

• 应用程序只是偶尔使用联接表的查询或需要频繁修改其公用列值。修改行的簇键值

比修改非聚簇表中的值所花的时间要长,因为 Oracle 数据库可能需要将修改的行移

植到另一个块中以维护该簇

• 经常只对其中一个聚簇表执行全表扫描。存储该表所用的块数比单独创建它所用的

块数更多

• 一个簇键值的所有行的数据超过了一个或两个 Oracle 块。要访问聚簇键表中的单个

行,Oracle 服务器需要读取包含具有相同值的行的所有块

何时不使用散列簇

• 如果表不断增长或应用程序需要频繁修改簇键值

• 如果应用程序经常执行全表扫描,而您必须为散列簇分配大量的空间以满足表增长

需要

使用散列簇和索引簇前需要进行周密的计划。对于批量(直接路径)插入和重建之类的

重要操作,可能需要更多的性能开销。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 337:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-17

版权所有 © 2009,Oracle。保留所有权利。

已排序的散列簇:概览

• 新数据结构,用于存储按非主键列排序的数据:

– 簇键值都已经过散列处理。

– 对应于特定簇键值的行将根据排序键进行排序。

• 用于保证行顺序可按查询返回,而无需对数据进行排序:

– 行按特定簇键值的升序或降序返回。

– 按升序检索行时,ORDER BY 子句不是必需的。

已排序的散列簇:概览

当 Oracle 数据库在按堆组织的表中存储数据时,行不是按用户控制的顺序进行存储,而

是根据存储试探式方法来决定行的放置位置。除非查询中包括 ORDER BY子句,否则

Oracle 数据库不保证行的返回顺序。

在已排序的散列簇内,行经过排序后,组织成列表的形式。每个列表对应于一个特定值,

该值是由相应的已排序的散列簇为散列键列定义的。在每个列表中,行按排序键列指定

的顺序排序,而排序键列则由相应的已排序的散列簇定义。在谓词中使用散列键列查询

已排序的散列聚簇表时,这也是默认的返回顺序。

对于要求保证 SQL 语句之间的返回顺序的查询而言,已排序的散列簇具有不需要占用

CPU 时间和专用内存来对查询的数据进行排序的优势。

在已排序的散列聚簇表中按簇键列查询数据时,如果指定的 ORDER BY子句只引用了排

序键列或其中一个排序键列前缀,则优化程序将避免排序开销,因为返回的行已按排序键

列进行排序。不过,对于同类查询,如果 ORDER BY子句中引用了排序键列的后缀或非

排序键列,则数据库会假定该表没有定义任何索引而需要进行额外的排序。因此,在创建

已排序的散列簇时,请谨慎选择其排序键列。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 338:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-18

版权所有 © 2009,Oracle。保留所有权利。

已排序的散列簇:示例

CREATE CLUSTER calls_cluster( origin_number NUMBER, call_timestamp NUMBER SORT, call_duration NUMBER SORT)HASHKEYS 10000SINGLE TABLE HASH IS origin_numberSIZE 50;

CREATE TABLE calls( origin_number NUMBER, call_timestamp NUMBER , call_duration NUMBER , other_info VARCHAR2(30))CLUSTER calls_cluster(origin_number,call_timestamp,call_duration);

簇键

排序键

已排序的散列簇:示例

定义已排序的散列簇的方式与创建散列簇的方式非常相似。

第一步是创建已排序的散列簇。如前所述,与传统散列簇相比,已排序的散列簇的 大

差别是除簇键列之外,还必须定义排序键列。在本例中,簇键是 ORIGIN_NUMBER,而

排序键列是 CALL_TIMESTAMP和 CALL_DURATION。与传统散列簇的另一个差别是:

对于已排序的散列簇,SIZE参数指定为特定的散列键值存储多少个元数据条目。一个

元数据条目的大小主要由簇键列的大小决定。

第二步,创建实际的表,同时使用 CLUSTER子句指定已排序的散列簇的链接。必须以

正确的顺序指定簇键列,然后以正确的顺序指定排序键列。幻灯片中的示例描述的是以

下情况:某电信公司需要存储固定数量的主叫电话号码通过电信交换机拨出的呼叫记录。

每个主叫电话号码都可以有无数个电话呼叫。呼叫按进行的顺序存储,然后在为每个主

叫电话号码生成帐单时,按“先进先出”的顺序进行处理。每个呼叫都通过一个时间戳

号来识别。

注:虽然本例中使用了单表散列簇,但是您可以在已排序的散列簇中存储多个表。这类

似于传统的散列簇。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 339:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-19

版权所有 © 2009,Oracle。保留所有权利。

已排序的散列簇:基本体系结构

簇键 2…

簇键 1

簇键 n

HASHKEYS

SIZE

块链起点

每个块链中

按排序键排列的行

已排序的散列簇:基本体系结构

在上一个幻灯片的示例中,已排序的散列簇中只存储了一个表。此外,散列函数也非常

简单,预计不会产生冲突。这是因为散列函数是由簇键本身确定的,而每个簇键值都是

唯一的。基本上,HASHKEYS代表不同主叫电话号码的数量,而 SIZE代表用于存储每

个簇键元数据的字节数。

正如您所看到的,已排序的散列簇段的第一部分保留了下来,用于存储元数据条目。

每个元数据条目包含一个指向其对应行的列表的链接。每个列表由一系列链接在一起的

Oracle 块组成。每个列表都按照排序键列进行排序。

无论何时在行中检索对应的簇键值,该簇键值都会被散列处理到其元数据条目位置,

从而得到目前选择的行的已排序列表。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 340:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-20

版权所有 © 2009,Oracle。保留所有权利。

方案管理任务

DBA 任务包括:

• 估计新表的大小

• 分析增长趋势

• 管理优化程序统计信息

• 联机重组方案对象

表类型

分区

IOT 簇

> DBA 任务

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 341:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-21

版权所有 © 2009,Oracle。保留所有权利。

估计资源使用量

估计资源使用量

使用资源估计功能,可以估计出创建新段所需的资源量。根据表或索引的结构以及表中的

估计行数,Oracle 数据库将估计对象可能要占用的磁盘空间量。

例如,估计表大小时要基于以下数据:列数据类型、列大小和 PCTFREE。同时,区信息

也是用于计算空间分配对当前选定的表空间产生的影响。

要访问表的此功能,请从“Administration(管理)”页的“Storage(存储)”部分选择

“Tables(表)”,然后单击“Create(创建)”创建新表。您也可以使用“Create like(类似创建)”功能。指定表空间以及列的数据类型和长度,然后单击“Estimate Table Size(估计表大小)”按钮。现在,指定“Projected Row Count(预计行数)”,然后

单击“Estimate Table Size(估计表大小)”按钮,获取估计的表大小和表空间中分配的

对应空间。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 342:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-22

版权所有 © 2009,Oracle。保留所有权利。

分析增长趋势

EM 增长趋势报告:

• 由段指导使用

• 收集到 AWR 中的空间使用量统计信息

分析增长趋势

段增长报告可以为各种指导工具(如“段指导”)和报告工具(如“增长趋势报告”图)

提供关键的增长数据。

增长趋势报告功能的一些特性包括:

• 自动工作量资料档案库数据分析。工作量资料档案库收集永久性空间使用统计信息,

并将其以系统定义的方案存储。这些统计信息是在创建快照和触发预警时捕获的。

• 指示过去的增长趋势,并预测未来的增长模式。

• 只支持本地管理的表空间。

增长趋势报告由两个部分组成:增长历史记录和增长预测。增长历史记录以图表的方式

显示过去的空间使用数据。增长预测则通过使用历史记录信息和直线投影法预计未来的

空间需求。

在 Database Control 中,选择“Administration > Tables(管理 > 表)”。选择所需的表,

单击“Edit(编辑)”,然后单击“Segments(段)”标签页。

屏幕快照随即会显示此类报告。您可以选择分析时段,然后从计算得到的图形中,可以

查看可能需要向段分配更多空间的时间点。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 343:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-23

版权所有 © 2009,Oracle。保留所有权利。

管理优化程序统计信息

未分析1

23

管理优化程序统计信息

佳实践建议您在发生了重大的 DML 活动(例如插入 9,000 行)后收集统计信息。示例

中的表列表 (1) 显示 TEST_REGIONS表尚未分析。

在 Enterprise Manager 中,选择“Administration > Tables(管理 > 表)”。从“Actions(操作)”下拉列表 (2) 中选择“Manage Optimizer Statistics(管理优化程序统计信息)”,

然后按照向导 (3) 中的指示进行操作,创建优化程序统计信息作业。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 344:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-24

版权所有 © 2009,Oracle。保留所有权利。

联机重组方案对象

• 修改方案对象(例如表或索引)的逻辑结构或物理结构

• 对用户是透明的

• 空间要求

联机重组方案对象

有时,可能需要修改表的逻辑结构或物理结构,以便管理存储、提高性能或适应新的

应用程序。要执行此任务,同时保证通过查询和 DML 操作仍可以访问该表,请使用

Enterprise Manager 中的重组对象向导或 DBMS_REDEFINITION程序包。

与重新定义表的传统方法相比,联机重组表在保证可用性方面有了显著的改进。表只在

极短的时间段内以独占模式锁定,该时间段与表的大小和重新定义的复杂性无关,而且

对于用户来说是完全透明的。

此过程要求的可用空间量大约相当于要重新定义的表所占的空间。如果添加了新列,

则会要求更多的空间。

联机重组可用于:

• 重建碎片索引

• 重建碎片表

• 将对象重新定位到另一个表空间

• 使用更好的存储属性重新创建对象

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 345:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-25

联机重组方案对象(续)

可用于定制重组方案对象的选项:

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 346:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-26

版权所有 © 2009,Oracle。保留所有权利。

重组对象:效果报告

重组对象:效果报告

在执行任何命令之前,可以通过效果报告查看计划活动(例如重建索引)的错误或警告

以及活动概览。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 347:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-27

版权所有 © 2009,Oracle。保留所有权利。

重组对象:概述

重组对象:概述

要详细了解将要执行的命令,请选择“Full Script(完整的脚本)”查看所有相关的语句。

如果要查看此重组的简单概览,请选择“Script Summary(脚本概要)”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 348:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-28

版权所有 © 2009,Oracle。保留所有权利。

手动联机重组的基本步骤

1. 验证表是否是联机重组的候选对象。

2. 创建一个临时表。

3. 启动重新定义过程。

4. 复制相关对象。(该操作将对临时表自动创建所有

触发器、索引、授权和约束条件。)

5. 查询 DBA_REDEFINITION_ERRORS 视图,检查是否

有错误。

6. 同步临时表(可选)。

7. 完成重新定义。

8. 删除临时表。

手动联机重组的基本步骤

使用的命令和过程有:

1. DBMS_REDEFINITION.CAN_REDEF_TABLE

2. CREATE TABLE …

3. DBMS_REDEFINITION.START_REDEF_TABLE

4. DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS和

DBMS_REDEFINITION.CONS_ORIG_PARAMS

5. SELECT object_name, base_table_name, ddl_txt

FROM DBA_REDEFINITION_ERRORS;

6. DBMS_REDEFINITION.SYNC_INTERIM_TABLE

7. DBMS_REDEFINITION.FINISH_REDEF_TABLE

8. DROP TABLE … PURGE

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 349:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-29

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会如何管理方案对象,以及:

• 根据需求确定适当的表类型

• 执行相关的 DBA 任务:

– 估计新表的大小

– 分析增长趋势

– 管理优化程序统计信息

– 联机重组方案对象

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 350:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 10-30

版权所有 © 2009,Oracle。保留所有权利。

练习概览:管理方案对象

本练习包含以下主题:

• 监视表和索引的空间使用量

• 管理优化程序统计信息

• 重组表和索引

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 351:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

管理存储

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 352:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 介绍 Oracle 数据库如何自动管理空间

• 预先监视和管理表空间的空间使用量

• 使用段指导

• 使用段收缩功能从表和索引中回收浪费的空间

• 管理可恢复的空间分配

• 介绍可移动表空间和数据库的概念

• 空间管理人员

• 预先监视

• 段指导和段收缩

• 可恢复的分配

• 可移动表空间和

数据库

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 353:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-3

版权所有 © 2009,Oracle。保留所有权利。

空间管理:概览

空间由 Oracle 数据库自动管理。Oracle 数据库服务器可以

生成有关潜在问题的预警,并推荐可能的解决方案。这些功

能包括:

• Oracle Managed Files (OMF) • 用位图进行的空闲空间管理(“本地管理”)和数据

文件自动扩展

• 预先空间管理(默认阈值和服务器生成的预警)

• 空间回收(收缩段、联机重新定义表)

• 容量计划(增长报表)

空间管理:概览

通过使用 Oracle Managed Files (OMF),您可以根据数据库对象(而不是文件名)来指定

操作。有关详细信息,请参阅“简介”一课。

Oracle 数据库用位图管理表内的空闲空间。这称为“本地管理的”表空间。(支持字典

管理的表空间只是出于向后兼容目的。)位图化的实施可以避免很多与空间相关的表优化

工作,同时能在高峰负载期间提供更高的性能。另外,Oracle 数据库还能够自动扩展数据

文件,因此文件可以根据其中的数据量自动增长。

创建数据库时,默认情况下将启用预先空间监视。(这不会对性能产生任何影响。)

Oracle 数据库在正常空间分配和取消分配操作期间监视空间使用情况,如果空闲空间的可

用性低于预定义的阈值(可以覆盖此阈值),将发出预警。指导和向导可帮助您回收空间。

计划容量时,Oracle 数据库根据表结构和行数进行空间估计,并根据自动工作量资料档案

库 (AWR) 中存储的历史空间使用情况来提供增长趋势报表。

《Oracle Database 10g:管理-课堂练习 I》课程介绍了空间和存储概念、相关实用程序

和 DBA 任务。通过这种方式或其它方式,您应能熟悉基本概念和存储功能。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 354:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-4

版权所有 © 2009,Oracle。保留所有权利。

空闲空间管理

• 自动

• 利用本地管理的表空间启用

• 由段中的位图跟踪

优点:

• 空间使用更加灵活

• 运行时调整

• 多进程搜索 BMB

BMB BMB

数据块

… … … …

BMB

BMB

BMB

BMB

BMB

空闲空间管理

可以自动管理数据库段内的空闲空间。段内的空闲空间或已用空间由位图跟踪。创建本地

管理的表空间时,需要指定自动段空间管理。然后,指定的设置将应用于随后在此表空间

中创建的所有段。

自动空间管理段具有一组位图块 (BMB),用于描述该段中数据块的空间使用情况。BMB 以树形层次结构组织。层次的根层存储在段头部中,其中包含对所有中间层 BMB 的引用。

此层次的各个叶节点代表属于该段的一组连续数据块的空间信息。此层次的 大层数为三。

使用自动空间管理的优点(与手动空间管理相比,后者使用“空闲列表”数据结构,与

“字典管理的”表空间意义相同):

• 改善空间使用情况,尤其是各行大小差异很大的对象的空间使用情况

• 对并行访问发生的变化进行更好的运行时调整

• 改善多实例行为(在性能方面或空间使用情况方面)

因此,DBA 可以少做一些工作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 355:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-5

版权所有 © 2009,Oracle。保留所有权利。

段的类型

• 段是为某个逻辑结构分配的一组区。不同类型的段包括:

– 数据段

– 索引段

– 临时段

– 回退段

• 段由数据库动态分配。

段的类型

数据段:每个非集群表都有一个数据段。所有表数据都存储在数据段的区中。对于分区表,

每个分区都有一个数据段。每个集群也都有一个数据段。集群中每个表的数据都存储在集

群的数据段中。

索引段:每个索引都有一个索引段,存储其所有数据。对于分区索引,每个分区都有一个

索引段。

临时段:如果 SQL 语句需要临时数据库区域来完成执行过程,Oracle 数据库将创建一个

临时段。语句完成执行后,临时段中的区将返回到系统,以备将来使用。

如果段的现有区变满,Oracle 数据库将动态分配空间。因为区是根据需要分配的,所以

段中的区在磁盘上可能连续,也可能不连续。

回退段:回退段用来在您不使用自动还原管理模式时支持事务处理回退和读一致性。

Oracle 建议您使用还原表空间来管理还原,而不是使用回退段。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 356:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-6

版权所有 © 2009,Oracle。保留所有权利。

分配区

• 搜索数据文件的位图,以便获取所需数目的相邻空闲块

• 可用以下存储子句调整区的大小:

– UNIFORM

– AUTOALLOCATE

• 查看区映射

• 获得取消分配建议

分配区

对于本地管理的表空间,Oracle 数据库将查找要分配给新区的空闲空间,具体方法是:

先在表空间中确定候选数据文件,然后搜索数据文件的位图,以便获取所需数目的相邻

空闲块。如果该数据文件没有足够的相邻空闲空间,则 Oracle 数据库将在另一数据文件

中查找。

以下两个子句会影响区的大小调整:

• 通过使用 UNIFORM子句,数据库能够为表空间中创建的所有对象按您指定的统一

大小(或默认大小)来创建所有区。

• 通过使用 AUTOALLOCATE子句,数据库能够为表空间确定区大小调整策略。

要在 Enterprise Manager 中查看区映射,请选择“Administration > Tablespaces > View Tablespace > Show Tablespace Contents(管理 > 表空间 > 查看表空间 > 显示表

空间内容)”。

Oracle 数据库提供了一个“段指导”,它能够根据对象中空间碎片的程度来帮助确定对象

是否有空间可回收。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 357:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-7

版权所有 © 2009,Oracle。保留所有权利。

块空间管理

PCTFREE = 10

删除

满块

插入、更新 删除

FS2

FS3

FS1

FS2

FS3

FS4

FS1

满块

块空间管理

空间管理包括块级别的空闲空间管理。使用“自动段空间管理”时,每个块分为四部分,

分别称为 FS1(空闲空间介于 0 到 25% 之间)、FS2(25% 到 50% 空闲)、FS3(50% 到 75% 空闲)和 FS4(75% 到 100% 空闲)。

块的状态将根据其中空闲空间的级别自动更新。这样,您就可以根据所插入行的长度来

判断特定块能否满足插入操作的要求。请注意,“满”状态表示不能再向块中插入。

在幻灯片示例中,左侧的块是一个 FS3 块,因为其空闲空间介于 50% 和 75% 之间。执行

了一些插入和更新语句后,将达到 PCTFREE(虚线处),并且不能再向该块中插入新行。

现在该块被视为“满”或 FS1 块。块的空闲空间级别一旦降至低于下一部分,就会考虑

将该块再次用于插入。在上面这种情况中,空闲空间一旦超过 25%,状态即变为 FS2。

注:大对象 (LOB) 数据类型(BLOB、CLOB、NCLOB和 BFILE)不使用 PCTFREE存储

参数。有关详细信息,请参阅《Oracle Database Application Developer’s Guide - Large Objects 10g Release 2 (10.2)》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 358:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-8

版权所有 © 2009,Oracle。保留所有权利。

行链接和移植

示例:

• 更新时:行的长度增加,超过了块中的

可用空闲空间。

• 需要将数据存储在新块中。

• 将保留行的原始物理标识符 (ROWID)。• Oracle 数据库需要读取两个块以检索数据。

• “段指导”查找包含移植行的段。

旧数据

包含指向

移植行指针

的原始块

新数据

行链接和移植

在以下两种情况下,表中某行的数据可能太大,无法包含在单个数据块中。第一种情况:

在第一次插入行时,就发现行太大,无法包含在一个数据块中。在这种情况下,Oracle 数据库将在为该段保留的一系列数据块(一个或多个)中存储该行的数据。对于较大的行通

常要进行行链接,例如包含数据类型为 LONG或 LONG RAW的列的行。在这些情况下,

行链接是无法避免的。

但在第二种情况中, 初可以包含在一个数据块中的行被更新,导致整个行的长度增加,

而块的空闲空间已经完全填满。在这种情况下,Oracle 数据库假定整个行可以包含在新

数据块中,从而将整个行的数据移植到新数据块中。数据库将保留移植行的原始行片段,

以便指向包含移植行的新块。移植行的 ROWID不变。

对行进行链接或移植后,与此行关联的 I/O 性能会降低,因为 Oracle 数据库必须扫描多个

数据块来检索该行的信息。

“段指导”查找包含来自于 UPDATE操作的移植行的段。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 359:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-9

版权所有 © 2009,Oracle。保留所有权利。

预先表空间监视空间管理人员

> 预先监视

段指导和段收缩

可恢复的分配

可移动表空间和

数据库

预先表空间监视

数据库以下列方式预先管理表空间的磁盘空间使用量:

• 表空间的可用磁盘空间变低,以及特定段空间不足时,系统会通过数据库预警通知

您。然后您就可以为表空间提供更多磁盘空间,以避免空间不足的情况发生。

• 收集的信息被存储在自动工作量资料档案库 (AWR) 中,用于执行增长趋势分析以及

计划数据库的容量。

要在 Enterprise Manager 中查看和修改表空间信息,请选择“Administration > Tablespaces(管理 > 表空间)”。选择需要的表空间,然后单击“Edit(编辑)”按钮。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 360:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-10

版权所有 © 2009,Oracle。保留所有权利。

阈值和解决空间问题

通过以下方法解决空间问题:

• 添加数据文件或调整数据文件大小

• 设置 AUTOEXTEND ON

• 收缩对象

• 减少 UNDO_RETENTION

• 检查临时表空间中是否存在长时间运行的查询

85% 已满或剩下 100 MB 警告

97% 已满或剩下 5 MB 严重

解决空间问题

预警

本地管理的表空间

DBA

阈值和解决空间问题

表空间阈值定义为“满”,或者定义为表空间中的可用空间。严重阈值和警告阈值是应用

于表空间的两个阈值。DBMS_SERVER_ALERT程序包中包含设置和获取阈值的过程。达

到表空间限制大小时,将引发相应的预警。阈值以表空间大小的百分比,或剩余的空闲字

节数表示。此值在内存中计算。可以为表空间同时定义百分比和字节形式的阈值。它们中

的任何一个或两者都可以生成预警。

警告阈值触发值的理想设置能够生成这样的预警:既能确保有足够时间来解决问题,使其

不会变成严重状态,又不至于在空间尚未成为问题时干扰您。

预警指示 DBA 可以通过执行以下一项或多项操作来解决问题:

• 向表空间添加更多空间,方法是添加一个文件或调整现有文件的大小,或者使现有

文件可自动扩展

• 在包含任何可自动扩展文件的磁盘上释放空间

• 收缩表空间中的稀疏对象

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 361:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-11

版权所有 © 2009,Oracle。保留所有权利。

监视表空间的空间使用量

• 只读表空间和脱机表空间:不要设置预警。

• 临时表空间:阈值对应于会话当前使用的空间。

• 还原表空间:阈值对应于活动区和未到期区所使用的空间。

• 可自动扩展的文件:阈值基于最大文件大小。

MMON

85% 警告

97% 严重

每 10 分钟检查一次

预警

预警 已清空

已清空

监视表空间的空间使用量

数据库在执行常规的空间管理活动时跟踪空间使用情况。MMON进程每 10 分钟汇总一次

此信息。达到或超过了表空间的阈值时,将触发预警。

• 不应在处于只读模式的表空间或已脱机的表空间上标记预警,因为在这些表空间上

无法进行太多操作。

• 在临时表空间上,阈值必须定义为表空间中已用空间的限制。

• 对于还原的表空间,如果某个区中不包含活动或未到期的还原操作,则该区可以

重用。计算阈值冲突时,活动区和未到期区总体被视为已用空间。

• 对于包含可自动扩展文件的表空间,将根据您指定的 大文件大小或 大 OS 文件

大小来计算阈值。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 362:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-12

版权所有 © 2009,Oracle。保留所有权利。

收缩段

HWM

HWM

HWM

ALTER TABLE employees SHRINK SPACE COMPACT;1

ALTER TABLE employees SHRINK SPACE;2可以在压缩期间进行 DML 操作和查询。

调整 HWM 时将阻塞 DML 操作。

空间管理人员

预先监视

> 段指导和段收缩

可恢复的分配

可移动表空间和

数据库

收缩段

幻灯片中的图表描述了表收缩操作的两个阶段。第一个阶段执行压缩。在此阶段,行将

尽可能移动到段的左侧部分。在内部,行将由数据包移动,以避免锁定问题。移动完行

后,将启动收缩操作的第二阶段。在此阶段,将调整高水位标记 (HWM),并释放未使用

的空间。

如果有长时间运行的查询可能跨越收缩操作,并尝试从已回收的块中读取,则 COMPACT 子句会很有用。指定 SHRINK SPACE COMPACT子句时,收缩操作的进度将保存在相应

段的位图块中。这意味着下次在同一个段上执行收缩操作时,Oracle 数据库能够记住已经

执行过的操作。然后您就可以在非峰值时段重新发出 SHRINK SPACE子句,而无需

COMPACT子句即可完成第二阶段。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 363:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-13

版权所有 © 2009,Oracle。保留所有权利。

收缩操作的结果

• 改善性能和空间使用情况

• 维护索引

• 不执行触发器

• 可以减少移植行数

• 建议在 IOT 上重建二级索引

DBA收缩

不执行触发器

索引

收缩操作的结果

收缩稀疏填充的段可以提高对该段执行扫描操作和 DML 操作的性能。这是因为在收缩

段后,需要查看的块减少了。尤其体现在下列方面:

• 全表扫描(块变少、变密)

• 更好的索引访问(由于树变得更紧凑,因此减少了范围 ROWID扫描时的 I/O)

另外,通过收缩稀疏填充的段,还可以提高数据库内空间使用效率,因为在对象需要空间

时有更多空闲空间可以使用。

在段收缩操作期间将保证索引相关性。收缩了相应表后,索引处于可用状态。因此,不需

要进一步维护。

实际收缩操作作为 INSERT/DELETE操作在内部进行处理。但是,不执行任何 DML 触发

器,因为数据本身并未发生变化。

段收缩操作的一个可能结果是移植行的数量减少。但是,您不应总是依赖段收缩来减少移

植行数量。因为段收缩操作可能不会触及段中的所有块。因此,不能保证所有移植行都得

到处理。

注:建议收缩操作之后在索引表 (IOT) 上重建辅助索引。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 364:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-14

版权所有 © 2009,Oracle。保留所有权利。

使用 ASSM 回收空间

• 联机原地操作

• 只适用于位于 ASSM 表空间中的段

• 候选段类型包括:

– 按堆组织的表和索引表

– 索引

– 分区和子分区

– 实体化视图和实体化视图日志

使用 ASSM 回收空间

收缩操作是一个联机原地操作,因为不需要额外的数据库空间即可执行此操作。

• 无法在由空闲列表管理的段上执行收缩操作。可以收缩自动段空间管理的表空间上

的段。但是,不能收缩 ASSM 表空间中存储的下列对象:

- 集群中的表

- 包含 LONG列的表

- 包含提交时实体化视图的表

- 包含基于 ROWID的实体化视图的表

- IOT 映射表

- 包含基于函数的索引的表

• 必须为按堆组织的段启用 ROW MOVEMENT。

注:对于 Oracle Database 10g Release 2 中所有新的、永久性的、本地管理的表空间,自动

段空间管理 (ASSM) 都是段空间管理的默认类型。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 365:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-15

版权所有 © 2009,Oracle。保留所有权利。

段指导:概览

段指导:概览

“段指导”能够确定对象是否适合进行收缩操作。此指导还查找包含来自于 UPDATE操作的移植行的段。(从 Oracle Database 10.2 开始,“段指导”作业可以自动运行。)

此指导根据可以释放的未使用空间大小来提供建议,并使用标准来考虑估计的未来空间

需求,这些标准来自收集的有关段增长趋势的信息。

提供建议之后,您可以选择实施这些建议。可以在段级别或表空间级别调用收缩指导。

EM 数据库控制台是段指导的接口。可以从 EM 中的几个位置访问段指导:

• “Advisor Central(指导中心)”页

• “Tablespaces(表空间)”页

• 方案对象页

使用数据库控制台可以选择不同的输入信息,并可以调度一个调用段指导的作业来获得

收缩建议。可以在没有任何环境的情况下、在表空间环境中或在方案对象环境中调用

“段指导”向导。

段指导可以根据采样分析、历史信息和未来增长趋势来提供建议。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 366:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-16

版权所有 © 2009,Oracle。保留所有权利。

段指导

段指导

在“Administration(管理)”页中的“Storage(存储)”部分,选择“Tablespaces(表空间)”。在“Tablespaces(表空间)”页上,选择要对其执行收缩分析的表空间,

然后在“Actions(操作)”下拉列表中选择“Run Segment Advisor(运行段指导)”。

单击“Go(执行)”可以打开“Segment Advisor(段指导)”初始页。必须选择“综合”

或“有限”分析模式。在综合模式下,分析时间较长,因为指导会对段进行采样以确定

正确的目标。

一直单击“Continue(继续)”,回答指导的各个问题。在“Segment Advisor: Review(段指导:复查)”页结束,在该页上可以检查分析内容的详细资料。段指导分析作为

调度作业运行,因此可以从“Advisor Central(指导中心)”页检查已调度的任务。完成

后,可以检查指导的建议。

注:在“段指导”中,可以指定分析操作的持续时间。这样,可以限制指导用于生成建议

的时间。一般说来,分析时段越长,得到的结果就越全面。结果存储在 AWR 中,可以稍

后查看。使用“Number of days to retain(保留天数)”选项可以告知 Oracle 数据库,这

些结果在从 AWR 中清除之前应保留的天数。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 367:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-17

段指导(续)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 368:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-18

版权所有 © 2009,Oracle。保留所有权利。

实施建议

实施建议

段指导完成其作业后,您可以查看建议的详细资料并直接实施建议。

注:在收缩按堆组织的表之前,必须在该表上启用行移动功能。可以使用“Edit Table(编辑表)”页上“Options(选项)”选项卡中的“Database Control(数据库控制)”

来进行此操作。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 369:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-19

版权所有 © 2009,Oracle。保留所有权利。

数据库控制和段收缩

数据库控制和段收缩

此外(相对于实施“段指导”建议),还可以收缩单独的段。例如,在“Database Control(数据库控制)”主页的“Schema(方案)”部分中,单击“Tables(表)”链接。在

“Tables(表)”页上选择表,接着在“Actions(操作)”下拉列表中选择“Shrink Segment(收缩段)”。然后单击“Go(执行)”按钮。这样将打开“Shrink Segment(收缩段)”页,您可以在其中选择要收缩的从属段。可以选择只压缩空间,或者选择

压缩并释放空间。还可选择 CASCADE选项。

完成后,单击“Continue(继续)”链接。这样,收缩语句将作为调度作业提交。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 370:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-20

版权所有 © 2009,Oracle。保留所有权利。

使用 SQL 收缩段

ALTER TABLE employees SHRINK SPACE CASCADE;

ALTER TABLE employees ENABLE ROW MOVEMENT; 1

2

ALTER TABLE employees MODIFY LOB(resume) (SHRINK SPACE);3

ALTER TABLE employees OVERFLOW SHRINK SPACE; 4

ALTER … SHRINK SPACE [CASCADE]

TABLE [OVERFLOW] INDEX MATERIALIZED VIEW MATERIALIZED VIEW LOG

MODIFY PARTITION MODIFY SUBPARTITION MODIFY LOB

使用 SQL 收缩段

因为在按堆组织的段中,收缩操作可能会使 ROWID更改,所以在该段上执行收缩操作之

前,必须在相应段上启用行移动。默认情况下,在段级别上行移动处于禁用状态。要启用

行移动,应使用 CREATE TABLE或 ALTER TABLE命令的 ENABLE ROW MOVEMENT子句。幻灯片中的第一个示例对此进行了阐述。

使用 ALTER命令可以针对对象调用段收缩。对象可以是下列类型之一:表(按堆组织的

表或索引表)、分区、子分区、LOB(数据和索引段)、索引、实体化视图或实体化视图

日志。

使用 SHRINK SPACE子句可以收缩段中的空间。如果指定了 CASCADE,则收缩行为将

级联到所有支持收缩操作的从属段,但不包括实体化视图、LOB 索引和 IOT(索引表)

映射表。第二个示例中阐明了 SHRINK SPACE子句。

在索引段中,收缩操作将在压缩数据之前合并索引。

示例 3 显示一个收缩 LOB 段的命令,并假设 RESUME列为 CLOB。

示例 4 显示一个收缩 IOT 溢出段的命令,此段属于 EMPLOYEES表。

注:有关详细信息,请参阅《Oracle 数据库 SQL 参考》指南。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 371:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-21

版权所有 © 2009,Oracle。保留所有权利。

管理可恢复的空间分配

可恢复的语句有下列特性:

• 使用可恢复的语句,可以挂起大型操作,而不是

收到错误

• 使用可恢复的语句,可以在挂起操作时解决问题,

然后继续进行,无须重新开始

• 在下列条件下,将挂起可恢复的语句:

– 空间不足

– 达到了最大区数

– 超出了空间限额

空间管理人员

预先监视

段指导和段收缩

> 可恢复的分配

可移动表空间和

数据库

管理可恢复的空间分配

Oracle 数据库提供了一种方法,可以在空间分配失败时挂起大型数据库操作,稍后再恢复

执行。使用这种方法,就有机会采取更正措施,而不是让 Oracle 数据库服务器向用户返

回错误。更正了错误条件后,挂起的操作将自动恢复。这种功能称为“可恢复的空间分

配”。受影响的语句称为“可恢复的语句”。

仅当为系统或会话启用了可恢复的语句功能时,语句才能在可恢复模式下执行。

挂起语句时将自动挂起事务处理。因此在 SQL 语句的挂起和恢复过程中,将保留所有事

务处理资源。错误条件不再存在时(例如在用户干预之后,或者很可能在其它查询释放了

排序空间之后),挂起的语句将自动恢复执行。

挂起超时间隔与可恢复的语句相关联。可恢复的语句在挂起了超时间隔(默认为 7,200 秒,

即 2 小时)后将重新激活自身,并向用户返回异常错误。可恢复的语句在执行期间可以多

次挂起和恢复。

注:达到 大区数错误仅发生在字典管理的表空间中。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 372:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-22

版权所有 © 2009,Oracle。保留所有权利。

使用可恢复的空间分配

• 如果查询、DML 操作和特定 DDL 操作遇到空间不足

错误,则可恢复这些操作。

• 可以通过 SQL、PL/SQL、SQL*Loader 或 Oracle 调用接口 (OCI) 来发出可恢复的语句。

• 要运行可恢复的语句,必须先为会话启用可恢复的语句。

ALTER SESSION ENABLE RESUMABLE;

INSERT INTO sales_new SELECT * FROM sh.sales;

ALTER SESSION DISABLE RESUMABLE;

使用可恢复的空间分配

仅当在启用了可恢复模式的会话中执行语句时,才能使用可恢复的空间分配。有两种方法

可以启用和禁用可恢复的空间分配:

• 发出 ALTER SESSION ENABLE RESUMABLE命令。

• 用 ALTER SESSION或 ALTER SYSTEM语句将 RESUMABLE_TIMEOUT初始化

参数设置为非零值。

在为会话或数据库启用可恢复模式时,可以指定一个超时时段,在此时段后,如果未发生

任何干预,则挂起的语句将出错。RESUMABLE_TIMEOUT初始化参数指示超时发生之前

的秒数。也可以用以下命令来指定超时时段:ALTER SESSION ENABLE RESUMABLE TIMEOUT 3600;

TIMEOUT值一直有效,直到另一个 ALTER SESSION ENABLE RESUMABLE语句或使

用另一种方式更改该值,或者直到会话结束。使用 ENABLE RESUMABLE TIMEOUT子句

启用可恢复模式时的默认超时间隔是 7,200 秒,或 2 小时。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 373:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-23

使用可恢复的空间分配(续)

还可以为可恢复的语句命名。例如:ALTER SESSION ENABLE RESUMABLE TIMEOUT 3600 NAME 'multitab insert';

语句的名称用于在 DBA_RESUMABLE和 USER_RESUMABLE视图中标识可恢复的语句。

例如:SELECT name, sql_text FROM user_resumable;

NAME SQL_TEXT --------------- --------------------------------------------multitab insert INSERT INTO oldsales SELECT * FROM sh.sales;

要自动为单个会话配置可恢复的语句设置,可以创建并注册一个数据库级别的 LOGON触发器,以更改用户的会话。此触发器可以发出命令来为会话启用可恢复的语句,指定

超时时段,以及将会话发出的可恢复语句与某个名称关联。

因为挂起的语句会保留一些系统资源,所以必须先向用户授予 RESUMABLE系统权限,

才能允许他们启用可恢复的空间分配并执行可恢复的语句。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 374:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-24

版权所有 © 2009,Oracle。保留所有权利。

恢复挂起的语句

SQL 语句

全表

挂起

继续 SQL 操作

AFTERSUSPEND触发器

中止

或者

包含空闲

空间的表

1

2

3 4

5

恢复挂起的语句

示例:

1. INSERT语句遇到错误,声称表已满。

2. 挂起 INSERT语句,并且不向客户机传递任何错误。

3. 或者,执行一个 AFTER SUSPEND触发器。

4. 或者,激活 SQLERRROR异常错误以中止语句。

5. 如果语句未中止,并将空闲空间成功添加到表中,则 INSERT语句将恢复执行。

检测挂起的语句

挂起可恢复的语句时,不会向客户机发出错误。为采取更正措施,Oracle 数据库提供了

替代方法,无须就错误通知用户,也无须提供有关情况的信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 375:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-25

恢复挂起的语句(续)

在挂起期间可能执行的操作

可恢复的语句遇到可更正的错误时,系统将在内部生成 AFTER SUSPEND系统事件。用

户可以在数据库级别和方案级别同时为此事件注册触发器。如果用户注册一个触发器来

处理此系统事件,则将在挂起 SQL 语句后执行该触发器。在 AFTER SUSPEND触发器

内执行的 SQL 语句始终不可恢复,并且始终是独立的。在触发器内启动的事务处理使用

SYSTEM回退段。限定这些条件是为了克服死锁以及降低触发器遇到语句所遇到的错误条

件的概率。

在触发器代码中,可以使用 USER_RESUMABLE视图或 DBA_RESUMABLE视图,或者

使用 DBMS_RESUMABLE.SPACE_ERROR_INFO函数来获得有关可恢复语句的信息。

挂起可恢复的语句时:

• 调用语句的会话将被置于等待状态。将向会话的 V$SESSION_WAIT中插入一行,

而此会话的 EVENT列中包含“statement suspended, wait error to be cleared”。

• 针对需要添加资源才能完成挂起语句的对象发出操作挂起的预警。

结束挂起的语句

解决了错误条件后(例如在 DBA 干预之后,或者很可能在其它查询释放了排序空间

之后),挂起的语句将自动恢复执行,并且清除“可恢复会话已挂起”预警。

可以使用 DBMS_RESUMABLE.ABORT()过程强制挂起的语句激活 SERVERERROR异常

错误。此过程可以由 DBA 调用,也可以由发出语句的用户调用。如果达到了与可恢复语

句关联的挂起超时间隔,则语句将自动中止并且系统会向用户返回错误。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 376:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-26

版权所有 © 2009,Oracle。保留所有权利。

移动表空间

概念:可跨平台移动的表空间:

• 简化数据仓库和数据集市之间的数据分发

• 允许从一个平台向另一个平台移植数据库

• 受支持的平台:

Microsoft Windows for AMD(64 位)

HP Open VMS基于 AIX 的系统(64 位)

Solaris 操作系统 (x86)

Apple Mac OSLinux IA(64 位)Linux IA(32 位)

适用于 AMD 的 64 位 Linux HP-UX IA(64 位)Microsoft Windows IA(32 位)

基于 IBM zSeries 的 LinuxHP Tru64 UNIXSolaris[tm] OE(64 位)

Microsoft Windows IA(64 位)HP-UX(64 位)Solaris[tm] OE(32 位)

…可恢复的分配

> 可移动表空间可移动数据库

移动表空间

可以使用可移动表空间功能跨平台移动数据。此功能简化了从数据仓库环境向数据集市

(数据集市通常在较小的平台上运行)分发数据的过程。此功能还允许通过重建字典并

移动用户表空间的方式,将数据库从一个平台移植到另一个平台。

为了能够将数据文件从一个平台移动到另一个平台,必须确保源系统和目标系统都在支持

的平台(请参阅幻灯片)上运行。

注:可跨平台移动的表空间功能要求两个平台使用相同的字符集。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 377:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-27

版权所有 © 2009,Oracle。保留所有权利。

概念:最低兼容级别

• 源数据库和目标数据库都必须将 COMPATIBLE设置为 10.0.0 或更高。

• 数据文件头可以识别平台。

• 在移动前,请确保所有只读文件和脱机文件可以

识别平台。

只读 只读 读/写 只读

COMPATIBLE=10.0.0COMPATIBLE=9.2.0

读/写 读/写

概念:最低兼容级别

源数据库和目标数据库都需要先将其数据库 COMPATIBLE初始化参数提高到 10.0.0或

更高,才能使用可跨平台移动的表空间功能。

数据文件第一次在 COMPATIBLE设置为 10.0.0(或更高)的 Oracle Database 10g 中打

开时,这些文件将设置为可识别平台。这一点由图表中的对勾标记表示。每个文件都可以

确定其所属的平台。这些文件在磁盘上有相同的文件头块格式,这些格式用于文件标识

和验证。只读文件和脱机文件只有在变为读/写状态或变为联机之后才能提高其兼容性。

这意味着在 Oracle Database 10g 版本之前的数据库中处于只读状态的表空间必须至少变为

读/写状态一次才能使用可跨平台移动的功能。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 378:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-28

版权所有 © 2009,Oracle。保留所有权利。

可移动表空间过程

将表空间置于只读状态。

目标是否

使用相同的

endian 格式?

使用数据泵提取元数据。

使用 RMAN转换数据文件。

传送数据文件并将文件转储到目标。

使用数据泵导入元数据。

将表空间置于读/写状态。

目标

可移动表空间过程

要将表空间从一个平台移动到另一个平台(源到目标),必须将表空间集内的数据文件转

换为目标数据库可以理解的格式。虽然使用 Oracle Database 10g,磁盘结构符合通用格式,

但源平台和目标平台还是可能使用不同的 endian 格式(字节顺序)。转至不同的 endian 平台时,必须使用 RMAN 实用程序的 CONVERT命令来转换字节顺序。可以在源平台或

目标平台上执行此操作。对于 endian 格式相同的平台,则不需要转换。

幻灯片中的图形描述了从源平台向目标平台移动表空间可能用到的步骤。但是,也可以在

将文件传送到目标平台后执行转换。必须在目标平台上执行 后两步。

一般情况下,此过程与使用 Oracle 数据库的旧发行版时相同,除非两个平台使用不同的

endian 格式。此处假定两个平台都支持跨平台移动。

注:读写数据时,字节顺序会影响结果。例如,2 个字节的整数值 1在 big-endian 系统

(如 Sun SPARC Solaris)上写为 0x0001,而在 little-endian 系统(如兼容 Intel 的 PC)上写为 0x0100。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 379:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-29

版权所有 © 2009,Oracle。保留所有权利。

确定平台的 Endian 格式

SELECT tp.endian_formatFROM v$transportable_platform tp,

v$database dWHERE tp.platform_name = d.platform_name;

源 目标

确定平台的 Endian 格式

可以查询 V$TRANSPORTABLE_PLATFORM来确定两个平台上的 endian 顺序是否相同。

V$DATABASE有两个列可以用于确定您自己的平台名称和平台标识符。

在两个平台上使用幻灯片中的查询,然后比较结果。在 Sun SPARC Solaris 系统上,

SELECT语句生成以下输出:ENDIAN_FORMAT-------------Big

在 Microsoft Windows 基于 Intel 的平台上,SELECT语句生成以下输出:ENDIAN_FORMAT-------------Little

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 380:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-30

版权所有 © 2009,Oracle。保留所有权利。

移动数据库

• 概述可移动表空间功能。

• 可以轻松地从数据仓库环境向数据集市(数据集市通常

在较小的平台上运行)分发数据。

• 数据库可以非常迅速地从一个平台移植到另一个平台。

平台 X 平台 Y

数据库文件传送

相同的 endian 格式

现有数据库 新数据库

…可恢复的分配可移动表空间

> 可移动数据库

移动数据库

在不同平台之间移动数据时,使用可移动表空间功能可以将移动速度加快许多。但仍然

需要卸载元数据,因为无法移动系统表空间。

数据库移动功能的目的是在 endian 格式相同的不同平台之间轻松快捷地移动数据库。

但是,源平台和目标平台的磁盘对齐可以不同。例如,HP-UX 和 Solaris 都是 big endian 格式,但 HP-UX 上的磁盘对齐为八,而在 Solaris 上为四。

要从一个平台向另一个平台移动数据库,必须确保源系统和目标系统都运行于

V$TRANSPORTABLE_PLATFORM中列出的一个平台上,并且具有相同的 endian 格式。

例如,可以将在 Linux IA(32 位)上运行的数据库移动到一个 Windows 平台上。

如果两个数据库中至少有一个使用自动存储管理 (ASM),则可能需要使用

DBMS_FILE_TRANSFER程序包来将文件上传到 FTP。

此功能与可移动表空间不同,可移动表空间有一个可以插入数据的目标数据库,而此功能

将在目标平台上创建新的数据库。新创建的数据库中包含的数据与源数据库中相同。除了

数据库名、实例名和文件位置等,新数据库与源数据库的设置也相同。

注:移动数据库比使用“数据泵”移动数据更快。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 381:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-31

版权所有 © 2009,Oracle。保留所有权利。

数据库移动过程:源系统转换

源系统

只读

在只读模式下打开数据库

并且 COMPATIBLE=10.0.0

目标系统

只读CONVERTDATABASE

TO PLATFORM

只读传送

文件 只读

数据库移动过程:源系统转换

必须先在只读模式下打开数据库,才能移动该数据库。然后使用 RMAN 转换数据库的必

要数据文件。

在源平台上执行转换时,新的 RMAN 命令 CONVERT DATABASE将生成一个包含正确的

CREATE CONTROLFILE RESETLOGS命令的脚本,此命令用于在目标系统上创建新数

据库。然后 CONVERT DATABASE命令将转换识别出的所有数据文件,以便这些文件可

以在目标系统上使用。接着,您需要将已转换的数据文件和生成的脚本传送到目标平台。

通过在目标平台上执行生成的脚本,可以创建数据库的新副本。

注:源数据库必须在 COMPATIBLE初始化参数设为 10.0.0或更高的条件下运行。

自 COMPATIBLE设置为 10.0.0或更高以来,识别出的所有表空间必须至少被读写一次。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 382:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-32

版权所有 © 2009,Oracle。保留所有权利。

数据库移动过程:目标系统转换

源系统

在只读模式下打开数据库

并且 COMPATIBLE=10.0.0

目标系统

只读CONVERTDATABASEON TARGET

只读 只读 只读传送

文件

数据库移动过程:目标系统转换

必须先在只读模式下打开数据库,才能移动该数据库。然后使用 RMAN 转换数据库的必

要数据文件。

在目标平台上执行转换时,(在源系统上执行的)CONVERT DATABASE命令只生成两个

脚本,用于在目标系统上转换数据文件以及重新创建新数据库的控制文件。然后,请将识

别出的数据文件和两个脚本都传送到目标平台。完成后,请按正确的顺序执行这两个脚本。

第一个脚本使用现有的 CONVERT DATAFILE RMAN 命令来进行转换,第二个脚本随已

转换的数据文件一起发出 CREATE CONTROLFILE RESETLOGS SQL 命令来创建新数

据库。

注:源数据库必须在 COMPATIBLE初始化参数设为 10.0.0或更高的条件下运行。

自 COMPATIBLE设置为 10.0.0或更高以来,识别出的所有表空间必须至少被读写一次。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 383:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-33

版权所有 © 2009,Oracle。保留所有权利。

数据库移动:注意事项

• 在目标平台上创建口令文件。

• 移动在源数据库中使用的 BFILE。

• 生成的 pfile 和移动脚本使用 OMF。• 使用 DBNEWID 来更改 DBID。

数据库移动:注意事项

不会移动重做日志、控制文件和临时文件。将在目标平台上为新数据库重新创建这些

文件。因此,目标平台上的新数据库必须用 RESETLOGS选项打开。

使用口令文件时,不会移动该文件,需要您在目标平台上创建该文件。这是因为口令

文件支持的文件名类型是特定于操作系统的。但是,CONVERT DATABASE命令的输出

将列出所有用户名及其系统权限,并且建议在目标平台上重新创建口令文件并为这些

用户添加条目。

CONVERT DATABASE命令列出源数据库中的所有目录对象以及使用 BFILE数据类型

或外部表的对象。可能需要用新的目录名和文件名来更新这些对象。如果在数据库中

使用了 BFILE,则必须移动 BFILE。

生成的 pfile 和移动脚本将 Oracle Managed Files (OMF) 用于数据库文件。如果不想使用

OMF,则必须修改 pfile 和移动脚本。

移动的数据库与源数据库具有相同的 DBID。可以使用 DBNEWID实用程序来更改 DBID。在移动脚本以及 CONVERT DATABASE命令的输出中,系统将提示您使用 DBNEWID实用程序来更改数据库 ID。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 384:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-34

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 使用 Oracle 数据库自动管理空间

• 预先监视和管理表空间的空间使用量

• 使用段指导

• 使用段收缩功能从表和索引中回收浪费的空间

• 管理可恢复的空间分配

• 介绍可移动表空间和数据库的概念

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 385:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 11-35

版权所有 © 2009,Oracle。保留所有权利。

练习概览:管理存储

本练习包含以下主题:

• 使用阈值预警预先管理表空间

• 使用段指导来收缩空间

• 在 SQL*Plus 和 Oracle Enterprise Manager 中查看

预警和预警历史记录

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 386:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 387:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

自动存储管理

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 388:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 识别自动存储管理 (ASM) 的功能

• 为 ASM 和数据库实例设置初始化参数文件

• 使用 ASM 文件名执行 SQL 命令

• 启动和关闭 ASM 实例

• 管理 ASM 磁盘组

• 使用 RMAN 将数据库移植到 ASM

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 389:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-3

版权所有 © 2009,Oracle。保留所有权利。

自动存储管理:概述

• 可移植的高性能集群文件系统

• 管理 Oracle DB 文件

• 数据分布到各个磁盘中以平衡负载

• 跨磁盘的集成镜像

• 解决许多存储管理问题

ASM文件系统

卷管理器

操作系统

应用程序

数据库

自动存储管理:概述

Automatic Storage Management (ASM) 提供了文件系统与卷管理器的纵向集成,这是一项

专门为 Oracle 数据库文件构建的技术。使用 ASM 可以管理单个 SMP 计算机,也可管理

集群的多个节点以便为 Oracle Real Application Clusters (RAC) 提供支持。

ASM 将 I/O 负载分布在所有可用的资源中来优化性能,不必手动进行 I/O 优化。ASM 有助于 DBA 管理动态数据库环境,使 DBA 不必关闭数据库,就可以增加数据库的大小

来调节存储分配。

ASM 通过维护数据的冗余副本来提供容错能力,也可以基于供应商提供的可靠存储机制

来构建 ASM。通过为各类数据选择所期望的可靠性和性能特性来进行数据管理,而不是

人工处理每个文件。

ASM 功能可以实现人工存储自动化,提高 DBA 管理大型数据库及更多数据库的能力,

从而可以节省 DBA 的时间并提高效率。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 390:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-4

自动存储管理:概述(续)

ASM 将文件分为多个分配单元 (AU),并在所有磁盘间平均分配每个文件的分配单元。

ASM 使用索引技术跟踪每个分配单元的位置。存储容量发生变化时,ASM 不会重新条

带化所有数据,而是根据添加或删除的存储量,按比例移动一定数量的数据,以重新

均匀分配文件,保持磁盘间的负载平衡。此操作可在数据库处于活动状态时执行。

可以提高或降低重新平衡操作的速度,以减小对 I/O 子系统的影响。ASM 还提供了镜像

保护,因此您不必再购买第三方的逻辑卷管理器。ASM 的一个独特优势在于其镜像基于

文件而不是基于卷。因此,同一磁盘组中可以包含受镜像保护的文件和不受镜像保护的

文件的组合。

ASM 支持数据文件、日志文件、控制文件、归档日志、RMAN 备份集以及其它 Oracle 数据库文件类型。ASM 支持 Oracle Real Application Clusters,而且无需使用集群逻辑卷

管理器或集群文件系统。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 391:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-5

版权所有 © 2009,Oracle。保留所有权利。

ASM 常规体系结构

ASM实例

SID=asm

ASM 磁盘 ASM 磁盘

ASM 磁盘组 1

DB 实例SID=sales

ASMBRBAL

ARB0

ARBA…

ASM 磁盘 ASM 磁盘 ASM 磁盘

ASM 磁盘组 2

ASM 磁盘

DBW0

RBALFG

ASM 常规体系结构

要使用 ASM,在启动数据库实例之前,必须启动一个名为 ASM 实例的特殊实例。ASM 实例不会装载数据库,而是管理使 ASM 文件可用于普通数据库实例所必需的那些元数据。

ASM 实例和数据库实例都能访问一些公共的磁盘集,这些公共磁盘集称为磁盘组。数据

库实例直接访问 ASM 文件的内容,它们与 ASM 实例通信的目的只是为了获取这些文件

的布局信息。

ASM 实例包含两个新的后台进程。一个进程负责协调磁盘组的重新平衡活动,称为 RBAL。第二个进程负责执行实际的重新平衡分配单元移动操作。在同一时刻可以存在许多此类进

程,它们分别名为 ARB0、ARB1,以此类推。ASM 实例还有一些与数据库实例相同的后

台进程,其中包括 SMON、PMON、LGWR、DBWR和 CKPT。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 392:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-6

ASM 常规体系结构(续)

每个使用 ASM 的数据库实例都有两个新的后台进程,ASMB和 RBAL。RBAL负责全局打

开磁盘组中的磁盘。数据库实例启动时,ASMB作为前台进程连接到 ASM 实例。数据库

实例和 ASM 实例之间的通信就是通过这种桥接来实现的。此类通信包括物理文件更改,

例如数据文件的创建和删除。通过这种连接可以定期交换消息,以更新统计信息并确认

这两个实例都在正常运行。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 393:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-7

版权所有 © 2009,Oracle。保留所有权利。

ASM 实例任务

要使用 ASM 实例,必须能够完成以下任务:

• 创建 ASM 实例

• 设置初始化参数

• 启动 ASM 实例

• 管理 ASM 实例

• 关闭 ASM 实例

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 394:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-8

版权所有 © 2009,Oracle。保留所有权利。

创建 ASM 实例

创建 ASM 实例

运行 Database Configuration Assistant (DBCA),可创建 ASM 实例。在第一个屏幕上,选择

用于“Configure Automatic Storage Management(配置自动存储管理)”的选项,然后按

照步骤说明操作。此时将为您创建并启动 ASM 实例。然后,系统将指导您完成为实例定

义磁盘组的过程。

在 ASM 实例创建过程中,DBCA 会自动创建一个条目并将其添加到 oratab文件中。

此条目仅用于搜索。在使用服务机制的 Windows 平台上,DBCA 会自动创建 Oracle Service 以及相应的注册表项,以便于搜索该 ASM 实例。

配置 ASM 实例后,DBCA 会创建 ASM 实例参数文件和 ASM 实例口令文件。

如果您是第一次创建启用 ASM 的数据库,则 DBCA 会确定主机上是否已存在 ASM 实例。

如果 ASM 实例搜索返回一个空列表,则 DBCA 会创建一个新的 ASM 实例。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 395:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-9

版权所有 © 2009,Oracle。保留所有权利。

ASM 实例初始化参数

INSTANCE_TYPE = ASMDB_UNIQUE_NAME = +ASMASM_POWER_LIMIT = 1ASM_DISKSTRING = '/dev/rdsk/*s2', '/dev/rdsk/c1*'ASM_DISKGROUPS = dgroupA, dgroupBLARGE_POOL_SIZE = 8MB

ASM 实例初始化参数

• INSTANCE_TYPE:对于 ASM 实例,该参数应设置为 ASM。

• DB_UNIQUE_NAME:该参数指定此 ASM 实例为其管理磁盘组的服务提供程序的

名称。默认值为 +ASM。仅当在同一节点上运行多个 ASM 实例时才须修改默认值。

• ASM_POWER_LIMIT:该参数控制重新平衡操作的速度。值的范围在 1 到 11 之间,

11 表示速度最快。如果省略,该值将默认为 1。从属进程的数量可以从手动重新平

衡命令 (POWER) 中指定的并行级别派生,或者通过 ASM_POWER_LIMIT参数派生。

• ASM_DISKSTRING:该参数是一个与操作系统相关的值,由 ASM 用来限制搜索中

涉及的磁盘集。

• ASM_DISK_GROUPS:该参数列出 ASM 实例启动时或者使用 ALTER DISKGROUP ALL MOUNT命令时装载的磁盘组的名称。

INSTANCE_TYPE参数是唯一一个必须由您定义的参数。其它所有 ASM 参数都有适合于

大多数环境的默认值。

注:如果 ASM 环境是使用命令行而不是通过 EM 创建的,则必须先创建磁盘组然后才能

装载。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 396:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-10

版权所有 © 2009,Oracle。保留所有权利。

数据库实例参数更改

…INSTANCE_TYPE = RDBMS LOG_ARCHIVE_FORMATDB_BLOCK_SIZEDB_CREATE_ONLINE_LOG_DEST_nDB_CREATE_FILE_DESTDB_RECOVERY_FILE_DESTCONTROL_FILESLOG_ARCHIVE_DEST_nLOG_ARCHIVE_DESTSTANDBY_ARCHIVE_DESTLARGE_POOL_SIZE = 8MB…

数据库实例参数更改

INSTANCE_TYPE默认设置为 RDBMS,指定该实例是一个 RDBMS实例。

如果 LOG_ARCHIVE_DEST设置为不完整的 ASM 文件名(例如 +dGroupA),则将忽略

LOG_ARCHIVE_FORMAT。如果 LOG_ARCHIVE_DEST设置为 ASM 目录(例如,

+dGroupA/myarchlogdir/),则将使用 LOG_ARCHIVE_FORMAT,并且文件是非

OMF 文件。Oracle 数据库会自动为归档日志创建唯一的文件名。

以下参数允许将 ASM 文件名的多文件创建上下文格式作为目标:

• DB_CREATE_ONLINE_LOG_DEST_n

• DB_CREATE_FILE_DEST

• DB_RECOVERY_FILE_DEST

• CONTROL_FILES

• LOG_ARCHIVE_DEST_n

• LOG_ARCHIVE_DEST

• STANDBY_ARCHIVE_DEST

注:由于 ASM 文件的分配单元映射是从 LARGE_POOL分配的,因此必须将

LARGE_POOL_SIZE初始化参数设置为至少 8 MB,越大越好。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 397:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-11

版权所有 © 2009,Oracle。保留所有权利。

启动 ASM 实例

$ export ORACLE_SID='+ASM'$ sqlplus /nologSQL> CONNECT / AS sysdbaConnected to an idle instance.SQL> STARTUP;ASM instance startedTotal System Global Area 83886080 bytesFixed Size 1260216 bytesVariable Size 57460040 bytesASM Cache 25165824 bytesASM diskgroups mounted

启动 ASM 实例

ASM 实例的启动类似于数据库实例,但初始化参数文件中包含一个

INSTANCE_TYPE=ASM这样的条目。将该参数值设置为 ASM时,它会通知 Oracle 可执行

文件要启动的是 ASM 实例而不是数据库实例。同时,ORACLE_SID变量必须设置为该

ASM 实例的名称。ASM 实例启动时,在装载阶段会尝试装载 ASM_DISKGROUPS初始化

参数指定的磁盘组,而不是像非 ASM 实例那样装载数据库。

对于 ASM 实例和数据库实例,其它 STARTUP子句的解释大致相同。OPEN对于 ASM 实例无效。NOMOUNT将启动 ASM 实例而不装载任何磁盘组。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 398:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-12

版权所有 © 2009,Oracle。保留所有权利。

访问 ASM 实例

磁盘组 磁盘组

存储系统

AS SYSDBA AS SYSOPERASM 实例

所有操作 非破坏性操作

访问 ASM 实例

ASM 实例没有数据字典,因此连接此类实例的唯一方法是使用操作系统验证机制,即

SYSDBA或 SYSOPER。要进行远程连接,需要使用口令文件。通常,SYSDBA权限是通

过使用操作系统组来授予的。在 UNIX 上,通常是 dba组。默认情况下,dba组的成员

对该节点上的所有实例(包括 ASM 实例)拥有 SYSDBA权限。使用 SYSDBA权限连接到

ASM 实例的用户对系统中的所有磁盘组拥有管理权限。ASM 实例中支持 SYSOPER权限,

该权限将允许执行的 SQL 命令集限制到最小,即能满足已配置系统上的基本操作即可。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 399:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-13

访问 ASM 实例(续)

SYSOPER用户可以使用的命令如下:

• STARTUP/SHUTDOWN

• ALTER DISKGROUP MOUNT/DISMOUNT

• ALTER DISKGROUP ONLINE/OFFLINE DISK

• ALTER DISKGROUP REBALANCE

• ALTER DISKGROUP CHECK

• SELECT all V$ASM_* views

其它所有命令,例如 CREATE DISKGROUP、ADD/DROP/RESIZE DISK等等,都需要

具备 SYSDBA权限才能执行,使用 SYSOPER权限不能执行。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 400:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-14

版权所有 © 2009,Oracle。保留所有权利。

ASM 主页

ASM 主页

Enterprise Manager 提供了一个用户友好的图形界面,以便执行 Oracle 数据库的管理和

监视任务。Oracle Database 10g 扩展了现有的功能,能够透明地支持对使用 ASM 存储的

Oracle 数据库进行管理和监视。它还添加了对新管理任务的支持,这些任务对于管理

ASM 实例和 ASM 磁盘组是必需的。

ASM 主页显示 ASM 实例的状态,以及由收集机制生成的度量和预警;此外,还提供启动

和关闭功能。通过单击“Alert(预警)”链接,用户可以转到预警详细资料页。

“DiskGroup Usage(磁盘组使用量)”图表显示每个客户机数据库使用的空间以及空闲

空间。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 401:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-15

版权所有 © 2009,Oracle。保留所有权利。

ASM 性能页

ASM 性能页

“Automatic Storage Management(自动存储管理)”页的“Performance(性能)”标签

显示每个磁盘组的 I/O 响应时间和吞吐量。您可以进一步深入查看磁盘级性能指标。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 402:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-16

版权所有 © 2009,Oracle。保留所有权利。

ASM 配置页

ASM 配置页

通过“Automatic Storage Management(自动存储管理)”页的“Configuration(配置)”

标签,可以查看或修改 ASM 实例的初始化参数。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 403:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-17

版权所有 © 2009,Oracle。保留所有权利。

关闭 ASM 实例

SHUTDOWN NORMAL

ASM 实例

数据库实例 A 数据库实例 B

1 1

2

3

关闭 ASM 实例

尝试关闭处于 NORMAL、IMMEDIATE或 TRANSACTIONAL模式下的 ASM 实例时,只有

在没有任何数据库实例连接到该 ASM 实例的情况下,操作才会成功。如果至少有一个实

例与之连接,则会显示以下错误:ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS instance

如果对该 ASM 实例执行 SHUTDOWN ABORT命令,则该实例将关闭,但在下次启动时要

求进行恢复。任何与之连接的数据库实例最终也将关闭,同时报告以下错误:ORA-15064: communication failure with ASM instance

在单个 ASM 实例配置中,如果 ASM 实例失败,而磁盘组为进行更新处于打开状态,则

在 ASM 实例重新初始化后,它将读取磁盘组的日志并恢复所有临时更改。在多个 ASM 实例共享磁盘组的情况下,如果一个 ASM 实例失败,另一个 ASM 实例会自动恢复实例

失败所导致的临时 ASM 元数据更改。数据库实例故障不会对 ASM 实例产生影响。只要

主机重新启动,ASM 实例就会自动启动。ASM 实例应该使用底层操作系统支持的自动启

动机制。请注意,文件系统故障通常会导致节点崩溃。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 404:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-18

关闭 ASM 实例(续)

如幻灯片中所示,关闭正在使用 ASM 的实例的正确方式是先关闭正在使用 ASM 实例的

所有实例。那些实例将通知 ASM 实例它们不再使用 ASM 实例。随后即可正常关闭 ASM 实例。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 405:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-19

版权所有 © 2009,Oracle。保留所有权利。

DBCA 和存储选项

DBCA 和存储选项

为了支持将 ASM 用作一个存储选项,创建数据库时,Database Configuration Assistant (DBCA) 中会出现此屏幕。在此屏幕中,可以选择以下存储选项:文件系统、ASM 或裸设备。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 406:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-20

版权所有 © 2009,Oracle。保留所有权利。

ASM 存储:概念

数据库

表空间

Oracle 数据块

数据文件

物理块

ASM 磁盘

ASM 文件

分配单元 (AU)文件系统文件

裸设备

ASM 磁盘组

ASM 存储:概念

ASM 不会妨碍任何现有的数据库功能。现有数据库能够像平常一样工作。可以将新文件

创建为 ASM 文件,但听任现有文件以原有的方式管理,也可以最终将这些文件移植到

ASM。

上图描述了使用 ASM 的 Oracle 数据库内部各存储组件之间的关系。图表的左侧部分和

中间部分显示了在以前的版本中各组件之间的关系。右侧部分是 ASM 引入的新概念。

数据库文件可以存储为 ASM 文件。新层次的顶部是 ASM 磁盘组。任何单个 ASM 文件只

能包含在一个磁盘组中。不过,一个磁盘组中可以包含属于多个数据库的多个文件,并且

单个数据库可以使用来自多个磁盘组的存储空间。正如您看到的那样,一个磁盘组由多个

ASM 磁盘组成,但每个 ASM 磁盘只能属于一个磁盘组。ASM 文件始终分布在该磁盘组

中的所有 ASM 磁盘上。ASM 磁盘按分配单元 (AU) 进行分区,每个分配单元的大小为

1 MB。分配单元是 ASM 分配的最小连续磁盘空间。ASM 不允许跨分配单元拆分一个

Oracle 块。

注:本图只处理了一种类型的 ASM 文件:数据文件。不过,ASM 也可用于存储其它类型

的数据库文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 407:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-21

版权所有 © 2009,Oracle。保留所有权利。

ASM 磁盘组

• 作为逻辑单元管理的磁盘组

• 将磁盘总空间划分为统一大小的单元

• 将各个文件平均分配到所有磁盘中

• 根据文件类型使用粗粒度或细粒度的

条带化

• 管理的是磁盘组而非文件

磁盘组

ASM 实例

ASM 磁盘组

磁盘组是作为逻辑单元进行管理的一组磁盘。以 ASM 磁盘为单位在磁盘组中添加或删除

存储。每个 ASM 磁盘都有一个 ASM 磁盘名,该名称在集群的所有节点中都是相同的。

由于不同主机可以使用不同的名称引用同一磁盘,因此必须提供一个 ASM 磁盘名称的

缩写。

ASM 始终以大小为 1 MB 的分配单元块将文件平均分配到磁盘组的所有磁盘中。这称为

粗粒度条带化。通过这种方式,ASM 消除了手动进行磁盘优化的必要。但是,磁盘组中

的磁盘应当具有相似的大小和性能特性,以获取最佳 I/O。对于大多数安装,将只有几个

磁盘组。例如,工作区需一个磁盘组,恢复区需一个磁盘组。对于要求等待时间较短的

文件(如日志文件),ASM 提供细粒度条带化 (128 KB)。细粒度条带化对每个 AU 进行

条带化。细粒度条带化将中等大小的 I/O 操作细分为多个较小的且并行执行的 I/O 操作。

当文件和磁盘的数量增加时,您只需管理固定数量的磁盘组即可。从数据库角度而言,

可以将磁盘组指定为在数据库中创建的文件的默认位置。

注:每个磁盘组都是自描述式的,均包含自己的文件目录和磁盘目录。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 408:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-22

版权所有 © 2009,Oracle。保留所有权利。

故障组

控制器 1 控制器 2

故障组 1 故障组 2

磁盘组 A

控制器 3

故障组 3

1 7 131 7 131 7 13

1 7 131 7 131 7 13

1 7 131 7 131 7 13

2

3

4

5

6

故障组

故障组是某个特定磁盘组中的一组磁盘,共享一个需要容错的公用资源。例如,故障组

可以是连接到公用 SCSI 控制器的一组 SCSI 磁盘。尽管每个单独的磁盘都功能正常,但

控制器的故障将导致 SCSI 总线上的所有磁盘都不可用。

故障组的构成视站点而定。这主要取决于站点的容错模式。默认情况下,ASM 将每个磁

盘分配至其各自的故障组。创建磁盘组或将磁盘添加至磁盘组时,管理员可能会指定自己

的磁盘分组方法,并将磁盘划分到相应的故障组中。确定了故障组之后,ASM 可以优化

文件布局,降低因共享资源故障而导致的数据不可用。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 409:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-23

版权所有 © 2009,Oracle。保留所有权利。

磁盘组镜像

• 在分配单元级别镜像

• 在每个磁盘上混合主分配

单元和镜像分配单元

• 外部冗余:延迟硬件镜像

• 正常冗余:

– 双向镜像

– 至少两个故障组

• 高冗余:

– 三向镜像

– 至少三个故障组

磁盘组镜像

ASM 具有三种磁盘组类型,可支持不同镜像类型:

• 外部冗余:不提供镜像。如果使用硬件镜像,或可以容忍磁盘故障所导致的数据

丢失,则使用外部冗余磁盘组。故障组不与这些类型的磁盘组一起使用

• 正常冗余:支持双向镜像

• 高冗余:提供三向镜像

ASM 不镜像磁盘,而是镜像分配单元。因此,只有磁盘组需要备用容量。某一磁盘发生

故障时,ASM 将从磁盘组中的其它正常磁盘读取镜像内容,然后自动在正常磁盘中重建

故障磁盘的内容。这就将击中到故障磁盘的 I/O 分布到其它几个磁盘。

ASM 将文件的一个主分配单元分配至磁盘组中的一个磁盘时,会将该分配单元的一个镜

像副本分配至该磁盘组的另一个磁盘。给定磁盘中的主分配单元可以在该磁盘组的一个

伙伴磁盘上拥有自己的镜像副本。ASM 将确保主分配单元及其镜像副本始终位于不同的

故障组中。如果为磁盘组定义了故障组,则 ASM 可以对同一故障组中多个磁盘发生的同

步故障进行容错处理。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 410:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-24

版权所有 © 2009,Oracle。保留所有权利。

磁盘组动态重新平衡

• 无论存储配置何时发生

更改,都会自动联机

重新平衡

• 仅按相应比例将数据

移至添加的存储

• 无需手动优化 I/O • 联机移植到新的存储

• 可在系统上使用ASM_POWER_LIMIT配置负载

磁盘组动态重新平衡

• 使用 ASM,可以非常轻松的完成重新平衡过程,无需 DBA 或系统管理员进行任何

干预。无论何时添加或删除磁盘,ASM 均可以自动重新平衡磁盘组。

• 通过使用索引技术将分配单元分布在各个可用磁盘上,ASM 不必重新条带化所有数

据,而只需根据添加或删除的存储量按相应比例移动一定数量的数据,以在磁盘组

中的各个磁盘上重新平均分配文件,并维护这些磁盘之间的 I/O 负载平衡。

• 由于可以保持 I/O 负载平衡,因此,无论何时分配文件,也不论存储配置何时发生

更改,DBA 都无需搜索磁盘组中的热点,也不用手动移动数据来恢复 I/O 负载平衡。

• 如果同时添加或删除多个磁盘,则使用 ASM 将更加有效,这样即可在单个操作中

实现各磁盘的重新平衡。这可避免数据发生不必要的移动。使用此技术,可以轻松

地实现数据的联机移植。只需在一个操作中添加新磁盘,并在另一个操作中删除旧

磁盘即可。

• 通过设置 ASM_POWER_LIMIT初始化变量,可以控制重新平衡操作在系统上分配的

负载量。取值范围为 0到 11。数值越小,负载越少,而设置越高,负载越多,完成

的也更快。设置为 0表示暂挂重新平衡操作。默认值为 1。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 411:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-25

版权所有 © 2009,Oracle。保留所有权利。

管理磁盘组

CREATE DISKGROUP

ALTER DISKGROUP

DROP DISKGROUPASM 实例

数据库实例

管理磁盘组

ASM 实例的主要目标是管理磁盘组和保护其中的数据。ASM 实例还可以向数据库实例传

递有关文件布局的信息。通过这种方式,数据库实例可以直接访问磁盘组中存储的文件。

系统提供了多个新的磁盘组管理命令。这些命令都要求具备 SYSDBA权限,并且必须从

ASM 实例发出。

您可以添加新的磁盘组,还可以修改现有的磁盘组,在其中添加新磁盘、删除现有磁盘和

执行许多其它操作。可以删除现有的磁盘组。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 412:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-26

版权所有 © 2009,Oracle。保留所有权利。

ASM 管理页

ASM 管理页

单击“Automatic Storage Management(自动存储管理)”页中的“Administration(管理)”标签页时,将在 V$ASM_DISKGROUP视图中列出磁盘组。在该视图中,

可以创建、编辑或删除磁盘组。您还可以对选定磁盘组执行磁盘组操作,如装载、

卸装、重新平衡、检查和修复。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 413:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-27

版权所有 © 2009,Oracle。保留所有权利。

“Create Disk Group(创建磁盘组)”页

“Create Disk Group(创建磁盘组)”页

单击“Disk Group Overview(磁盘组概览)”页上的“Create(创建)”可显示“Create Disk Group(创建磁盘组)”页。可以输入磁盘组名称、冗余机制、以及希望包含在新

磁盘组中的磁盘列表。

磁盘列表可以从 V$ASM_DISK固定视图中获取。默认情况下,只显示可以分配给磁盘

组的磁盘。这些磁盘处于以下某一种状态:

• CANDIDATE:该磁盘以前从未分配给任何一个 ASM 磁盘组。

• FORMER:该磁盘以前曾分配给 ASM 磁盘组,但目前处于未分配状态。

• PROVISIONED:正在使用 ASMLib,并且此磁盘尚未分配给磁盘组。

注:ASMLib 是与其他供应商的存储数组进行通信的 API。有关 ASMLib 的详细信息,

请参阅文档《Oracle 数据库管理员指南》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 414:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-28

版权所有 © 2009,Oracle。保留所有权利。

创建和删除磁盘组

CREATE DISKGROUP dgroupA NORMAL REDUNDANCYFAILGROUP controller1 DISK

'/devices/A1' NAME diskA1 SIZE 120G FORCE,'/devices/A2','/devices/A3'

FAILGROUP controller2 DISK'/devices/B1','/devices/B2','/devices/B3';

DROP DISKGROUP dgroupA INCLUDING CONTENTS;

创建和删除磁盘组

假定在 ASM 磁盘搜索过程中,在 /devices目录中找到以下磁盘:A1、A2、A3、B1、B2和 B3。又假定磁盘 A1、A2和 A3位于一个 SCSI 控制器上,而磁盘 B1、B2和 B3位于另一个控制器上。幻灯片中的第一个示例说明了如何配置名为 DGROUPA的磁盘组,

该磁盘组有两个故障组:CONTROLLER1和 CONTROLLER2。

该示例中还对磁盘组使用了默认的冗余特性 NORMAL REDUNDANCY。可以根据需要提供

磁盘的名称和大小。如果不提供此信息,ASM 将创建一个默认名称,并尝试确定磁盘的

大小。如果不能确定大小,则会返回错误。FORCE表示,即使指定磁盘已作为 ASM 磁盘

组的成员格式化,也应该将该磁盘添加到指定磁盘组中。如果对未作为 ASM 磁盘组成员

格式化的磁盘使用 FORCE选项,则会返回错误。

如幻灯片中的第二个语句所示,可以删除磁盘组及其所有文件。为避免出现误删现象,

如果除内部 ASM 元数据外磁盘组中还包含任何其它文件,则必须指定 INCLUDING CONTENTS选项。必须先装载磁盘组,然后才能将其删除。确保磁盘组中的任何文件均

未打开后,将该组及其所有驱动器一起从磁盘组中删除。然后,将改写每个磁盘的标头,

去除其中的 ASM 格式信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 415:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-29

版权所有 © 2009,Oracle。保留所有权利。

将磁盘添加至磁盘组

ALTER DISKGROUP dgroupA ADD DISK'/dev/rdsk/c0t4d0s2' NAME A5,'/dev/rdsk/c0t5d0s2' NAME A6,'/dev/rdsk/c0t6d0s2' NAME A7,'/dev/rdsk/c0t7d0s2' NAME A8;

ALTER DISKGROUP dgroupA ADD DISK '/devices/A*';

磁盘格式化

磁盘组重新平衡

将磁盘添加至磁盘组

本示例显示如何将磁盘添加到磁盘组。执行 ALTER DISKGROUP ADD DISK命令可添加

磁盘。第一个语句将四个新磁盘添加到 DGROUPA磁盘组。

第二个语句演示搜索字符串的相互影响。在这种情况下,请考虑以下配置:/devices/A1是 DGROUPA磁盘组的成员。

/devices/A2是 DGROUPA磁盘组的成员。

/devices/A3是 DGROUPA磁盘组的成员。

/devices/A4是候选磁盘。

第二个命令将 A4添加到 DGROUPA磁盘组。由于其它磁盘已经是 DGROUPA磁盘组的成

员,因此即使它们与搜索字符串匹配,第二个语句仍将忽略这些磁盘。如图所示,向磁盘

组添加磁盘时,ASM 实例将确保该磁盘是可寻址的并且可用,然后,才会对该磁盘进行

格式化并使其重新平衡。由于需要将每个文件的分配单元移到新磁盘上,因此重新平衡过

程非常耗时。

注:重新平衡不会妨碍任何数据库操作。重新平衡进程主要会对系统上的 I/O 负载产生

影响。重新平衡的强度越高,它加在系统上的 I/O 负载也就越大。这样,可供数据库 I/O 使用的 I/O 带宽就越少。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 416:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-30

版权所有 © 2009,Oracle。保留所有权利。

其它 ALTER命令

ALTER DISKGROUP dgroupA DROP DISK A5;

ALTER DISKGROUP dgroupA DROP DISK A6ADD FAILGROUP fred

DISK '/dev/rdsk/c0t8d0s2' NAME A9;

ALTER DISKGROUP dgroupA UNDROP DISKS;

从 dgroupA中删除一个磁盘:

在单个命令中添加和删除磁盘:

取消磁盘删除操作:

其它 ALTER 命令

幻灯片中的第一个语句显示如何从 DGROUPA磁盘组中删除一个磁盘。第二个语句显示

如何使用单个命令添加和删除磁盘。本例的最大优点在于:在命令完成前不会启动重新

平衡。第三个语句显示如何取消磁盘删除操作。UNDROP命令只对磁盘的暂挂删除操作

有效,对已完成的删除操作没有任何影响。

以下语句将根据需要重新平衡 DGROUPB磁盘组:ALTER DISKGROUP dgroupB REBALANCE POWER 5;

此命令通常不是必需的,因为在添加、删除磁盘或调整磁盘大小时会自动执行此操作。

不过,如果希望使用 POWER子句来覆盖初始化参数 ASM_POWER_LIMIT定义的默认速

度,则该命令非常有用。通过在命令中重新输入新的级别,可以更改正在进行的重新平

衡操作的强度。如果强度级别为 0,则重新平衡操作将中断,直到重新隐式或显式调用

该命令。

以下语句将卸装 DGROUPA:ALTER DISKGROUP dgroupA DISMOUNT;

使用 MOUNT和 DISMOUNT选项,可以分别指定一个或多个磁盘组可供数据库实例使用或

不可供其使用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 417:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-31

其它 ALTER 命令(续)

使用以下语句验证磁盘组元数据的内部一致性,并修复发现的任何错误:ALTER DISKGROUP dgroupA CHECK ALL;

如果只希望发出错误预警,也可以使用 NOREPAIR子句。虽然示例中请求对磁盘组中的

所有磁盘进行检查,不过也可以指定对某个文件或单个磁盘进行检查。此命令要求磁盘组

已装载。一旦发现任何错误,就会显示一条错误概要消息,并在预警日志中报告检测到的

错误的详细资料。

注:在上面六个示例中,前四个示例触发了磁盘组重新平衡,而后两个则未触发。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 418:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-32

版权所有 © 2009,Oracle。保留所有权利。

ASM 文件

数据库文件

ASM 文件在磁盘组 dgroupA 中自动分布

CREATE TABLESPACE sample DATAFILE '+dgroupA';

1234

1 2 3 4

自动创建

ASM 文件

RMAN

ASM 文件

您为某个表空间指定 ASM 磁盘组作为数据文件名时,将在该磁盘组中创建一些 ASM 文件,以便为该表空间提供存储空间。

创建 ASM 文件时,会永久性地设置一些文件属性,其中包括文件的保护策略和条带化策

略。ASM 文件是 Oracle 管理文件。ASM 创建的任何文件一旦不再需要,就会自动删除。

使用 ASM 时,文件操作将按数据库对象来指定。虽然文件名会通过一些数据字典视图公

开,或可以通过 ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令来获取,

但数据库管理从不需要知道文件的名称。在物理上,由于磁盘组中的每个文件都分布在

磁盘组中的所有磁盘上,因此备份单个磁盘没有任何用处。ASM 文件的数据库备份必须

通过 RMAN 来完成。

注:ASM 不管理二进制文件、预警日志、跟踪文件或口令文件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 419:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-33

版权所有 © 2009,Oracle。保留所有权利。

ASMCMD 实用程序

$ asmcmdASMCMD> ls -l DGROUP1/ORCL/DATAFILEType Redund Striped Time Sys NameDATAFILE MIRROR COARSE OCT 05 21:00:00 Y HRAPPS.257.570923611DATAFILE MIRROR COARSE OCT 05 21:00:00 Y TBSASM.256.570922917ASMCMD>

SQL> CREATE TABLESPACE tbsasm DATAFILE '+DGROUP1' SIZE 100M;Tablespace created.

SQL> CREATE TABLESPACE hrapps DATAFILE '+DGROUP1' SIZE 10M;Tablespace created.

ASMCMD 实用程序

ASMCMD是一个命令行实用程序,可用于轻松地查看和操纵 ASM 磁盘组中的文件和目录。

该实用程序可以列出磁盘组内容、执行搜索、创建和删除目录以及显示空间使用情况等等。

注:有关 ASMCMD的详细信息,请参阅文档《Oracle 数据库实用程序》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 420:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-34

版权所有 © 2009,Oracle。保留所有权利。

将数据库移植到 ASM 存储区

1. 完全关闭数据库。

2. 关闭数据库并修改服务器参数文件,以使用 Oracle Managed Files (OMF)。

3. 编辑并执行以下 RMAN 脚本:

STARTUP NOMOUNT;RESTORE CONTROLFILE FROM '/u1/c1.ctl';ALTER DATABASE MOUNT;BACKUP AS COPY DATABASE FORMAT '+dgroup1';SWITCH DATABASE TO COPY;SQL "ALTER DATABASE RENAME '/u1/log1' TO '+dgroup1' ";# Repeat RENAME command for all online redo log members...ALTER DATABASE OPEN RESETLOGS;SQL "ALTER DATABASE TEMPFILE '/u1/temp1' DROP";

将数据库移植到 ASM 存储区

由于 ASM 文件无法通过正常的操作系统界面访问,因此 RMAN 是复制 ASM 文件的

唯一途径。虽然由于表空间的历史原因,表空间中的文件既可以是 ASM 文件,也可以

是非 ASM 文件,但是 RMAN 命令会将非 ASM 文件移到 ASM 磁盘组中。通过以下过程,

可以将整个数据库移到 ASM 磁盘组中:(假定您使用的是服务器参数文件。)

1. 使用 V$CONTROLFILE和 V$LOGFILE,获取当前控制文件和联机重做日志的

文件名。

2. 像平常一样关闭数据库。按如下所述,修改数据库的服务器参数文件:

- 将必要的 OMF 目标参数设置为所需的 ASM 磁盘组。

- 删除 CONTROL_FILES参数。

3. 编辑和运行 RMAN 命令文件,这将备份数据库、将当前数据文件移到备份中并重命

名联机重做日志。使用 BACKUP AS COPY命令只能移动表空间或数据文件。

4. 删除旧的数据库文件。

注:如果创建一个 OMF 控制文件,并且有一个服务器参数文件,则会在该服务器参数

文件中创建一个 CONTROL_FILES初始化参数条目。

有关如何将数据库移植到 ASM 的详细信息,请参阅《Oracle 数据库备份和恢复高级用户

指南》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 421:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-35

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 描述自动存储管理 (ASM) 的概念

• 为 ASM 和数据库实例设置初始化参数文件

• 使用 ASM 文件名执行 SQL 命令

• 启动和关闭 ASM 实例

• 管理 ASM 磁盘组

• 使用 RMAN 将数据库移植到 ASM

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 422:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 12-36

版权所有 © 2009,Oracle。保留所有权利。

练习概览:使用自动存储管理

本练习包含以下主题:

• 创建和启动 ASM 实例

• 创建和使用 ASM 磁盘组

• 将表空间移植到 ASM 存储区

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 423:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

管理资源

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 424:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成下列工作:

• 配置数据库资源管理器

• 访问和创建资源计划

• 创建使用者组

• 指定用于向使用者组分配资源的指令

• 将使用者组映射到计划

• 激活资源计划

• 监视资源管理器

> 概念资源计划使用者组计划指令映射计划激活监视

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 425:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-3

版权所有 © 2009,Oracle。保留所有权利。

数据库资源管理器:概览

资源管理器可用于:

• 管理混合工作量

• 控制系统性能

资源较多OLTP 用户

数据库资源管理器

Oracle 数据库批用户

资源较少

资源最少

DSS 用户

数据库资源管理器:概览

与通常只通过操作系统管理资源相比,使用数据库资源管理器(也称为资源管理器)可以

对计算机资源的分配进行更多的控制。如果由操作系统来决定资源的管理,则可能会导致

如下问题:

• 如果服务器进程非常多,则 Oracle 数据库服务器进程会频繁进行操作系统上下文

切换,从而导致过多的开销

• 保持闩锁的数据库服务器进程会暂停

• 资源在所有 Oracle 数据库进程之间的分布不均衡,并且不能划分任务的优先级

• 不能管理特定于数据库的资源,例如并行执行服务器和活动会话

数据库资源管理器通过控制数据库内部的执行调度来控制资源在各个会话之间的分布。通

过控制所要运行的会话以及会话运行的时间长度,数据库资源管理器可以确保资源分布与

计划指令相匹配,因此也符合业务目标。通过使用数据库资源管理器,无论系统的负载和

用户的数量如何,都可以保证用户组的处理资源达到最低限度。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 426:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-4

版权所有 © 2009,Oracle。保留所有权利。

数据库资源管理器概念

有相似资源需求的用户组或会话

在资源使用者组之间分配资源的

设计图(一个活动计划)

指定如何在资源使用者组之间

划分资源(在分配方法范围内)资源计划指令

资源使用者组

资源计划

数据库资源管理器概念

使用数据库资源管理器来管理系统需要用到资源计划、资源使用者组和资源计划指令。

“资源使用者组”定义具有相似的系统或数据库资源使用需求的一组用户或会话。

“资源计划”指定如何在各个资源使用者组之间分布资源。使用数据库资源管理器还可以

在计划中创建计划,称为“子计划”。

“资源计划指令”指定如何在使用者组或子计划之间共享特定资源。通过计划指令,可以

将资源使用者组及子计划与特定的资源计划关联起来。

“资源分配方法”确定分配任何特定资源时使用的策略。资源分配方法由资源计划和资源

使用者组使用。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 427:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-5

版权所有 © 2009,Oracle。保留所有权利。

使用资源管理器的原因

• 可以管理数据库和操作系统资源,例如:

– CPU 使用率

– 并行度

– 活动会话数

– 生成还原

– 操作执行时间

– 空闲时间

• 还可以指定标准,如果满足该标准,会话将自动切换到

另一个使用者组。

使用资源管理器的原因

数据库资源管理器提供了多种分配资源的方式:

• CPU 方法:可以指定在使用者组和子计划之间如何分配 CPU 资源。

• 并行度限制:可以控制使用者组中任何操作的最大并行度。

• 具有队列的活动会话池:可以限制使用者组或子计划的并发活动会话数。如果某个

组的会话数超过了允许的最大值,则新的会话将放在队列中,等待某个活动会话完

成。还可以指定时间限制,超过此限制后会话将退出并返回错误。

• 还原池:可以控制使用者组或子计划能够生成的还原操作的总数。当还原空间的总

数超过 UNDO_POOL指定的数量时,在相同组中其它会话释放还原空间或者增大使

用者组的还原池之前,不允许执行任何新的 INSERT、UPDATE或 DELETE命令。

如果使用者组在执行 DML 语句时超过了限额,则中止操作并返回错误。此时仍可

进行查询,即便使用者组已经超出其还原阈值。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 428:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-6

使用资源管理器的原因(续)

• 执行时间限制:可以指定操作所允许的最大执行时间。Oracle 数据库使用基于成本

的优化程序统计信息来估计操作所需的时间。如果耗时超过了所允许的最大时间

(MAX_EST_EXEC_TIME),则操作返回错误并且不会启动。如果资源使用者组有多

个指定了 MAX_EST_EXEC_TIME的计划指令,则资源管理器将选择所有传入值中

限制性最强的那个值。

• 空闲时间限制:可以指定会话的空闲时间,超过该时间后将终止会话

(MAX_IDLE_TIME)。可以进一步限制资源管理器,使其只终止阻塞其它会话的会话

(MAX_IDLE_TIME_BLOCKER)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 429:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-7

版权所有 © 2009,Oracle。保留所有权利。

访问资源计划

Oracle Enterprise Manager 和 PL/SQL

概念> 资源计划

使用者组计划指令映射计划激活监视

访问资源计划

使用 Oracle Enterprise Manager

Enterprise Manager Database Control Console 提供了简单易用的图形界面,可用于配置资源

计划、使用者组等等。

使用 DBMS_RESOURCE_MANAGER程序包

此 PL/SQL 程序包由多个过程组成,包括下列部分:

• CREATE_PLAN:命名资源计划并指定其分配方法

• UPDATE_PLAN:更新资源计划的注释

• DELETE_PLAN:删除资源计划及其指令厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 430:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-8

版权所有 © 2009,Oracle。保留所有权利。

示例:SYSTEM_PLAN

100%0%0%LOW_GROUP

0%100%0%OTHER_GROUPS

0%0%100%SYS_GROUP

CPU_P3CPU_P2CPU_P1分配方法资源使用者组

示例:SYSTEM_PLAN

SYSTEM_PLAN资源计划是提供的默认计划之一。它包含适用于下列提供的使用者组的

指令:

• SYS_GROUP:SYS和 SYSTEM用户的初始使用者组。

• OTHER_GROUPS:用于所有属于活动资源计划之外的使用者组的会话。在任何活动

计划中都必须有针对 OTHER_GROUPS的计划指令。

• LOW_GROUP:在此计划中优先级低于 SYS_GROUP和 OTHER_GROUPS的组。必须

决定哪些用户会话将成为 LOW_GROUP的一部分。最初,没有用户与此使用者组关

联。针对此组向 PUBLIC授予切换权限。

用户的初始使用者组是该用户创建的任何会话最初所属的使用者组。如果没有为用户设置

初始使用者组,则 DEFAULT_CONSUMER_GROUP将自动成为用户的初始使用者组。

SYSTEM_PLAN及关联的资源使用者组可以使用,也可以不使用。它可以用作新资源计划

的模板;可对其进行修改或删除。请根据实际环境使用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 431:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-9

版权所有 © 2009,Oracle。保留所有权利。

创建新的资源计划

DBMS_RESOURCE_MANAGER.SWITCH_PLAN(PLAN_NAME => 'DAY_PLAN',SID => 'ORCL', ALLOW_SCHEDULER_PLAN_SWITCHES => true );

创建新的资源计划

要创建新计划,必须配置多个资源管理器对象。

选择“Administration > Plans(管理 > 计划)”,单击“Create(创建)”或选择“Create Like(类似创建)”,然后单击“Go(执行)”。

调度程序可以在调度程序窗口范围内自动更改资源管理器计划。如果不希望使用自动切换,

则取消选中默认的“Automatic Plan Switching Enabled(启用自动计划切换)”。

有关调度程序的详细信息,请参阅课程“使用调度程序自动执行任务”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 432:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-10

版权所有 © 2009,Oracle。保留所有权利。

创建使用者组

DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP => 'APPUSER',CPU_MTH => 'ROUND-ROBIN',COMMENT => '');

概念资源计划

> 使用者组计划指令映射计划激活监视

创建使用者组

要管理资源使用者组,请选择“Administration > Resource Consumer Groups(管理 > 资源

使用者组)”。选择要执行的操作。可以创建新的资源使用者组,或者从结果列表中选择

一个资源使用者组,然后从“Actions(操作)”下拉列表中选择一个操作。

使用“Resource Consumer Groups(资源使用者组)”页创建或编辑使用者组及说明,然

后选择分配到该组的用户。可以在“Selected Users(所选用户)”表中添加或删除成员。

“Create Resource Consumer Group(创建资源使用者组)”和“Edit Resource Consumer Group(编辑资源使用者组)”页上有两个页面,“General(一般信息)”属性表(如幻

灯片所示)是其中之一。移动到另一个属性表“Roles(角色)”,可以定义或编辑与指

定资源使用者组关联的数据库角色。

指定一种资源分配方法,以确定如何在使用者组中的会话之间分配 CPU 资源。“Round Robin(循环)”调度可确保所有会话均能合理执行。因此,默认分配方法是“Round Robin(循环)”。“Run to Completion(运行至完成)”分配方法指定优先处理活动时

间最长的会话。使用 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP过程的

CPU_MTH选项可以实现等效的功能。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 433:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-11

版权所有 © 2009,Oracle。保留所有权利。

将用户分配至使用者组

将用户分配至组

必须先将用户分配至资源使用者组,才可以启用数据库资源管理器。用户的默认使用者组

是用户创建的任何会话最初所属的组。如果没有为用户设置使用者组,则用户的初始使用

者组默认为 DEFAULT_CONSUMER_GROUP。

必须先直接授予用户(或者 PUBLIC)使用者组的切换权限,才能使该使用者组成为用户

的默认使用者组。切换权限不能从授予用户的角色继承。DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP ( user => ‘PM', consumer_group => 'APPUSER' );

DBMS_RESOURCE_MANAGER_PRIVS程序包中包含将资源使用者组分配至用户的过程。

授予用户切换权限后,用户可以切换到其它使用者组。DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP (grantee_name => 'PM', consumer_group => 'APPUSER', grant_option => FALSE );

不要为这些过程中的任何一个使用临时等待区。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 434:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-12

版权所有 © 2009,Oracle。保留所有权利。

指定资源计划指令概念资源计划使用者组

> 计划指令映射计划激活监视

CPU_MTH 值

1 2 3 4 5 6 7

指定资源计划指令

如果不使用 Enterprise Manager 创建资源计划或资源使用者组,则必须先创建一个临时等待

区。这是一个暂存区,可以在所做的更改生效之前存放并验证这些更改。

在 Oracle Enterprise Manager 中,有多个可用于指定计划指令的属性页:

1. 在“General(一般信息)”页上,将使用者组与计划关联,并通过 CPU_MTH值

指定每个使用者组或子计划获得的 CPU 资源。

2. 指定并行度限制来控制使用者组中任何操作的最大并行度。

3. 可以控制使用者组中允许的并发活动会话的最大数量。整个并行执行会话计为一个

活动会话。

4. 可以控制使用者组能够生成的还原总数。

5. 可以指定操作所允许的最大执行时间。

6. 可以通过指定标准来控制资源,如果满足该标准,会话将自动切换到另一个使用者组。

7. 可以指定会话处于空闲状态的时间量,超过后将终止会话。可以进一步限制此类终止

只应用于阻塞其它会话的会话。

注:对于使用本幻灯片所示标签编号的指令,后面的幻灯片中会提供更多相关的详细信息。

如果在后面的幻灯片中看到“指令标签 n”的字样,请参阅本幻灯片。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 435:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-13

版权所有 © 2009,Oracle。保留所有权利。

资源计划的资源分配方法

可能值参数

FIFO_TIMEOUTQUEUING_MTH

ACTIVE_SESS_POOL_ABSOLUTE

ACTIVE_SESS_POOL_MTH

PARALLEL_DEGREE_LIMIT_ABSOLUTE

PARALLEL_DEGREE_LIMIT_MTH

RATIO

EMPHASISCPU_MTH

资源计划的资源分配方法

资源分配方法确定了资源管理器如何向资源使用者组或资源计划分配特定资源。创建资源

计划时,需要为以下资源分配方法指定值。

有两种方法可以通过 CPU_MTH参数指定 CPU 分布:

• EMPHASIS,这是默认方法,用于多级计划,它以百分比形式指定 CPU 如何在使用

者组之间分布。

• RATIO适用于单级计划,它使用比率来指定 CPU 是如何分布的。

PARALLEL_DEGREE_LIMIT_MTH限制任何操作的最大并行度。只能为资源使用者组,

而不能为子计划指定此方法。ABSOLUTE方法是可能值,该方法指定可以为一个操作分配

的进程数量。如果有多个计划指令引用了相同的子计划或使用者组,则使用所有可能值中

的最小值作为该子计划或使用者组的并行度限制。

ACTIVE_SESS_POOL_MTH限制活动会话的数量。所有其它会话均为非活动的,在队列

中等待激活。ACTIVE_SESS_POOL_ABSOLUTE是默认且唯一的可用方法。

QUEUING_MTH控制队列中不活动会话的执行顺序。FIFO_TIMEOUT是默认且唯一的可

用方法。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 436:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-14

版权所有 © 2009,Oracle。保留所有权利。

EMPHASIS 和 RATIO 的比较

最多可以进行 8 种不同级别的

资源分配。

RATIOEMPHASIS

默认值为 NULL。默认值为 NULL。

必须使用整数值,但是对于值的总和

没有限制。

任何给定级别的百分比总和必须

小于等于 100。

只能为一个级别指定值。

该值指定一个数字,此数字表示分配

到使用者组的 CPU 资源比率。

该值指定某个使用者组可以使用

的 CPU 资源百分比的最大值。

EMPHASIS 和 RATIO 的比较

EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU 占用率的分配级别为从 1 到 8,级别 1 的优先级最高。百分比指定如何将 CPU 资源分配

给每一级中的各个使用者组。

以下规则适用于 EMPHASIS资源分配方法:

• CPU 资源在给定级别按指定的百分比分配。为资源使用者组指定的 CPU 百分比是该

使用者组在给定级别可以使用的最大值。

• 给定级别上没有使用的使用者资源可供下一级别的使用者组使用。例如,如果级别 1 的使用者组只使用了 60% 的可用资源,则其余的 40% 可供级别 2 的使用者组使用。

• 任何给定级别的百分比总和必须小于等于 100。• 对于没有明确指定计划指令的所有级别,其所有子计划或使用者组的默认资源是 0%。

• EMPHASIS资源分配方法避免了资源缺乏问题,该问题导致优先级较低的使用者没

有运行的机会。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 437:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-15

EMPHASIS 和 RATIO 的比较(续)

RATIO策略是一个单级别 CPU 分配方法。将指定要为使用者组分配的 CPU 比率相对应

的数字,而不是百分比。例如,假定有三个使用者组 OLTP_USERS、DSS_USERS和

BATCH_USERS,可以指定下列比率:

• OLTP_USERS:4

• DSS_USERS:3

• BATCH_USERS:2

• OTHER:1

这就类似于让 OLTP 用户获得 40% 的资源、DSS 用户获得 30% 的资源、批用户获得 20% 的资源、所有其它使用者组获得 10% 的可用资源。

如果 OTHER或 DSS_USERS使用者组中当前都没有使用者在使用 CPU 资源,则

OLTP_USERS使用者组将获得三分之二的可用资源,而 BATCH_USERS使用者组将获得

三分之一。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 438:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-16

版权所有 © 2009,Oracle。保留所有权利。

活动会话池机制

OLTP 用户

Active_sess_pool_P1=5

DSS 用户

Active_sess_pool_P1=3

Sess6 Sess7

Sess8

p001 p002 p003

DSS活动会话队列

Sess10

Sess9

Sess1 Sess2

Sess3

Sess5Sess4

指令

标签 3

活动会话池机制

使用活动会话池功能,可以控制每个资源使用者组的最大并发活动会话数。使用此功能,

由于资源的消耗与活动会话的数量成比例,所以 DBA 能间接控制任何资源使用者组使用

的资源量。使用活动会话池有助于减少从系统中获取资源的服务器数量,因而可以避免

由于试图同时运行过多作业而导致的低效的分页、交换和其它资源损耗(如内存)。

使用活动会话填充活动会话池后,资源管理器对尝试成为活动会话的所有后续会话进行

排队,直到其它活动会话完成或成为不活动会话。活动会话是事务处理、查询或并行操作

中当前涉及的会话。单独的并行从属进程不被视为会话;而将整个并行操作视为一个活动

会话。

每个资源使用者组只有一个队列,排队方法是先进先出 (FIFO),并带有超时。队列采用

内存结构,不能直接查询。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 439:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-17

版权所有 © 2009,Oracle。保留所有权利。

设置活动会话池

设置活动会话池

使用 Oracle Enterprise Manager 可以方便地配置资源计划的活动会话池设置。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 440:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-18

版权所有 © 2009,Oracle。保留所有权利。

最大估计执行时间

• 数据库资源管理器可以预先估计操作的执行时间。

• 可以在资源使用者组级别为操作指定最大估计执行时间。

• 如果估计时间超过 MAX_EST_EXEC_TIME,则操作不

会启动。(ORA-07455) • 此功能的好处是消除了使用过多系统资源的异常大的

作业。

• 默认值为 UNLIMITED。

指令

标签 5

最大估计执行时间

通过设置资源计划指令的 MAX_EST_EXEC_TIME参数,可以定义任何给定时间发生的

任何操作的最大估计执行时间。设置了此参数后,数据库资源管理器将估计特定作业消

耗的时间。如果操作的估计时间超过 MAX_EST_EXEC_TIME,则不启动操作并发出

ORA-07455错误。这样可以消除占用过多系统资源的任何异常大的作业。

如果有多个计划指令引用了某个资源使用者组,则该组可能有多个 MAX_EST_EXEC_TIME。数据库资源管理器将选择所有传入值中限制性最强的那个值。

使用基于成本的优化程序的统计信息,可以计算出给定语句的估计执行时间。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 441:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-19

版权所有 © 2009,Oracle。保留所有权利。

使用者组切换

xx

指令

标签 6

使用者组切换

EM Database Control Console 提供了用于配置自动使用者组切换的图形界面。可以在创建

新资源计划时配置此选项,也可以通过编辑现有计划来配置。

注:使用 Enterprise Manager 界面时无法设置 SWITCH_TIME_IN_CALL。可以设置

SWITCH_TIME,该参数在本幻灯片的屏幕快照中显示为“Execution Time(执行时间)”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 442:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-20

版权所有 © 2009,Oracle。保留所有权利。

调用结束时重新切换至初始使用者组

调用结束时重新切换至初始使用者组

通过在“Create Resource Plan(创建资源计划)”窗口中选中“Switch back to original group after call?(调用后重新切换到原始组?)”复选框,可以指定在每个顶层调用结束

后,会话返回其初始使用者组。初始使用者组是在会话刚登录时所属的组。顶层调用被

定义为将整个 PL/SQL 块视为一个调用,或类似地,将客户机单独发出的 SQL 语句视为

单独调用。

在中间层服务器实施会话共享的三层应用模型中,此功能的优势是最显而易见的。在这种

情况下,中间层在为某个最终用户执行一个调用后,可使用相同的会话为另一个最终用户

执行调用。因此,工作的分界线实际上为调用,并且上一个最终用户的操作不会影响下一

个最终用户。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 443:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-21

版权所有 © 2009,Oracle。保留所有权利。

调用结束时重新切换至初始使用者组

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (PLAN => 'Day_Plan', GROUP_OR_SUBPLAN => 'LONGRUN_GROUP', CPU_P1 => 0, CPU_P2 => 100);

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (PLAN => 'Day_Plan', GROUP_OR_SUBPLAN => 'DSS_GROUP',CPU_P1 => 100, CPU_P2 => 0, SWITCH_GROUP => 'LONGRUN_GROUP', SWITCH_TIME_IN_CALL => 600);

调用结束时

调用 1

调用 2

调用结束时重新切换至初始使用者组(续)

使用上一个 Enterprise Manager 方案示例,但这次使用

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE过程。用户登录时,由于会

话的初始使用者组映射的原因,资源管理器将会话放在 DSS_GROUP使用者组中。然后用

户执行查询。为 SWITCH_TIME_IN_CALL参数设置值(以秒为单位)时,同时也在执行

由 SWITCH_GROUP参数控制的操作之前对调用设置了计时器。顶层调用结束之后,资源

管理器自动将用户重新切换至初始使用者组。

注:不能在相同的指令中同时指定 SWITCH_TIME_IN_CALL和 SWITCH_TIME这两个

参数。SWITCH_TIME参数主要针对客户机/服务器应用程序。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 444:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-22

版权所有 © 2009,Oracle。保留所有权利。

设置空闲超时

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (PLAN => 'DAY_PLAN', GROUP_OR_SUBPLAN => 'DSS_GROUP', COMMENT => 'Limit Idle Time Example', MAX_IDLE_TIME => 600, MAX_IDLE_BLOCKER_TIME => 300);

指令

标签 7

设置空闲超时

使用资源计划的“Idle Time(空闲时间)”标签可以设置资源计划的最大空闲超时。

“Max Idle Time (sec)(最大空闲时间(秒))”和“Max Idle Time if Blocking Another Session (sec)(阻塞其它会话时的最大空闲时间(秒))”分别等效于

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE过程中的 MAX_IDLE_TIME和 MAX_IDLE_BLOCKER_TIME资源指令。这两项均以秒为单位。

MAX_IDLE_TIME指定会话既不在执行也没有等待 I/O 的时间。会话超过指定的时限后,

PMON进程将强制终止会话并清除其状态。除了限制会话的最大空闲时间外,还可以限制

空闲会话阻塞其它会话的时间。将 MAX_IDLE_BLOCKER_TIME资源指令设置为阻塞其

它会话时允许会话空闲的秒数,可以强制实施此限制。您还可以指定 UNLIMITED值来表

示没有设置最大时间。默认值为 NULL,表示无限制。这些设置提供了比概要文件更为精

细的控制。在概要文件中,单一的值无法区分阻塞会话和非阻塞会话。

在幻灯片示例中,PMON进程终止空闲时间超过 600 秒的会话。PMON进程还终止空闲时

间超过 300 秒并阻塞其它会话的会话。PMON每分钟检查一次这些限制,如果发现有会话

超出了其中一个限制,则强制终止该会话并清除其所有资源。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 445:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-23

版权所有 © 2009,Oracle。保留所有权利。

资源使用者组映射概念资源计划使用者组计划指令

> 映射计划激活监视

资源使用者组映射

通过提供会话属性和使用者组之间的映射,可以将数据库资源管理器配置为自动将使用者

组分配到会话。此外,还可以指定映射的优先级,从而指示在冲突时优先使用哪个映射。

会话属性有两种类型:登录属性和运行时属性。登录属性(幻灯片所示的“Attribute Mappings(属性映射)”列表中的最后五项)只在会话登录时有意义,此时数据库资源

管理器将确定会话的初始使用者组。而会话登录后可以根据其运行时属性分配到其它使用

者组。

在“Database Control(数据库控制)”主页中,导航到“Administration(管理)”标签页,

然后单击“Resource Manager(资源管理器)”部分中的“Resource Consumer Group Mappings(资源使用者组映射)”链接。对于每个属性,设置由标识会话的方法(例如,

用户名)和使用者组所组成的映射。根据需要,添加或删除每个资源使用者组类别所对应

的行,并在相应组中输入用于标识用户、客户机、模块或服务的文本。使用“Priorities(优先级)”选项卡,可以建立冲突的属性映射之间的优先级顺序。使用导航箭头(幻灯

片中突出显示)可以按重要性从高到低的顺序设置优先级。列表顶部的映射优先级最高。

使用 EM Database Control,可以方便地查看生成的 SQL,方法是单击“Show SQL(显示

SQL)”按钮。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 446:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-24

资源使用者组映射(续)

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 447:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-25

版权所有 © 2009,Oracle。保留所有权利。

激活实例的资源计划概念资源计划使用者组计划指令映射

> 计划激活监视

激活实例的资源计划

使用 Enterprise Manager 的“Resource Plans(资源计划)”页可以管理资源计划。要激活

计划,请选择所要激活的计划,在“Actions(操作)”下拉列表中选择“Activate(激

活)”,然后单击“Go(执行)”。选定的计划将成为实例的当前最高计划。

使用 RESOURCE_MANAGER_PLAN初始化参数

实例的计划是使用 RESOURCE_MANAGER_PLAN数据库初始化参数定义的。此参数指定

用于此实例的最高计划。如果没有指定计划,则不为实例激活资源管理器。

使用 ALTER SYSTEM语句可以激活、停用或更改当前最高计划。使用此命令更改资源

计划时,更改将立即生效。

如果在参数文件中设置了参数,并且未在数据库中定义指定的计划,则不能使用该参数

文件打开数据库。此时将返回以下错误:ORA-07452: specified resource manager plan does not exist in the data dictionary

如果遇到此错误,则必须先修改参数以显示正确值,然后才能重新启动实例。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 448:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-26

版权所有 © 2009,Oracle。保留所有权利。

数据库资源管理器信息

用户/角色DBA_RSRC_MANAGER_SYSTEM_PRIVS

列initial_rsrc_ consumer_group

DBA_USERS

信息视图名称

映射优先级DBA_RSRC_MAPPING_PRIORITY

使用者组映射DBA_RSRC_GROUP_MAPPINGS

用户/角色DBA_RSRC_CONSUMER_GROUP_PRIVS

使用者组DBA_RSRC_CONSUMER_GROUPS计划指令DBA_RSRC_PLAN_DIRECTIVES计划和状态DBA_RSRC_PLANS

数据库资源管理器信息

可以使用多个数据字典视图来检查实例中声明的资源计划、使用者组和计划指令。本节讨论了可以从这些视图中获取的一些有用信息。有关其中每个视图的内容的详细信息,请参阅《Oracle 数据库参考》手册。

使用下列查询可获取有关数据库中定义的资源计划的信息:SQL> SELECT plan, num_plan_directives, status, mandatory

2 FROM dba_rsrc_plans; PLAN NUM_PLAN_DIRECTIVES STATUS MAN -------------- ------------------- --------- ---SYSTEM_PLAN 3 ACTIVE NO INTERNAL_QUIESCE 2 ACTIVE YES INTERNAL_PLAN 1 ACTIVE YES BUGDB_PLAN 4 ACTIVE NOMAILDB_PLAN 3 ACTIVE NO MYDB_PLAN 3 ACTIVE NO

ACTIVE状态表示计划已经提交并且可供使用,而 PENDING状态表示计划已经创建,但仍位于临时等待区中。

如果为 mandatory列分配了值 YES,则不能删除计划。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 449:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-27

版权所有 © 2009,Oracle。保留所有权利。

监视资源管理器概念资源计划使用者组计划指令映射计划激活

> 监视

监视资源管理器

可以在会话级别监视数据库资源管理器的运行。此功能已集成在自动数据库诊断监视程序

(ADDM) 中。

使用 EM Database Control 可以用不同的方法来管理和监视资源管理器。在

“Administration(管理)”标签页上,单击“Resource Manager(资源管理器)”部分中

的“Monitors(监视器)”链接。

“Resource Monitors(资源监视器)”页显示一组描述活动资源计划当前状态的统计信息

和图表。可以查看当前活动计划的统计信息,还可以从列表中选择一个计划并激活该计划。

“Consumer Group Statistics(使用者组统计信息)”表列出了属于当前资源计划的使用者

组的一系列统计信息。

注:使用“Resource Monitors(资源监视器)”页激活计划时,必须先退出该页,然后再

次选择“Resource Monitors(资源监视器)”以更新该页并查看新激活的计划的统计信息。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 450:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-28

版权所有 © 2009,Oracle。保留所有权利。

监视资源管理器

• V$SESSION:包含显示会话的当前组的

resource_consumer_group 列

• V$RSRC_PLAN:显示活动资源计划的视图

• V$RSRC_CONSUMER_GROUP:包含所有活动组统计

信息的视图

监视资源管理器(续)

CPU 使用率

可以提供有关 Oracle 数据库 CPU 使用率信息的视图至少有以下三种:

• 运行 Oracle 数据库资源管理器时,V$RSRC_CONSUMER_GROUP基于每个使用者组

显示 CPU 利用率统计信息。此视图显示与当前活动资源使用者组相关的数据。

• V$SYSSTAT显示所有会话的 Oracle 数据库 CPU 占用率。“CPU used by this session(此会话使用的 CPU)”统计信息显示所有会话使用的 CPU 总计。

• V$SESSTAT显示 Oracle 数据库的每个会话的 CPU 占用率。使用此视图可以确定占

用 CPU 最多的特定会话。厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 451:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-29

监视资源管理器(续)

V$RSRC_CONSUMER_GROUP视图

下面简要描述了此视图中的部分列:

• name:使用者组的名称

• active_sessions:此使用者组中的当前活动会话数

• execution_waiters:等待时间片断的活动会话数

• requests:此使用者组累积执行的请求数

• cpu_wait_time:会话等待 CPU 的累积时间

• consumed_cpu_time:所有会话累积消耗的 CPU 时间

没有任何视图可以直接显示活动会话池队列,但是可以通过以下对象获取一些信息:

• V$SESSION:current_queue_duration列显示了会话的排队时间,如果会话

当前没有排队,则显示 0(零)。

• V$RSRC_CONSUMER_GROUP:queue_length列显示每个使用者组中当前排队的

会话数。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 452:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-30

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会如何执行以下任务:

• 配置数据库资源管理器

• 访问和创建资源计划

• 创建使用者组

• 指定用于向使用者组分配资源的指令

• 将使用者组映射到计划

• 激活资源计划

• 监视资源管理器

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 453:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 13-31

版权所有 © 2009,Oracle。保留所有权利。

练习概览:使用资源管理器

本练习包含以下主题:

• 创建资源使用者组

• 为使用者组指定 CPU 资源分配指令

• 将用户与资源使用者组关联起来

• 激活资源计划

• 在 SQL*Plus 中测试

• 停用资源计划

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 454:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 455:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

版权所有 © 2009,Oracle。保留所有权利。

使用调度程序自动执行任务

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 456:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 使用调度程序来简化管理任务

• 创建作业、程序和调度

• 监视作业执行

• 使用基于时间的或基于事件的调度来执行调度程序作业

• 使用作业链来执行一系列相关任务

• 使用高级调度程序概念来区分作业的优先级

主要组件和步骤计划作业链高级概念

课程目标

有关各个调度程序组件及其交互的信息,请参阅《Oracle 数据库管理员指南》。

有关 DBMS_SCHEDULER程序包的详细信息,请参阅《Oracle Database PL/SQL Packages and Types Reference》。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 457:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-3

版权所有 © 2009,Oracle。保留所有权利。

简化管理任务

在每月的最后一天执行一系列月终任务

通过实体化视图刷新来复制表数据

每天计算两次表和索引统计信息

每小时生成一个有关无效服务器访问尝试的报表

运行每日作业来备份数据库

文件到达文件系统后立即启动成批装入

消息入队后立即运行出队过程

重建完当前索引后重建另一索引

简化管理任务

Oracle 环境中的许多任务都需要作业调度功能。例行的数据库维护和应用程序逻辑要求定

期调度并运行作业。企业到企业 (B2B) 应用程序要求对其业务事件进行调度。DBA 需要

对指定时间窗口中的定期维护作业进行调度。

Oracle Database 10g 通过数据库调度程序提供高级调度功能,此调度程序是

DBMS_SCHEDULER程序包中函数和过程的集合。可以在任何 SQL 环境中,或者通过

Enterprise Manager 来调用此调度程序。

使用此调度程序,数据库管理员和应用程序开发者可以控制在数据库环境中执行各种任务

的时间和位置。这些任务可能既耗时又复杂;可以使用调度程序来管理和计划这些任务。

可以根据时间或者在发生指定事件时启动调度程序作业,而且调度程序还可以在作业状态

更改时(例如,从 RUNNING变为 COMPLETE)引发事件。您还可以使用为达到组合目标

而链接在一起的一系列已命名的程序。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 458:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-4

版权所有 © 2009,Oracle。保留所有权利。

一个简单作业

内容

时间

一个简单作业

一个作业有两个主要组件:操作(即需要执行的“内容”)和计划(即操作发生的“时间”)。“内容”由幻灯片所示屏幕快照的“Command(命令)”区域中的 job_type和 job_action参数表示。BEGIN sys.dbms_scheduler.create_job( job_name => '"HR"."CREATE_LOG_TABLE_JOB"', job_type => 'PLSQL_BLOCK', job_action => 'begin

execute immediate (''create table session_history( snap_time TIMESTAMP WITH LOCAL TIME ZONE, num_sessions NUMBER)''); end;',

start_date => systimestamp at time zone 'America/New_York', job_class => 'DEFAULT_JOB_CLASS', comments => 'Create the SESSION_HISTORY table', auto_drop => FALSE, enabled => TRUE); END;

作业的定义也包括所需操作应该发生的“时间”。“时间”在“Schedule(计划)”中表示,计划可以基于时间(请参见 start_date参数)或事件,也可以取决于其他作业的结果。本课中讨论了这些选项。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 459:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-5

版权所有 © 2009,Oracle。保留所有权利。

主要组件和步骤

要使用调度程序简化管理任务,请执行以下步骤:

1. 创建程序。

2. 创建并使用计划。

3. 创建并提交作业。

4. 监视作业。

变元

作业

程序 作业属性调度

主要组件和主要步骤

调度程序使用模块化的方法管理 Oracle 数据库中的任务。调度程序通过将任务分解为组

件(例如时间、位置和数据库对象),提供了一种可简便管理数据库环境的方法。调度

程序使用三个基本组件:

• “作业”指定需要执行的内容和执行时间。例如,“内容”可以是 PL/SQL 过程、

本地二进制可执行文件、Java 应用程序或 Shell 脚本。可以将程序(内容)和调度

(时间)指定为作业定义的一部分,也可以改用现有的程序或调度。可以使用作业

的变元来定制其运行时行为。

• “计划”指定执行作业的时间和次数。调度可以基于时间或事件。可以为作业定义

调度,方法是使用一系列日期、一个事件,或两者相结合,以及表示重复间隔的附

加说明。可以单独存储作业的调度,然后对多个作业使用同一个调度。

• “程序”是有关特定可执行文件、脚本或过程的元数据集合。自动作业将执行某个

任务。使用程序,您无需修改作业本身即可修改作业任务或者“内容”。可以定义

程序的变元,允许用户修改任务的运行时行为。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 460:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-6

版权所有 © 2009,Oracle。保留所有权利。

1. 创建程序

BEGINDBMS_SCHEDULER.CREATE_PROGRAM(program_name => 'CALC_STATS2',program_action =>

'HR.UPDATE_HR_SCHEMA_STATS',program_type =>

'STORED_PROCEDURE',enabled => TRUE);

END;/

1. 创建程序

使用 CREATE_PROGRAM过程来创建程序。使用调度程序时,创建程序是一个可选部分。

您还可以对操作进行编码,使其在 CREATE_JOB过程的匿名 PL/SQL 块中执行。通过单

独创建程序,可以定义一次操作,然后在多个作业中重用此操作。使用这种方法,您无须

重新创建 PL/SQL 块即可更改作业的调度。还可以通过指定变元值来定制作业。

要在自己的方案中创建程序,您需要具有 CREATE JOB权限。具有 CREATE ANY JOB权限的用户可以在任何方案中创建程序。

默认情况下,以禁用状态创建程序(除非 enabled参数设为 TRUE)。在将禁用的程序

启用之前,作业无法执行此程序。也可以通过将 enabled的值指定为 TRUE来规定应以

启用状态创建程序。

程序操作是一个字符串,它根据 program_type所设的值来指定过程、可执行文件名或

PL/SQL 匿名块。

如果有称为 UPDATE_HR_SCHEMA_STATS的过程来收集 hr方案的统计信息,则您可以

创建程序来调用此过程。

在 Enterprise Manager 中,请选择“Administration > Programs(管理 > 程序)”并单击

“Create(创建)”按钮。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 461:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-7

版权所有 © 2009,Oracle。保留所有权利。

2. 创建并使用计划

BEGINDBMS_SCHEDULER.CREATE_SCHEDULE(schedule_name => 'stats_schedule',start_date => SYSTIMESTAMP,end_date => SYSTIMESTAMP + 30,repeat_interval =>'FREQ=HOURLY;INTERVAL=1',

comments => 'Every hour');END;/

2. 创建并使用计划

通过使用调度(而不是在作业定义中指定作业的执行次数),您可以管理多个作业的预定

执行,而无须更新多个作业定义。如果修改了调度,则使用该调度的每个作业都将自动使

用新调度。

使用 DBMS_SCHEDULER PL/SQL 程序包中的 CREATE_SCHEDULE过程可以创建计划。

start_date代表计划生效的日期。调度不能引用此日期之前的任何日期。计划将在

end_date后失效。

可以通过为 repeat_interval提供日历表达式来调度重复执行。此日历表达式用于生

成调度的下一日期。计划中不包括 end_date时间之后的日期。

在幻灯片中显示的示例内,创建了一个名为 STATS_SCHEDULE的计划,该计划指定重复

间隔为每隔一个小时、立即启动且持续时间为 30 天。

可以使用 Enterprise Manager 来创建计划,如幻灯片中所示。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 462:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-8

版权所有 © 2009,Oracle。保留所有权利。

3. 创建并运行作业

3. 创建并运行作业

作业结合了调度和要执行内容的说明,以及作业要求的所有附加变元。

程序或“命令”可以是预先创建的 PL/SQL 或 Java 程序、匿名 PL/SQL 块,也可以是从

操作系统的命令行运行的可执行文件。

作业的计划可以是预定义的计划(用 DBMS_SCHDULER.CREATE_SCHEDULE过程创建),

也可以定义为作业创建的一部分。调度指定有关作业运行时间的属性,例如:

• 起始时间,定义作业从哪一时间开始执行;结束时间,指定作业在哪一时间之后

失效且不再进行调度

• 指定作业重复间隔的表达式

• 通过组合现有调度而创建的复杂调度

• 启动作业之前必须满足的条件或状态变化(称为事件)

可以为作业设置许多属性。属性将控制作业的执行方式。

要在 Enterprise Manager 中运行作业,请选择“Administration > Jobs(管理 > 作业)”。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 463:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-9

版权所有 © 2009,Oracle。保留所有权利。

4. 监视作业

SELECT job_name, status, error#, run_durationFROM USER_SCHEDULER_JOB_RUN_DETAILS;

JOB_NAME STATUS ERROR# RUN_DURATION---------------- ------ ------ ------------GATHER_STATS_JOB SUCCESS 0 +000 00:08:20PART_EXCHANGE_JOB FAILURE 6576 +000 00:00:00

4. 监视作业

DBA_SCHEDULER_JOB_RUN_DETAILS视图对于每个作业实例都有特定的一行。每一行中都包含有关该实例的作业执行情况的信息。

[DBA|ALL]_SCHEDULER_JOB_RUN_DETAILS视图中包括以下列:

• LOG_ID:日志条目的唯一标识符

• LOG_DATE:日志条目的时间戳

• OWNER:作业的所有者

• JOB_NAME:作业的名称

• STATUS:作业执行的状态

• ERROR#:遇到的第一个错误的编号

• REQ_START_DATE:作业计划启动的时间

• ACTUAL_START_DATE:作业实际启动的时间

• RUN_DURATION:作业执行的持续时间

• INSTANCE_ID:运行作业的实例

• SESSION_ID:运行作业的会话

• SLAVE_PID:用于执行作业的从属进程的进程 ID • CPU_USED:作业运行所用的 CPU 量• ADDITIONAL_INFO:有关作业运行的附加信息

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 464:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-10

版权所有 © 2009,Oracle。保留所有权利。

使用基于时间的或基于事件的计划

调度

事件时间

主要组件和步骤

> 计划作业链高级概念

使用基于时间的或基于事件的调度

要为作业指定基于时间的计划,可以指定日历表达式或日期时间表达式。

使用日历表达式时,将使用作业的重复间隔和起始日期来计算作业的下一启动时间。使用

日期时间表达式时,指定的表达式确定作业下次应运行的时间。如果没有指定重复间隔,

作业将只在指定的起始日期运行一次。

如果作业使用基于事件的调度,作业将在事件发生时运行。在较高层次上,可以将事件视

为状态的更改。布尔条件的状态从 FALSE更改为 TRUE,或者从 TRUE更改为 FALSE时,

将发生事件。

调度程序使用 Oracle Streams Advanced Queuing (AQ) 来引发和使用事件。

注:调度程序不保证作业能在准确的时间执行,因为可能会由于系统过载而造成资源不

可用。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 465:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-11

版权所有 © 2009,Oracle。保留所有权利。

创建基于时间的作业

示例:

创建一个作业,从今晚起在每晚 11:00 调用备份脚本。

BEGINDBMS_SCHEDULER.CREATE_JOB (job_name=>'HR.DO_BACKUP',job_type => 'EXECUTABLE',job_action => '/home/usr/dba/rman/nightly_incr.sh',start_date=> SYSDATE,repeat_interval=>'FREQ=DAILY;BYHOUR=23',

/* next night at 11:00 PM */comments => 'Nightly incremental backups');

END;/

创建基于时间的作业

使用 DBMS_SCHEDULER程序包的 CREATE_JOB过程来创建作业。默认情况下将以禁用

状态创建作业,仅当显式启用时,这些作业才生效并可以调度。所有作业名称的形式都为:[schema.]name。

应该使用 SYSTIMESTAMP并指定时区,这样当时间因夏时制更改时,作业能够自动调整

其执行时间。

默认情况下,将在当前方案中创建作业。可以通过指定方案的名称在另一个方案中创建作

业,如幻灯片中的示例所示。作业所有者是在其方案中创建作业的用户,而作业创建者是

创建作业的用户。作业将按作业所有者的权限来执行。作业运行时的国家语言支持 (NLS) 环境与创建作业时存在的环境相同。

job_type参数指示作业将要执行的任务的类型。可能的值包括:

• PLSQL_BLOCK:匿名 PL/SQL 块• STORED_PROCEDURE:命名的 PL/SQL、Java 或外部过程

• EXECUTABLE:可以从操作系统命令行执行的命令

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 466:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-12

创建基于时间的作业(续)

job_action参数可以是要运行过程的名称、脚本的名称或操作系统命令的名称,也可

以是匿名的 PL/SQL 代码块,具体取决于 job_type参数的值。

在幻灯片中的示例内,将 job_type指定为 EXECUTABLE,而且 job_action是所需

的外部可执行文件加上任何命令行参数(可选)的操作系统相关完整路径。

外部作业是指在数据库外部运行的作业。所有外部作业均作为低权限的来宾用户运行,这

一点已在数据库管理员配置外部作业支持时确定。因为可执行文件作为低权限的来宾帐户

运行,所以应确保其有权访问必要的文件和资源。大多数(但不是所有)平台都支持外部

作业。对于不支持外部作业的平台,如果将作业或程序的属性创建或设置为类型

EXECUTABLE,将返回错误。

有关使用调度程序配置外部程序运行环境的详细信息,请参阅 Oracle 数据库平台特定的

文档。例如,可能需要参考下列书籍中的一本或多本:

• 《Oracle Database Platform Guide 10g for Windows》• 《Oracle Database Installation Guide for UNIX Systems》• 《Oracle Database Release Notes 10g for AIX-Based Systems》• 《Oracle Database Release Notes 10g for hp HP-UX PA-RISC (64-bit)》

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 467:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-13

版权所有 © 2009,Oracle。保留所有权利。

创建基于事件的调度

要创建基于事件的作业,必须设置:

• 队列说明(应用程序将消息入队以启动作业)

• 事件条件(与 Oracle Streams AQ 规则条件的语法

相同),如果为 TRUE 则启动作业

Oracle Database 10g

调度程序

事件 ADT(抽象数据类型)

队列应用程序

创建基于事件的调度

可以基于事件触发作业。应用程序能够通知调度程序启动作业,方法是将消息入队到

Oracle Streams AQ 队列中。以这种方法启动的作业称为基于事件的作业。要创建基于

事件的作业,必须用 CREATE_JOB过程设置以下两个附加属性:

• queue_spec:包含队列名称的队列说明,应用程序在此将消息入队以引发作业

启动事件;对于安全队列,则为 <queue_name>、<agent_name>对。

• event_condition:基于消息属性的条件表达式,此表达式的求值结果必须为

TRUE,消息才能启动作业。此表达式必须使用 Oracle Streams AQ 规则条件的语法。

只要消息有效负载是用户定义的对象类型,并且将表达式中的对象属性加了

tab.user_data前缀,就可以在表达式中包含用户数据属性。

可以将 queue_spec和 event_condition指定为内嵌作业属性,或者用这两个属性

创建基于事件的计划,然后创建一个引用此计划的作业。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 468:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-14

版权所有 © 2009,Oracle。保留所有权利。

用 Enterprise Manager 创建基于事件的计划

使用 Oracle Enterprise Manager 创建基于事件的调度

使用“Create Schedule(创建调度)”页,可以从基于时间的标准调度和基于事件的调度

之中选择一种来创建。如果选择基于事件的调度,则界面将更改,然后您可以指定队列名、

代理名和事件条件以及其它调度属性。

附注

每次发生匹配 event_condition的事件时,调度程序都会运行基于事件的作业。但是,

将忽略作业已经运行后发生的事件;事件将被使用,但不会触发作业再次运行。

参考:

• 有关如何创建队列和入队消息的信息,请参阅《Oracle Streams Advanced Queuing User’s Guide and Reference》。

• 有关 Oracle Streams AQ 规则和事件条件的详细信息,请参阅《Oracle Database PL/SQL Packages and Types Reference 10g Release 2》手册中的

DBMS_AQADM.ADD_SUBSCRIBER过程。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 469:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-15

版权所有 © 2009,Oracle。保留所有权利。

创建基于事件的作业

示例:创建一个作业,如果成批装入的数据文件在上午 9:00 之前到达文件系统,则运行此作业。

BEGINDBMS_SCHEDULER.CREATE_JOB (job_name=>'ADMIN.PERFORM_DATA_LOAD',job_type => 'EXECUTABLE',job_action => '/home/usr/dba/rman/report_failure.sh',start_date => SYSTIMESTAMP,

event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' and tab.user_data.event_timestamp < 9 ',

queue_spec => 'HR.LOAD_JOB_EVENT_Q');END;

event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' and tab.user_data.event_timestamp < 9 ',queue_spec => 'HR.LOAD_JOB_EVENT_Q');

创建基于事件的作业

要将事件信息指定为作业属性,请使用 CREATE_JOB的替代语法,其中包括

queue_spec和 event_condition属性。作业可以包含作为作业属性的内嵌事件信息,

或可以通过指向事件调度来指定事件信息。幻灯片中显示的示例使用内嵌的基于事件的

计划。

幻灯片中的示例显示了一个作业,只要有文件在上午 9:00 前到达操作系统,就会启动此

作业。假定消息有效负载是一个对象,该对象包括四个名称分别为 object_owner、object_name、event_type和 event_timestamp的属性。

本例使用的是用户定义的事件。因此,文件在到达了文件系统后,必须有一个程序或过程

将包含正确信息的事件对象类型入队到指定的事件队列中,才能启动此作业。HR.LOAD_JOB_EVENT_Q队列必须与事件对象类型相同,而此对象用于将事件的发生通

知调度程序。即,HR.LOAD_JOB_EVENT_Q队列必须是类型化队列,其中类型包括四个

名称分别为 object_owner、object_name、event_type和 event_timestamp的

属性。

有关如何创建队列和入队消息的详细信息,请参阅《Oracle Streams Advanced Queuing User’s Guide and Reference》文档。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 470:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-16

版权所有 © 2009,Oracle。保留所有权利。

基于事件的调度事件类型:

• 用户或应用程序生成的事件

• 调度程序生成的事件

由调度程序作业引发的事件:

• JOB_STARTED

• JOB_SUCCEEDED • JOB_FAILED

• JOB_BROKEN

• JOB_COMPLETED

• JOB_STOPPED

引发事件的示例:DBMS_SCHEDULER.SET_ATTRIBUTE('hr.do_backup', 'raise_events', DBMS_SCHEDULER.JOB_FAILED);

• JOB_SCH_LIM_REACHED

• JOB_DISABLED

• JOB_CHAIN_STALLED• JOB_ALL_EVENTS

• JOB_RUN_COMPLETED

• JOB_OVER_MAX_DUR

基于事件的调度

可以创建一个作业,以直接引用事件作为启动作业的方式,而不是向作业分配调度。事件

类型有两种:

• 用户或应用程序生成的事件:应用程序可以引发由调度程序使用的事件。调度程序

通过启动作业来回应事件。此类事件的示例:正在运行的作业完成;文件到达文件

系统;数据库内的帐户被锁定;并且库存到达低阈值。

• 调度程序生成的事件:调度程序可以引发事件来指示在调度程序自身内发生的状态

更改。例如,在作业启动时、作业完成时、作业超出其分配的运行时间时等条件下,

调度程序均可以引发事件。事件的使用者是一个应用程序,该应用程序将执行某个

操作以便对事件做出响应。

可以配置作业,使调度程序在作业的状态更改时引发事件。可以通过设置 raise_events作业属性来完成此操作。默认情况下,在变更作业的 raise_events属性之前,作业不

会引发任何状态更改事件。要变更此属性,必须先使用 CREATE_JOB过程创建作业,然后

使用 SET_ATTRIBUTE过程修改此属性的默认值。本例显示 hr.do_backup作业已变更,

使得该作业在失败时引发事件。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 471:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-17

基于事件的调度(续)

为作业启用作业状态更改事件后,调度程序将引发这些事件,方法是将消息入队到默认的

事件队列 SYS.SCHEDULER$_EVENT_QUEUE中。

默认的调度程序事件队列是一个安全队列。可能需要配置队列,才能允许特定用户在此队

列上执行操作,具体取决于应用程序。有关安全队列的信息,请参阅《Oracle Streams Concepts and Administration》文档。

默认的调度程序事件队列主要用于调度程序生成的事件。建议不要将此队列用于用户应用

程序或用户定义的事件。

作业的运行时间已达到了其设置所允许的 长

时间。

JOB_OVER_MAX_DUR

达到了作业计划的限制。未启动作业,因为启动作业过程中的延迟超出了 SCHEDULE_LIMIT作

业属性的值。

JOB_SCH_LIM_REACHED

作业由调度程序禁用,或者由对

SET_ATTRIBUTE过程的调用禁用。

JOB_DISABLED

运行链的作业将置于 CHAIN_STALLED状态。如

果没有正在运行或计划运行的步骤,并且链的

EVALUATION_INTERVAL设为 NULL,则正在运

行的链将停止。该链将等待人工干预。

JOB_CHAIN_STALLED

JOB_ALL_EVENTS不是事件,而是一个常数,

使您能够轻松启用所有事件。

JOB_ALL_EVENTS

作业运行已完成。该作业可能已失败、已成功,

或者被停止。

JOB_RUN_COMPLETED

作业由对 STOP_JOB过程的调用停止。JOB_STOPPED

作业已完成,因为该作业达到了 MAX_RUNS或

END_DATE作业属性所设置的值。

JOB_COMPLETED

作业被禁用并更改为 BROKEN状态,因为该作业

超出了由 MAX_FAILURES作业属性定义的失败

次数。

JOB_BROKEN

作业因引发错误或异常终止而失败。JOB_FAILED

作业已成功完成。JOB_SUCCEEDED

作业已启动。JOB_STARTED

说明事件类型

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 472:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-18

版权所有 © 2009,Oracle。保留所有权利。

创建复杂调度

INCLUDE EXCLUDE INTERSECT

创建复杂调度

调度是数据库中的对象。创建调度时,将自动保存这些调度。可以使用调度的组合来创建

更复杂的调度。通过组合调度,可以向日历表达式中添加特定日期,或者从日历表达式中

排除特定日期。

定义调度的重复间隔时可以使用下列选项:

• INCLUDE:向日历表达式结果中添加日期列表

• EXCLUDE:从日历表达式结果中删除日期列表

• INTERSECT:只使用两个或多个计划公用的日期

创建要组合使用的计划时,可以对日期列表进行编码,方法是包含形式为 [YYYY]MMDD的硬编码日期,或者包含用 CREATE_SCHEDULE过程创建的已命名计划。例如,可以对

调度的重复间隔使用下列值来指定日期列表:

0115,0315,0325,0615,quarter_end_dates,1215

此字符串表示日期 1 月 15 日、3 月 15 日、3 月 25 日、6 月 15 日、12 月 15 日以及

QUARTER_END_DATES计划所指定的日期列表。

如果未在调度中指定硬编码日期的可选年份,则包括每一年的这些日期。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 473:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-19

版权所有 © 2009,Oracle。保留所有权利。

创建作业链

1. 创建链对象。

2. 定义链步骤。

3. 定义链规则。

4. 启动链:

– 启用链。

– 创建指向链的作业。

作业

作业链

主要组件和步骤计划

> 作业链高级概念

创建作业链

链是为达到组合目标而链接在一起的一系列已命名的程序。这被称为“相关性调度”。

链的示例如下所示:

运行程序 A 然后运行程序 B,如果程序 A 和程序 B 成功完成,则只运行程序 C,否则

运行程序 D。

一个相关程序链中的每个位置都称为一个步骤。

要创建并使用链,请依次完成下列步骤。如果没有特别说明,则提到的所有过程都是

DBMS_SCHEDULER程序包的一部分。

1. 使用 CREATE_CHAIN过程创建链。可以选择用方案名称来限定链名称(如

myschema.myname)。

2. 定义(一个或多个)链步骤。定义步骤时需要命名此步骤并指定步骤中发生的操作。

每一步都可以指向下列项之一:

- 程序

- 另一个链(嵌套链)

- 事件

通过调用 DEFINE_CHAIN_STEP过程来定义指向程序或嵌套链的步骤。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 474:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-20

创建作业链(续)

(定义步骤,续)

要定义等待事件发生的步骤,请使用 DEFINE_CHAIN_EVENT_STEP过程。过程

变元可以指向事件调度,也可以包括内嵌队列说明和事件条件。指向事件的步骤会

一直等待,直到指定事件被引发。如果此事件发生,则步骤将成功完成。

3. 创建链对象后,请定义链规则。链规则定义各步骤运行的时间,并定义各步骤之间

的相关性。每个规则都有一个条件和操作:

- 如果条件的求值结果为 TRUE,则执行操作。条件中可以包含在 SQL WHERE子句中有效的任何语法。条件通常基于前面一个或多个步骤的结果。例如,您

可能希望使某步骤在前两个步骤全部成功的情况下运行,而使另一个步骤在前

两个步骤未全部成功的条件下运行。

- 操作指定在触发规则时要执行的内容。

典型操作是运行指定的步骤。可能的操作包括启动或停止步骤。还可以选择结

束作业链的执行、返回一个值或者返回步骤名和错误代码。

添加到链中的所有规则将共同确定链的整体行为。在作业启动时以及在每个步骤结

束时,将对所有规则求值以确定接下来发生的操作。请使用 DEFINE_CHAIN_RULE过程向链中添加规则。向链中添加每个规则时均需要调用一次此过程。

4. 启动链包括两个操作:

- 用 ENABLE过程启用链。(链总是以禁用状态创建,因此可以在任何作业执行

该链之前向其中添加步骤和规则。)启用一个已启用的链并不会返回错误。

- 要运行链,必须创建类型为“CHAIN”的作业。作业操作必须引用链名称。可

以为此作业使用基于事件的调度或基于时间的调度。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 475:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-21

版权所有 © 2009,Oracle。保留所有权利。

链的示例

BULK_LOAD_CHAIN

Do_bulk_load作业 Load_data_evt

结束

Rebuild_indx调度Stop_when_

disk_full_evt

Run_reports (HR.GEN_REPORTS)

开始1 2

5 3

4

相关性调度

链的示例

在此链示例中,请考虑在批量数据加载期间出现的所有任务和条件。首先,必须有要加载

的数据。然后加载数据,同时观察文件系统以确保在加载期间不会发生空间不足的情况。

在数据加载完成后,需要重建在更新后的表上定义的索引。然后针对新加载数据运行报表。

这是一个相关性调度的示例。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 476:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-22

版权所有 © 2009,Oracle。保留所有权利。

1. 创建链对象

Create_job_chain_1.jpg

12345

1. 创建链对象

在“Administration(管理)”页的“Scheduler(调度程序)”区域中,选择“Chains(链)”。可以在“Scheduler Chains(调度程序链)”页上创建或编辑作业链。必须在

“Create Chain(创建链)”页上输入作业链的名称和所有者。然后可以选择是否启用新

创建的作业链。可以在以后启用链。

PL/SQL 示例:

DBMS_SCHEDULER.CREATE_CHAIN ( chain_name => 'bulk_load_chain', rule_set_name => NULL, evaluation_interval => NULL, comments => 'Load data and run reports');

命名作业链并提供说明(可选)后,即可输入作业链步骤,每次输入一个。可以创建以下

类型的作业链步骤:

• 运行程序的步骤 (PROGRAM) • 是另一个作业链的步骤 (SUBCHAIN) • 使用已存储的、基于事件的计划的步骤 (EVENT_SCHEDULE)

一个步骤中只能运行一个程序。必须先定义链中的每个步骤,然后才能启用并使用链。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 477:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-23

版权所有 © 2009,Oracle。保留所有权利。

2. 定义链步骤

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP ( chain_name => 'bulk_load_chain', step_name => 'load_data_evt', event_condition => 'tab.user_data.object_owner = ''HR'' and tab.user_data.object_name = ''DATA.TXT'' and tab.user_data.event_type = ''FILE_ARRIVAL'' ',

queue_spec => 'HR.LOAD_JOB_EVENT_Q'); DBMS_SCHEDULER.DEFINE_CHAIN_STEP (

chain_name => 'bulk_load_chain', step_name => 'do_bulk_load', program_name => 'hr.load_data_prog);

DBMS_SCHEDULER.DEFINE_CHAIN_STEP ( chain_name => 'bulk_load_chain', step_name => 'rebuild_indx', program_name => 'hr.rebuild_indexes');

1

2

3

2. 定义链步骤

1. load_data_evt步骤使用基于事件的计划。load_data_evt步骤等待将

FILE_ARRIVAL事件放置在 HR.LOAD_JOB_EVENT_Q中后执行。此事件将通知调

度程序:DATA.TXT数据文件已经到达文件系统。由于 queue_spec参数中不包含

代理名,因此指定的队列不是安全队列。

2. do_bulk_load步骤执行向方案表中批量加载数据的操作。

3. rebuild_indx步骤在数据加载后为表重建索引。

4. run_reports步骤针对新数据运行报表。HR.GEN_REPORTS是另一个作业链。

DBMS_SCHEDULER.DEFINE_CHAIN_STEP ( chain_name => 'bulk_load_chain', step_name => 'run_reports', program_name => 'hr.gen_reports');

5. 如果系统的磁盘空间不足,则 stop_when_disk_full_evt步骤将结束链执行。

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP ( chain_name => 'bulk_load_chain', step_name => 'stop_when_disk_full_evt' event_schedule_name => 'disk_full_sched')

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 478:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-24

版权所有 © 2009,Oracle。保留所有权利。

3. 定义链规则

Create_job_chain_2.jpg

3. 定义链规则

指定了作业链步骤之后,可以为作业链创建规则。链规则定义各步骤运行的时间,并定义

各步骤之间的相关性。每个规则都有一个条件和一个操作。如果条件的求值结果为 TRUE,则执行操作。条件中还可以包含调度程序的链语法。

要在 EM 中创建规则,请在“Rules(规则)”区域中单击“Add(添加)”按钮。

输入规则条件时,应该在单引号中输入字符串。GUI 接口将在执行命令时根据需要自动

转义引号。

PL/SQL 示例

DBMS_SCHEDULER.DEFINE_CHAIN_RULE ( chain_name => 'bulk_load_chain', condition => 'TRUE, action => 'START load_data_evt,stop_when_disk_full_evt', rule_name => 'dataload_rule1', comments => 'start the chain');

注:此 PL/SQL 示例与 EM 示例的不同之处在于,此示例使用的是用户定义的规则名,

而 EM 示例显示默认生成的名称。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 479:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-25

版权所有 © 2009,Oracle。保留所有权利。

4. 启动链

BEGIN DBMS_SCHEDULER.ENABLE ('bulk_load_chain');

END; /

BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'bulk_load_chain_job', job_type => 'CHAIN', job_action => 'bulk_load_chain', repeat_interval => 'freq=daily;byhour=7;

byminute=5;bysecond=0', enabled => TRUE);

END; /

4. 启动链

完成创建和修改作业链后,请调用 ENABLE过程来启用该链。

要运行链,必须创建作业。将 job_type设置为“CHAIN”,并且将作业操作设置为要

执行的作业链的名称。其余变元的配置方式与在其它任何类型作业中的配置方式相同。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 480:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-26

版权所有 © 2009,Oracle。保留所有权利。

监视作业链

[DBA | ALL | USER]_SCHEDULER_CHAINS

[DBA | ALL | USER]_SCHEDULER_CHAIN_RULES

[DBA | ALL | USER]_SCHEDULER_CHAIN_STEPS

[DBA | ALL | USER]_SCHEDULER_RUNNING_CHAINS

监视作业链

ALL_SCHEDULER_CHAINS视图中包含下列有关信息:链所有者和名称;链的规则集名

称和规则集所有者;规则数;步骤数;是否启用链;链是否使用求值间隔;以及链是否

使用用户定义的规则集。

ALL_SCHEDULER_CHAIN_RULES视图显示下列信息:为其定义规则的链的名称和所有

者;规则名、所有者和条件;以及在条件求值结果为 TRUE时要执行的操作。

ALL_SCHEDULER_CHAIN_STEPS视图显示下列信息:为其创建步骤的链的名称和所有

者;步骤名;程序名和所有者;是否应跳过步骤;以及步骤在完成后是否应暂停。

ALL_SCHEDULER_RUNNING_CHAINS视图中包含下列信息:链名称和所有者;指向链

的作业的名称和所有者;链中步骤的名称及其当前状态;链步骤遇到的错误;链步骤开始

和结束的时间;完成步骤所用的时间;以及运行步骤的作业的名称(如果该作业当前正在

执行)。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 481:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-27

版权所有 © 2009,Oracle。保留所有权利。

高级调度程序概念主要组件和步骤计划作业链

> 高级概念

作业程序

变元 变元

调度

事件时间

作业类 窗口作业链

资源使用者组 窗口组资源计划

高级调度程序概念

使用高级调度程序概念,可以对调度的各个方面进行更高级别的控制,例如区分作业的

优先级。下面汇总了这些组件,并在后面的几个幻灯片中进行了详细讨论。

• “窗口”由定义好起始时间和结束时间的时间间隔表示,用于在不同时间激活不同

的资源计划。这使您可以更改某一时段(如一天或销售年度内的某一时间段)的资源

分配。

• “窗口组”表示一系列窗口,使用它可以更轻松地管理窗口。可以将窗口或窗口组

用于调度作业,以确保作业仅当窗口及其关联资源计划有效时运行。

• “作业类”定义作业的类别,这些作业共享公用资源使用要求及其他特性。作业类

将作业分组到更大的实体中。

• 与作业类关联的“资源使用者组”确定分配给作业类中作业的资源。

• 使用“资源计划”,用户可以在各资源使用者组中区分资源(特别是 CPU)的优先级。

注:有关资源使用者组和资源计划的详细信息,请参阅“管理资源”一课。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 482:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-28

版权所有 © 2009,Oracle。保留所有权利。

创建作业类

EXECUTE DBMS_SCHEDULER.CREATE_JOB_CLASS( -job_class_name => 'ADMIN_JOBS', -resource_consumer_group => 'DAYTIME_JOBS', -logging_level => DBMS_SCHEDULER.LOGGING_OFF);

创建作业类

可以使用 DBMS_SCHEDULER程序包的 CREATE_JOB_CLASS过程来创建作业类。类始

终属于 sys方案。要创建类,必须具有 MANAGE SCHEDULER权限。

创建了作业类之后,可以在创建作业时或者在已创建作业之后,将作业指定为此作业类的

成员,方法是使用 DBMS_SCHEDULER程序包中的 SET_ATTRIBUTE过程。

如果使用的是 Oracle Enterprise Manager Database Control,请使用“Job Class(作业类)”

页来创建或编辑要分配给作业的作业类。输入作业类的名称以及与此作业类关联的资源

使用者组的名称。可以使用搜索功能选择资源使用者组。

存在一个名为 DEFAULT_JOB_CLASS的默认作业类,此作业类是随数据库一起创建的。

如果作业未与任何作业类关联,则该作业属于此默认作业类。

如果创建作业类时未指定资源使用者组,则作业类将映射到

DEFAULT_CONSUMER_GROUP资源使用者组。启用了资源管理器后,对于默认作业类中

的作业或者与默认资源使用者组关联的作业类中的作业,可能无法分配足够的资源以完成

各自的任务。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 483:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-29

版权所有 © 2009,Oracle。保留所有权利。

创建窗口

为十二月份创建一个使用 END_OF_YEAR 资源计划的窗口,

并且此窗口在每晚从东部标准时间 (EST) 下午 6:00 到第二天

上午 6:00 有效。

BEGINDBMS_SCHEDULER.CREATE_WINDOW(window_name => 'DEC_NIGHTS',resource_plan => 'END_OF_YEAR',start_date => '01-DEC-03 06.00.00 PM EST',repeat_interval => 'FREQ=DAILY; BYHOUR=18',duration => '0 12:00:00',end_date => '31-DEC-03 06.00.00 AM EST',comments => 'Every day at 6:00 PM');

END;/

创建窗口

作业的优先级需要随时间而变化。例如,在夜间可能要将大部分数据库资源分配给数据仓

库加载作业,而在白天则将较大一部分资源分配给应用程序作业。要实现这一点,可以使

用调度程序窗口来更改数据库资源计划。

窗口的用途是指定在特定时段内有效的资源计划。窗口由时间间隔来表示,例如“从每天

上午 8:00 到下午 6:00”。循环时间窗口定义为指定了起始日期和持续时间(分钟)模式

的计划。

有效的窗口处于打开状态。在任意给定时间内,只能存在一个有效的窗口。在幻灯片显示

的示例中:

• 窗口在 2003 年 12 月 1 日下午 6:00 打开(生效)。

• 指定为 INTERVAL DAY TO SECOND数据类型的持续时间指示窗口在 2003 年 12 月2 日上午 6:00 关闭。

• 将使用 REPEAT_INTERVAL的值计算窗口下次打开的时间,求值结果为 2003 年12 月 2 日下午 6:00。

• 在 2003 年 12 月 31 日上午 6:00,窗口关闭并被禁用。如果 DEC_NIGHTS窗口已打

开,分配给作业的资源将由 END_OF_YEAR资源计划中指定的准则来确定。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 484:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-30

版权所有 © 2009,Oracle。保留所有权利。

区分窗口内作业的优先级

日期时间窗口

APPL_JOBS

作业 1 作业 2

ADMIN_JOBS

作业 4 作业 5其他人

作业 3

2作业 5

5作业 4

3作业 3

2作业 2

1作业 1

优先级作业

区分窗口内作业的优先级

在一个数据库中创建多个作业时,需要根据业务需求调整作业处理,并指定具有 高优先

级的作业。对于特定窗口,可能有多种类别的作业在运行,每一类都具有各自的优先级。

作业类用于将作业分类。作业类映射到资源使用者组。有效的资源计划确定分配给每个资

源使用者组(进而分配给每个作业类)的资源。

可以通过两个级别来区分作业的优先级:类级别和作业级别。

• 首先是在类级别区分优先级,使用的是资源计划。完全根据类资源分配情况来区分

属于不同类的作业的优先级。

• 其次是在类内区分优先级,使用的是作业的作业优先级属性。

仅当属于同一类的两个作业同时启动时,才会考虑优先级。优先级较高的作业先启动。

不能确保不同作业类中的作业按其优先级运行。例如,APPL_JOBS作业类中的高优先级

作业不一定在 ADMIN_JOBS作业类中的低优先级作业之前启动,即使它们共享同一个计

划时也是如此。如果 APPL_JOBS作业类有较低级别的资源可用,则该类中的高优先级作

业必须等待资源可用,即使在其他作业类中存在可用于低优先级作业的资源时也是如此。

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 485:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-31

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,您应该已经学会:

• 使用调度程序来简化管理任务

• 创建作业、程序和调度

• 监视作业执行

• 使用基于时间的或基于事件的调度来执行调度程序作业

• 使用作业链来执行一系列相关任务

• 使用高级调度程序概念来区分作业的优先级

厦门微思ORACLE授权培训中心

http://www.xmws.cn

Page 486:  · 版权所有© 2009,Oracle。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以复制和打印本

Oracle Database 10g:数据库管理 - 课堂练习 II 14-32

版权所有 © 2009,Oracle。保留所有权利。

练习概览:使用调度程序自动执行任务

本练习包含以下主题:

• 创建可运行数据库之外的程序的作业

• 创建程序和调度

• 创建使用程序和调度的作业

• 变更作业的程序和计划,并观察作业的行为变化

• 监视作业运行情况

练习概览

注:此练习同时使用 Enterprise Manager Database Control 和 SQL*Plus。

厦门微思ORACLE授权培训中心

http://www.xmws.cn