Oracle9i 数据库管理基础II(学生指南.第2册)


Oracle9i 数据库管理基础 II 学生指南 • 第 2 册 D11297CN11 产品版 1.1 2002 年 3 月 D34486 版权所有 © Oracle Corporation,2000,2001。保留所有权利。 本文档包含 Oracle 公司的专有权信息;根据许可证协议提供该文档,该许可证协议含 有对使用和公开本文档的各种限制;本文档还受到版权法的保护。严禁对本文档所涉及 的软件进行逆向工程设计。如果将本文档交付给美国国防部下属的某个政府机构,则根 据 “受限制权利” 进行提供并且必须符合以下规定: 受限制权利说明 对商用计算机软件的限制同样适用于政府的使用、复制或泄露行为,并且根据联邦法 律,本软件将被视为 “受限制权利” 软件,相关规定请参见 DFARS 252.227-7013《技 术数据和计算机软件中的权利》(1988 年 10 月)中的段落 (c)(1)(ii)。 未经 Oracle 公司事先明确的书面许可,不得以任何形式或通过任何途径复制本文档或 文档的任何部分。任何其它复制行为都被视为对版权法的触犯,违者可能须负民事和 (或)刑事责任。 如果将本文档交付给美国国防部之外的某个政府机构,则根据 “受限制权利” 进行提供, 该权利在 FAR 52.227-14《数据权利-通则》(包括 1987 年 6 月的《附则》III)中有 所规定。 本文档中的信息如有更改,恕不另行通知。如果您在此文档中发现任何问题,请书面 通知 Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065。Oracle 公司不保证此文档中没有错误。 Oracle 和所有对 Oracle 产品的引用都是 Oracle 公司的商标或注册商标。 所有其它产品或公司名称仅用于标识,可能是其各自所有者的商标。 作者 Donna Keesling James Womack 技术撰稿人和审稿人 Lance Ashdown Tammy Bednar Louise Beijer Harald van Breederode Howard Bradley Senad Dizdar Steven George Joel Goodman Scott Gossett John Hibbard Stefan Lindblad Roman Niehoff Howard Ostrow Radhanes Petronilla Maria Jesus Senise Garcia Peter Sharman Ranbir Singh Sergey Stetsenko John Watson Steven Wertheimer Junichi Yamazaki 出版商 John B Dawson 前言 1 联网概览 目标 1-2 网络环境的挑战 1-3 简单网络:两层 1-5 简单网络到复杂网络:N 层 1-6 复杂的网络 1-7 Oracle9i 联网解决方案 1-8 连接性:Oracle Net Services 1-9 连接性:使用 IIOP 和 HTTP 连接数据库 1-11 目录命名 1-12 目录服务:Oracle Internet Directory 1-14 可伸缩性:Oracle Shared Server 1-15 可伸缩性:连接管理器 (Connection Manager) 1-16 安全性:高级安全性 (Advanced Security) 1-18 高级安全性 (Advanced Security) 加密 1-19 安全性:Oracle Net Services 和防火墙 1-20 可访问性:异种服务 1-21 可访问性:外部过程 1-22 Oracle Net Configuration Assistant 1-23 Oracle Net Manager 1-24 小结 1-25 2 Oracle Net 体系结构 目标 2-2 Oracle Net 连接 2-3 客户机-服务器应用程序连接:无中间层 2-4 Web 客户机应用程序连接 2-6 Web 客户机应用程序连接:Web 服务器中间层 2-7 Web 客户机应用程序连接:Java 应用程序客户机 2-8 Web 客户机应用程序连接:Java 小程序客户机 2-9 Web 客户机应用程序连接:无中间层 2-10 连接概念与术语 2-12 Oracle Net 配置模型 2-14 Oracle Net 配置文件 2-15 小结 2-17 3 Oracle Net 服务器端基本配置 目标 3-2 监听程序进程 3-3 连接方法 3-4 衍生、继承和直接传送连接 3-5 重定向会话 3-7 服务配置和注册 3-9 目录 iii 静态服务注册:listener.ora 文件 3-12 静态服务注册:创建监听程序 3-15 配置服务 3-16 事件记录与跟踪 3-17 动态服务注册:配置注册 3-18 动态服务注册:向监听程序注册信息 3-19 为 Oracle9i JVM 配置监听程序:IIOP 和 HTTP 3-20 “监听程序控制实用程序” (Listener Control Utility, LSNRCTL) 3-22 LSNRCTL 命令 3-23 LSNRCTL SET 和 SHOW 修改符 3-25 小结 3-27 练习 3 概览 3-28 4 命名方法配置 目标 4-2 命名方法概览 4-3 主机命名 4-4 主机命名:客户端 4-5 主机命名:服务器端 4-6 主机命名示例 4-7 命名方法配置 4-8 选择主机命名方法 4-9 本地命名 4-10 选择本地命名方法 4-11 配置本地网络服务名 4-12 处理网络服务名 4-13 指定 Oracle 数据库的版本 4-14 数据库服务名 4-15 网络协议 4-16 主机名和监听程序端口 4-17 测试连接 4-18 连接测试的结果 4-19 网络服务名 4-20 保存网络服务名 4-21 生成的文件:tnsnames.ora 4-22 生成的文件:sqlnet.ora 4-24 排除客户端故障 4-25 小结 4-27 练习 4 概览 4-28 5 Oracle Shared Server 的使用和配置 目标 5-2 服务器配置 5-3 专用服务器进程 5-4 Oracle Shared Server 5-5 Oracle Shared Server 的优点 5-7 iv 同时使用专用服务器和 Oracle Shared Server 5-8 连接 5-9 处理请求 5-10 SGA 和 PGA 5-12 配置 Oracle Shared Server 5-13 DISPATCHERS 5-14 MAX_DISPATCHERS 5-16 SHARED_SERVERS 5-18 MAX_SHARED_SERVERS 5-20 CIRCUITS 5-21 SHARED_SERVER_SESSIONS 5-22 相关参数 5-23 验证设置 5-25 动态视图 5-27 小结 5-28 练习 5 概览 5-29 6 备份和恢复概览 目标 6-2 备份和恢复问题 6-3 故障类别 6-4 语句故障的原因 6-6 语句故障的解决方法 6-7 用户进程故障的原因 6-8 用户进程故障的解决方法 6-9 可能的用户错误 6-10 用户错误的解决方法 6-11 例程故障的原因 6-12 从例程故障进行恢复 6-13 介质故障的原因 6-15 介质故障的解决方法 6-16 定义备份和恢复策略 6-17 业务要求 6-18 操作要求 6-19 技术方面的考虑因素 6-21 灾难恢复问题 6-23 小结 6-25 7 例程和介质恢复结构 目标 7-2 概览 7-3 大型共享池 7-6 数据库缓冲区高速缓存、DBWn 和数据文件 7-8 重做日志缓冲区、LGWR 和重做日志文件 7-10 v 多元备份的重做日志文件 7-13 Enterprise Manager 中的重做日志文件 7-15 检查点 7-16 检查点类型 7-17 CKPT 进程 7-18 多元备份的控制文件 7-19 Enterprise Manager 中的控制文件 7-21 ARCn 进程和归档日志文件 7-22 数据库同步 7-24 例程恢复的各个阶段 7-25 优化崩溃恢复和例程恢复的性能 7-27 优化例程恢复和崩溃恢复的持续时间 7-28 影响检查点的初始化参数 7-29 控制例程崩溃恢复时间 7-31 V$INSTANCE_RECOVERY 7-32 优化崩溃恢复和例程恢复的阶段 7-34 优化前滚阶段 7-35 优化回退阶段 7-36 快速启动按需回退 7-37 快速启动并行回退 7-38 控制快速启动并行回退 7-39 监视并行回退 7-40 小结 7-41 练习 7 概览 7-42 8 配置数据库归档模式 目标 8-2 重做日志历史记录 8-3 NOARCHIVELOG 模式 8-4 ARCHIVELOG 模式 8-6 更改归档模式 8-8 设置归档模式 8-10 自动和手动归档 8-11 启用自动归档 8-13 指定多个 ARCn 进程 8-14 停止或启动附加归档进程 8-15 在例程启动时启用自动归档 8-16 在例程启动后启用自动归档 8-17 禁用自动归档 8-18 手动归档联机重做日志文件 8-19 手动归档重做日志文件 8-21 指定归档日志目标 8-22 指定多个归档日志目标 8-23 LOG_ARCHIVE_DEST_n 选项 8-24 指定本地目标的最小数量 8-25 vi 控制归档到目标 8-27 指定文件名格式 8-28 获取归档日志信息 8-29 小结 8-32 9 Oracle Recovery Manager 概览和配置 目标 9-2 恢复管理器功能 9-3 恢复管理器组件 9-5 使用 “备份管理” 向导 9-7 RMAN 资料档案库:使用控制文件 9-8 分配通道 9-9 自动分配通道 9-11 使用 OEM 分配通道 9-12 手动分配通道 9-13 介质管理 9-15 使用 RMAN 的连接类型 9-17 不使用恢复目录进行连接 9-18 其它 RMAN 命令行参数 9-20 恢复管理器模式 9-21 RMAN 命令 9-23 作业命令示例 9-25 RMAN 配置设置 9-26 CONFIGURE 命令 9-27 SHOW 命令 9-29 LIST 命令操作 9-30 LIST 命令 9-31 REPORT 命令 9-32 REPORT NEED BACKUP 命令 9-33 恢复管理器程序包 9-34 使用 RMAN 的注意事项 9-35 小结 9-37 练习 9 概览 9-38 10 用户管理的备份 目标 10-2 术语 10-3 用户管理的备份和恢复 10-5 查询视图以获得数据库文件信息 10-6 获得数据库文件信息 10-8 备份方法 10-9 一致的整体数据库备份(关闭的数据库的备份) 10-10 进行一致的整体数据库备份的优点 10-11 进行一致的整体数据库备份 10-13 打开的数据库的备份 10-15 vii 进行打开的数据库的备份的优点 10-16 打开的数据库的备份的要求 10-17 打开的数据库的备份的选项 10-18 进行联机表空间的备份 10-19 结束联机表空间备份 10-20 备份状态信息 10-21 联机表空间备份过程中出现故障 10-23 结束联机备份 10-24 只读表空间备份 10-26 只读表空间备份问题 10-27 与记录和不记录选项相关的备份问题 10-28 手动备份控制文件 10-29 备份初始化参数文件 10-31 使用 DBVERIFY 实用程序验证备份 10-32 DBVERIFY 命令行界面 10-33 小结 10-35 练习 10 概览 10-36 11 RMAN 备份 RMAN 备份概念 11-3 恢复管理器备份 11-4 备份集 11-5 备份集的特性 11-6 备份片 11-7 备份片大小 11-8 BACKUP 命令 11-9 创建备份集 11-12 多元备份集 11-13 备份集的并行化 11-14 双重备份集 11-16 备份集的备份 11-17 归档重做日志文件的备份 11-18 归档重做日志的备份集 11-19 备份约束 11-20 映像副本 11-21 映像副本的特性 11-22 创建映像副本 11-23 映像副本示例 11-24 COPY 命令 11-25 映像复制并行性 11-26 复制整个数据库 11-27 制作增量备份 11-28 差异增量备份的示例 11-30 累积增量备份的示例 11-32 viii 在 NOARCHIVELOG 模式下进行备份 11-33 自动备份 RMAN 控制文件 11-34 备份和映像副本的标记 11-36 RMAN 动态视图 11-37 监视 RMAN 备份 11-38 其它 RMAN 问题 11-40 小结 11-42 练习 11 概览 11-43 12 用户管理的完全恢复 目标 12-2 介质恢复 12-3 恢复步骤 12-4 使用用户管理的过程而执行的还原和数据文件介质恢复 12-5 ARCHIVELOG 模式和 NOARCHIVELOG 模式 12-6 在 NOARCHIVELOG 模式下进行恢复 12-7 在 NOARCHIVELOG 模式下使用重做日志文件备份进行恢复 12-9 在 NOARCHIVELOG 模式下不使用重做日志文件备份进行恢复 12-10 在 ARCHIVELOG 模式下进行恢复 12-11 完全恢复 12-12 在 ARCHIVELOG 模式下进行完全恢复 12-13 确定需要恢复哪些文件 12-14 用户管理的恢复过程:RECOVER 命令 12-16 在恢复过程中使用归档重做日志文件 12-17 使用用户管理的过程将数据文件还原到新的位置 12-19 完全恢复方法 12-20 完全恢复关闭的数据库 12-22 关闭的数据库恢复示例 12-23 恢复打开的数据库(数据库最初是打开的) 12-25 打开的数据库恢复示例 12-26 恢复打开的数据库(数据库最初是关闭的) 12-28 打开的数据库恢复示例 12-29 在没有备份的情况下恢复数据文件 12-31 在没有备份的情况下重新创建丢失的数据文件 12-32 在没有备份的情况下进行恢复的示例 12-33 只读表空间恢复 12-35 只读表空间的恢复问题 12-36 丢失控制文件 12-37 恢复控制文件 12-38 小结 12-39 练习 12 概览 12-40 13 RMAN 完全恢复 目标 13-2 使用 RMAN 执行还原和数据文件介质恢复 13-3 ix 使用 RMAN 恢复 ARCHIVELOG 模式下的数据库 13-4 使用 “恢复向导” (Recovery Wizard) 13-5 使用 RMAN 将数据文件还原到新位置 13-6 还原到新位置 13-7 使用 RMAN 恢复表空间 13-8 表空间恢复 13-9 使用 RMAN 重新定位表空间 13-10 小结 13-12 练习 13-1 和 13-2 概览 13-13 14 RMAN 完全恢复 目标 14-2 不完全恢复概览 14-3 需要进行不完全恢复的情况 14-4 不完全恢复类型 14-5 不完全恢复原则 14-7 不完全恢复和警报日志 14-9 用户管理的不完全恢复的过程 14-10 RECOVER 命令概览 14-11 基于时间的恢复示例 14-12 UNTIL TIME 恢复 14-13 基于取消的恢复示例 14-15 恢复期间使用备份控制文件 14-18 当前重做日志文件丢失 14-21 小结 14-23 练习 14-1 和 14-2 概览 14-24 15 RMAN 不完全恢复 目标 15-2 使用 RMAN 进行数据库的不完全恢复 15-3 指定还原时间 15-4 使用 UNTIL TIME 进行 RMAN 不完全恢复的示例 15-5 使用 UNTIL SEQUENCE 进行 RMAN 不完全恢复的示例 15-7 小结 15-8 练习 15 概览 15-9 16 RMAN 维护 目标 16-2 交叉查对备份和副本 16-3 CROSSCHECK 命令 16-4 删除备份和副本 16-5 DELETE 命令 16-6 删除备份和副本 16-7 更改 RMAN 备份和副本的可用性 16-8 更改可用性状态 16-9 使备份或副本脱离保留策略 16-10 x CHANGE … KEEP 命令 16-11 将归档重做日志文件和用户管理的备份列入目录 16-12 CATALOG 命令 16-13 不将 RMAN 记录列入目录 16-14 CHANGE … UNCATALOG 命令 16-15 小结 16-16 练习 16 概览 16-17 17 恢复目录的创建和维护 目标 17-2 概览 17-4 恢复目录内容 17-5 使用恢复目录的优点 17-7 创建恢复目录 17-8 使用恢复目录连接 17-11 恢复目录维护 17-12 目录维护 17-13 恢复目录的重新同步 17-14 使用 RESYNC CATALOG 进行重新同步 17-15 重置数据库复本 17-16 恢复目录报告 17-18 查看恢复目录 17-19 已存储的脚本 17-21 脚本示例 17-22 管理脚本 17-23 恢复目录备份 17-24 恢复恢复目录 17-25 小结 17-26 练习 17 概览 17-27 18 在数据库之间传输数据 目标 18-2 Oracle 导出和导入实用程序 18-3 Oracle 导出和导入实用程序概览 18-4 调用导出和导入实用程序的方法 18-6 导出模式 18-7 调用导出实用程序 18-9 使用导出向导 18-12 直接路径导出概念 18-13 直接路径导出功能 18-14 直接路径导出的限制 18-15 指定直接路径导出 18-16 使用导入实用程序进行恢复 18-17 导入模式 18-18 调用导入实用程序 18-19 使用导入向导 18-21 xi 作为 SYSDBA 调用导入实用程序 18-22 导入进程序列 18-23 全球化支持注意事项 18-24 小结 18-25 练习 18 概览 18-26 19 专题讨论 目标 19-2 专题讨论方法 19-4 专题讨论的方法步骤 19-6 业务要求 19-7 排除数据库故障 19-8 排除网络故障 19-10 启用跟踪 19-11 使用跟踪文件 19-12 小结 19-15 练习 19 19-17 附录 A:练习答案 附录 B:专题讨论中出现的情况 附录 C:全球支持公告板 附录 D:将数据加载到数据库中 xii 前言 前言 - 2 前言 - 3 配置文件 课前须知 在开始本课程的学习之前,您应该具备以下条件: • 了解 SQL 命令和基本的操作系统命令(Unix 或 NT) 前提条件 • Oracle 9i 数据库管理基础 I (D11321GC11)(课内) 本课程的组织结构 Oracle 9i 数据库管理基础 II 课程由教师讲解,同时还包括实际操作练习。通过联机演示和笔头练 习,还可强化对课程中介绍的概念和技能的理解。 前言 - 4 相关出版物 Oracle 出版物 书名 编号 Oracle9i Backup and Recovery Concepts A90133-02 Oracle9i Database Administrator's Guide A90117-01 Oracle9i Database Concepts A88856-02 Oracle9i Database Error Messages A90202-02 Oracle9i Database New Features A90120-02 Oracle9i Database Reference A90190-02 Oracle9i Database Utilities A90192-01 Oracle9i Enterprise Manager Administrator’s Guide A88767-02 Oracle9i Enterprise Manager Concepts Guide A88770-01 Oracle9i Enterprise Manager Configuration Guide A88769-01 Oracle9i Net Services Administrator’s Guide A90154-01 Oracle9i Net Services Reference Guide A90155-01 Oracle9i Recovery Manager Reference A90136-02 Oracle9i Recovery Manager User’s Guide A90135-01 Oracle9i SQL Reference A90125-01 Oracle9i User-Managed Backup and Recovery Guide A90134-01 其它出版物 • 系统发行公告牌 • 安装指南和用户指南 • read.me 文件 • International Oracle User’s Group (IOUG) 文章 • Oracle Magazine Copyright © Oracle Corporation, 2001. All rights reserved. 用户管理的完全恢复 Oracle9i 数据库管理基础 II 12-2 Copyright © Oracle Corporation, 2001. All rights reserved. 目标 完成这一课的学习后,您应该能达到下列目标: • 描述介质恢复 • 在 NOARCHIVELOG 模式下执行恢复 • 在 ARCHIVELOG 模式下执行完全恢复 • 将数据文件还原到其它位置 • 使用归档重做日志文件重新定位和恢复表空间 • 描述对只读表空间的恢复 Oracle9i 数据库管理基础 II 12-3 Copyright © Oracle Corporation, 2001. All rights reserved. 介质恢复 • 用于恢复丢失的或损坏的当前数据文件或控制文件 • 要求显式调用 • 操作如下所示: – 从备份还原文件 – 将重做数据从归档重做日志文件和联机重做日志应用到 还原的文件中 介质恢复 介质恢复用于恢复丢失的或损坏的当前数据文件或控制文件。它还可用于恢复数据文件脱 机时由于未使用 OFFLINE NORMAL 选项而丢失的那些更改。 还原文件 在还原文件时,其实是使用备份副本替代丢失的或损坏的文件。 文件恢复 在恢复文件时,将重做日志文件中记录的更改应用到所还原的文件中。 Oracle9i 数据库管理基础 II 12-4 Copyright © Oracle Corporation, 2001. All rights reserved. 恢复步骤 还原的数据文件 包含已提交和未提交的 事务处理的数据库 恢复的数据库 应用了重做 应用了还原 5 4 3 2 1 数据文件 1 数据文件 2 数据文件 3 数据文件 1 数据文件 2 数据文件 3 数据文件 1 数据文件 2 数据文件 3 归档重 做日志 联机 重做日志 恢复步骤 1. 从备份还原损坏的或丢失的文件。 2. 根据需要应用归档重做日志文件和联机重做日志文件中的更改。此时将生成还原块。 这称为前滚或高速缓存恢复。 3. 数据库此时可能包含已提交的和未提交的更改。 4. 还原块用于回退任何未提交的更改。这称为回退或事务处理恢复。 5. 数据库现处于已恢复状态。 Oracle9i 数据库管理基础 II 12-5 Copyright © Oracle Corporation, 2001. All rights reserved. 使用用户管理的过程而执行的还原 和数据文件介质恢复 • 使用操作系统命令还原文件 • 使用 SQL*Plus RECOVER 命令恢复文件 使用用户管理的过程而执行的还原和数据文件介质恢复 在还原文件时,使用操作系统命令从备份中复制文件。可以还原数据文件、控制文件、归 档重做日志文件和服务器参数文件。 使用 SQL*Plus RECOVER 命令将重做日志文件应用到还原的文件中。可以执行自动恢复, 或者逐个查看日志文件以应用更改。 Oracle9i 数据库管理基础 II 12-6 Copyright © Oracle Corporation, 2001. All rights reserved. ARCHIVELOG 模式和 NOARCHIVELOG 模式 例程 SGA 重做日志 缓冲区数据缓冲区 大型共享池Java 池 共享池 数据字典 高速缓存 共享 SQL 和PL/SQL PMONDBWnSMON LGWRCKPT ARCn用户进程 服务器 进程 PGA 用户进程 服务器 进程 PGA 口令文件 参数文件 数据库 144数据文件 1 144数据文件 2 144数据文件 3 144控制文件 144重做日志 文件1 145 重做日志 文件2 比较 ARCHIVELOG 模式和 NOARCHIVELOG 模式 您为数据库选择的归档模式将影响到在出现介质故障时您所能做出的恢复选择。 在设置归档日志模式时,应该考虑以下因素: • 下述情况中,NOARCHIVELOG 模式可能比较合适: – 容许备份之间的数据损失(在开发、培训期间等) – 重新应用事务处理(从批处理文件)的速度更快 – 数据极少更改(非 OLTP) • 下述情况中,ARCHIVELOG 模式则更合适: – 无法关闭数据库以执行关闭的数据库的备份 – 不允许数据损失 – 使用归档重做日志文件比重新应用事务处理 (OLTP) 更易于恢复 • 缺省情况下,数据库为 NOARCHIVELOG 模式。 Oracle9i 数据库管理基础 II 12-7 Copyright © Oracle Corporation, 2001. All rights reserved. 在 NOARCHIVELOG 模式下进行恢复 • 在 NOARCHIVELOG 模式下,必须还原以下数据库文件: – 所有数据文件 – 控制文件 • 也可以还原以下文件: – 重做日志文件 – 口令文件 – 参数文件 当数据库处于 NOARCHIVELOG 模式下时进行恢复 当处于 NOARCHIVELOG 模式的数据库发生介质故障时,需要使用一个有效的、关闭的 数据库的备份进行恢复。在 NOARCHIVELOG 模式下,即使只有一个数据文件被损坏或 丢失,也必须还原所有的 Oracle 数据库文件。确保还原以下所有文件:数据文件和控制 文件。如果您在备份数据文件和控制文件时还备份了联机重做日志文件,则还要还原这些 文件。切记,必须将所有的 Oracle 数据库文件进行同步,以打开该数据库。 仅当口令文件和参数文件被损坏或丢失时,才应该还原它们。 注:对于处于 NOARCHIVELOG 模式下的数据库,如果自上次备份以来没有覆盖任何重 做日志文件,则只需还原受影响的 Oracle 数据文件(如下所示) • 方案 – 数据库有两个重做日志。 – 关闭的数据库的备份是在日志序列 144 时进行的。 – 当数据库在日志序列 145 时,数据文件 2 丢失。 • 结果 由于日志序列 144 尚未被覆盖,所以可手动还原和恢复数据文件 2。 Oracle9i 数据库管理基础 II 12-8 Copyright © Oracle Corporation, 2001. All rights reserved. 在 NOARCHIVELOG 模式下进行恢复 • 优点 – 易于操作,出错的风险小 – 恢复时间即为还原所有文件所花的时间 • 缺点 – 数据将丢失,必须手动重新应用 – 将整个数据库还原到上次备份时的状态(关闭的数据库的整 体备份) 在 NOARCHIVELOG 模式下进行恢复:优点和缺点 是否决定在 NOARCHIVELOG 模式下操作数据库,应考虑在恢复时的以下优缺点: 优点 • 易于操作,原因是只需从一个备份中还原所有的文件。唯一的风险在于操作本身:还 原错误的备份、覆盖备份、还原之前未关闭数据库或者备份无效。经过充分的培训和 测试,可最大限度地降低此类风险。 • 在给定的硬件和操作系统下,恢复时间只是还原所有文件所花的时间长度。 缺点 • 自上一次备份后用户输入的所有数据将丢失,必须手动重新应用。 • 即使只丢失了一个数据文件,也必须从上次执行的、关闭的数据库的整体备份中还原 整个数据库。 Oracle9i 数据库管理基础 II 12-9 Copyright © Oracle Corporation, 2001. All rights reserved. 在 NOARCHIVELOG 模式下使用重做 日志文件备份进行恢复 从最新的备份进行还原 口令文件 参数文件 口令文件 参数文件 口令文件 参数文件 备份 144 数据文件 1 144 数据文件 2 144 数据文件 3 144 控制文件 144 重做日志 文件 1 143 重做日志 文件 2 数据库 146 数据文件 1 146数据文件 2 146数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 2 数据库 144 数据文件 1 144 数据文件 2 144 数据文件 3 144 控制文件 144 重做日志 文件 1 143 重做日志 文件 2 在 NOARCHIVELOG 模式下进行用户管理的恢复 示例 磁盘 2 被损坏,结果丢失了数据文件 2。仅有 2 个联机重做日志文件。 上次备份是在日志序列 144 进行的,当前日志序列号为 146。 不能恢复该数据文件,因为重做日志 144 已被覆盖。如果尝试进行恢复,将会证实这一问 题。因此,必须关闭数据库并还原所有的 Oracle 文件。 SQL> SHUTDOWN ABORT 要还原文件,请: UNIX: cp /BACKUP/* /databases/db01/ORADATA Windows NT: copy d:\disk1\backup\*.* d:\disk1\data\ 复制结束后,重新启动例程: SQL> CONNECT / as sysdba SQL> STARTUP 通知用户,他们需要重新输入自上一次备份以后输入的数据。 Oracle9i 数据库管理基础 II 12-10 Copyright © Oracle Corporation, 2001. All rights reserved. 在 NOARCHIVELOG 模式下不使用 重做日志文件备份进行恢复 1. 关闭例程。 2. 从数据库的最新而且完整的备份中还原数据文件 和控制文件。 3. 执行基于取消的恢复。 4. 使用 RESETLOGS 选项打开数据库。 不使用重做日志文件备份进行恢复 1. 如果数据库已打开,则按如下方式关闭它: SQL> SHUTDOWN IMMEDIATE 2. 使用操作系统命令还原对数据库的最新而且完整的备份。必须还原所有的数据文件和 控制文件,而不仅仅是还原损坏的文件。以下示例还原了数据库的完整备份: $ cp /db01/BACKUP/*.dbf /ORADATA/u*/* # restores datafiles $ cp /db01/BACKUP/*.ctl /ORADATA/u*/* # restores control file 3. 因为您没有备份联机重做日志,所以不能使用数据文件和控制文件还原它们。因此, Oracle 允许重置联机重做日志,您必须按如下方式仿效进行不完全恢复: SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE SQL> CANCEL 4. 然后,使用 RESETLOGS 选项打开数据库,将当前的重做日志序列重置为 1(如下所 示): SQL> ALTER DATABASE OPEN RESETLOGS; Oracle9i 数据库管理基础 II 12-11 Copyright © Oracle Corporation, 2001. All rights reserved. 在 ARCHIVELOG 模式下进行恢复 • 完全恢复 – 使用重做数据或增量备份 – 将数据库更新到最近的时间点 – 应用所有的重做更改 • 不完全恢复 – 使用备份和重做日志生成数据库的除当前版本之外的 其它版本 在 ARCHIVELOG 模式下进行恢复 比较完全恢复和不完全恢复 在执行介质恢复时,您将还原的文件更新到当前时间,或者更新到由用户指定的、除当前 时间之外的时间。 在完全恢复中,使用重做日志文件或增量备份将还原文件更新到最近的时间点。将归档重 做日志文件和联机重做日志文件中包含的重做更改全部应用到这些文件中。可以对数据库、 表空间或数据文件执行完全恢复。 对于不完全恢复,其实就是将数据库恢复到当前时间以前的某一时刻。通常,您并不会应 用备份后生成的所有重做条目。 Oracle9i 数据库管理基础 II 12-12 Copyright © Oracle Corporation, 2001. All rights reserved. 完全恢复 • 确保要还原的数据文件处于脱机状态。 • 仅还原丢失的或损坏的数据文件。 • 不要还原控制文件、重做日志文件、口令文件 或参数文件。 • 恢复数据文件。 当数据库处于 ARCHIVELOG 模式下时进行完全恢复 当处于 ARCHIVELOG 模式的数据库发生介质故障时,需要使用以下内容将数据库完全恢 复到发生故障前那一刻的情形: • 在将数据库设置为 ARCHIVELOG 模式后进行的有效备份(其中包含丢失的或损坏的 数据文件) • 从您所使用的备份起至今的所有归档日志 • 包含尚未归档的事务处理的重做日志文件 Oracle9i 数据库管理基础 II 12-13 Copyright © Oracle Corporation, 2001. All rights reserved. 在 ARCHIVELOG 模式下进行完全恢复 • 优点 – 仅需还原丢失的文件 – 将所有数据恢复到发生故障前那一刻的情形 – 恢复时间即为还原所丢失的文件以及应用所有归档日志文件 所花的时间 • 缺点 – 必须有自您正用于还原的那个备份之后得到的所有归档日志 文件 在 ARCHIVELOG 模式下进行恢复:优点和缺点 优点 • 仅需还原丢失或损坏的文件。 • 已提交的数据不会丢失。通过还原上述文件并应用归档日志和重做日志,就可将数据 库恢复至当前的时间点。 • 恢复的总时间就等于还原文件并应用所有归档日志和重做日志所需的时间。 • 可以在数据库打开的情况下进行恢复(包含联机还原段的系统表空间文件和数据文件 除外)。 缺点 必须有自上次备份起到当前时间的所有归档重做日志文件。如果缺失一个文件,则无法执 行完全恢复,原因是必须依次应用所有的归档重做日志文件;即,先应用归档日志 144, 其次是 145,再次是 146,以此类推。 Oracle9i 数据库管理基础 II 12-14 Copyright © Oracle Corporation, 2001. All rights reserved. 确定需要恢复哪些文件 • 查看 V$RECOVER_FILE 以确定需要恢复哪些数据文件。 • 查看 V$ARCHIVED_LOG 以得到数据库的所有归档重做 日志文件的列表。 • 查看 V$RECOVERY_LOG 以得到进行恢复时所需的所有 归档重做日志文件的列表。 确定需要恢复哪些文件 确定需要恢复的数据文件 要确定需要恢复哪些数据文件以及需要从哪里开始恢复,请按如下方式使用 V$RECOVER_FILE 视图: SQL> SELECT * FROM v$recover_file; FILE# ONLINE ERROR CHANGE# TIME ----- ------- ------ ------- --------- 2 OFFLINE 288772 02-MAR-01 ERROR 列返回两个可能的值,从而定义需要恢复该文件的原因: • NULL(如果原因未知) • OFFLINE NORMAL(如果不需要恢复) CHANGE# 列返回 SCN(系统更改号),必须从 SCN 开始进行恢复。 Oracle9i 数据库管理基础 II 12-15 确定需要恢复哪些文件(续) 查找要应用的归档日志文件 要查找归档日志文件,可查看 V$ARCHIVED_LOG 以获得所有归档日志文件,或查看 V$RECOVERY_LOG 以获得恢复时所需的归档日志文件: SQL> SELECT * FROM v$recovery_log; THREAD# SEQUENCE# TIME ARCHIVE_NAME ------- --------- --------- ------- 1 34 02-MAR-01 /…/ORADATA/ARCHIVE1/arch_34.arc ... 1 43 04-MAR-01 /…/ORADATA/ARCHIVE1/arch_43.arc 1 44 04-MAR-01 /…/ORADATA/ARCHIVE1/arch_44.arc 从上面的信息可以看出,要完全恢复数据文件 2,需要使用序列号为 34 之后的所有归档日 志。 注:V$RECOVERY_LOG 包含的信息仅对执行恢复的 Oracle 进程有用。 V$ARCHIVED_LOG 显示控制文件中的归档日志信息,其中包括归档日志名称。 Oracle9i 数据库管理基础 II 12-16 Copyright © Oracle Corporation, 2001. All rights reserved. 用户管理的恢复过程: RECOVER 命令 • 恢复装载的数据库: • 恢复打开的数据库: SQL> RECOVER DATABASE SQL> RECOVER TABLESPACE users SQL> RECOVER DATAFILE 2> ‘/ORADATA/u03/users01.dbf’ 或 SQL> RECOVER DATAFILE 2> ‘/ORADATA/u03/users01.dbf’ 或 RECOVER 命令 要恢复数据库,可以发出以下命令之一: • RECOVER [AUTOMATIC] DATABASE 此命令只能用于恢复关闭的数据库。 • RECOVER [AUTOMATIC] TABLESPACE | 此命令只能用于恢复打开的数据库。 • RECOVER [AUTOMATIC] DATAFILE <‘filename’> | 此命令既可用于恢复打开的数据库,又可用于恢复关闭的数据库。 其中:AUTOMATIC 会自动应用归档日志文件和重做日志文件。 Oracle9i 数据库管理基础 II 12-17 Copyright © Oracle Corporation, 2001. All rights reserved. 在恢复过程中使用归档重做日志文件 • 要更改归档位置,请使用 ALTER SYSTEM ARCHIVE LOG. . . 命令。 • 要自动应用重做日志文件: – 在开始介质恢复前,先发出 SET AUTORECOVERY ON 命令。 – 当提示输入一个归档日志文件时,请输入 auto。 – 使用 RECOVER AUTOMATIC. . . 命令。 在恢复过程中使用归档重做日志文件 在恢复过程中,Oracle 服务器可以手动或自动应用所需的归档重做日志文件和联机重做日 志文件,以重新构建数据文件。在应用重做日志文件之前,Oracle 服务器会建议您提供所 要应用的日志文件的名称。 将归档还原至不同的位置 如果归档重做日志文件不还原到 LOG_ARCHIVE_DEST 目录中,则需要采取以下方法之 一,在开始恢复之前或在恢复过程中通知 Oracle 服务器: • 在恢复提示下指定位置和名称: Specify log: {=suggested | filename | AUTO | CANCEL} • 使用 ALTER SYSTEM ARCHIVE 命令: SQL> ALTER SYSTEM ARCHIVE LOG START TO ; • 使用 RECOVER FROM 命令: SQL> RECOVER FROM ‘’ DATABASE Oracle9i 数据库管理基础 II 12-18 在恢复过程中使用归档重做日志文件(续) 如何自动应用重做日志文件 可以使用以下方法自动应用重做日志文件: • 在开始介质恢复前,先发出以下 SQL*Plus 语句: SQL> SET AUTORECOVERY ON • 当提示输入一个重做日志文件时,请输入 auto: SQL> RECOVER datafile 4 ORA-00279: change 308810...03/22/01 17:00:14 needed for thread 1 ORA-00289: suggestion : /ORADATA/ARCHIVE1/arch_35.arc ORA-00280: change 308810 for thread 1 is in sequence #35 Specify log: {=suggested | filename | AUTO | CANCEL} AUTO Log applied. ... • 使用 RECOVER 命令的 AUTOMATIC 选项: SQL> RECOVER AUTOMATIC datafile 4 Media recovery complete. Oracle9i 数据库管理基础 II 12-19 Copyright © Oracle Corporation, 2001. All rights reserved. 使用用户管理的过程将数据文件 还原到新的位置 • 使用操作系统命令将数据文件还原到新的位置。 • 使用 ALTER DATABASE RENAME FILE 命令将更改 记录到控制文件中。 用于将数据文件还原到新位置的、用户管理的过程 1. 使用操作系统命令将文件还原到新的位置。 注:在 UNIX 环境中,在发出 ALTER DATABASE RENAME 命令之前,文件必 须位于新位置。在 Windows NT 环境中,则不必如此。 2. 启动该例程并装载数据库。 3. 使用 ALTER DATABASE 命令来更新控制文件,将其更新为新的文件名或更新到 新的位置: SQL> ALTER DATABASE RENAME FILE 2> ‘/ORADATA/u03/users01.dbf‘ 3> to ‘/ORADATA/u04/users01.dbf‘; Oracle9i 数据库管理基础 II 12-20 Copyright © Oracle Corporation, 2001. All rights reserved. 完全恢复方法 • 恢复关闭的数据库,用于: – 系统数据文件 – 还原段数据文件 – 整个数据库 • 恢复打开的数据库,并且数据库最初是打开的 (用于恢复丢失的文件) • 恢复打开的数据库,并且数据库最初是关闭的 (用于在发生硬件故障后进行恢复) • 在没有数据文件备份的情况下恢复数据文件 完全恢复方法 执行完全恢复的方法有 4 种: 方法 1:恢复关闭的数据库 此方法适用于以下情况: • 数据库不是全天候(每周 7 天、每天 24 小时)运行。 • 恢复的文件属于系统表空间或还原段表空间。 • 需要恢复整个数据库或大部分数据文件。 方法 2:恢复打开的数据库(数据库最初是打开的) 此恢复方法一般在以下情况下使用: • 发生了文件损坏、文件意外丢失或介质故障,但未导致数据库关闭。 • 数据库全天候(每周 7 天、每天 24 小时)运行。必须最大限度地减少数据库的停机时 间。 • 恢复的文件不属于系统表空间或还原段表空间。 Oracle9i 数据库管理基础 II 12-21 完全恢复方法(续) 方法 3:恢复打开的数据库(数据库最初是关闭的) 此恢复方法一般在以下情况下使用: • 某个介质故障或硬件故障导致系统关闭。 • 数据库全天候(每周 7 天、每天 24 小时)运行。必须最大限度地减少数据库的停机时 间。 • 还原的文件不属于系统表空间或还原段表空间。 方法 4:在没有备份的情况下恢复数据文件 此恢复方法一般在以下情况下使用: • 介质故障或用户故障导致丢失了从未备份过的数据文件。 • 自该文件创建以来的所有归档日志都存在。 • 还原的文件不属于系统表空间或还原段表空间。 注:恢复过程中,磁盘中必须有 Oracle 服务器所需的所有归档日志文件。如果这些文件在 备份磁带中,则必须先还原这些文件。 Oracle9i 数据库管理基础 II 12-22 Copyright © Oracle Corporation, 2001. All rights reserved. 完全恢复关闭的数据库 恢复关闭的数据库,用于: • 系统表空间数据文件 • 回退段数据文件 • 整个数据库 恢复关闭的数据库 在以下情况中,通常将此恢复方法与 RECOVER DATABASE 命令或 RECOVER DATAFILE 命令一起使用: • 恢复的文件属于系统表空间或回退段表空间。 • 需要恢复整个数据库或大部分数据文件。 • 数据库不是全天候(每周 7 天、每天 24 小时)运行。 Oracle9i 数据库管理基础 II 12-23 Copyright © Oracle Corporation, 2001. All rights reserved. 关闭该例程1 关闭的数据库恢复示例 还原数据文件 1 (日志序列 144)2 打开数据库4 装载的数据库 恢复的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 2 关闭的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 2 144 数据文件 1 146 数据文件 2 146 数据文件 3 146 重做日志 文件 1 145 重做日志 文件 2 3 146 控制文件 3 3 归档日志 文件 144 关闭的数据库恢复示例 已确定 u01(数据文件 1 存储在其中)包含被损坏的块。通过查询 V$DATAFILE 和 V$TABLESPACE 视图,可以发现数据文件 1 是系统表空间所属的文件之一。请按照以下 步骤恢复数据库: 1. 如果例程尚未关闭,请按如下方式发出 SHUTDOWN 命令: SQL> SHUTDOWN ABORT 2. 从备份(可用的最新备份)中还原该文件: UNIX> host cp /BACKUP/system01.dbf /ORADATA/u01 Windows NT > host copy c:\backup\df1.dbf d:\data\ 3. 以 “装载” 模式启动例程,并恢复该数据文件: SQL> STARTUP MOUNT SQL> RECOVER DATABASE or SQL> RECOVER DATAFILE ‘/ORADATA/u01/system01.dbf‘ ORA-00279: change 148448 ...03/29/01 17:04:20 needed for thread ORA-00289: suggestion : /ORADATA/ARCHIVE1/arch_144.arc ORA-00280: change 148448 for thread 1 is in sequence #144 Log applied. ... Media recovery complete. Oracle9i 数据库管理基础 II 12-24 关闭的数据库恢复示例(续) 要将数据文件恢复到发生故障前的那一刻,应该应用所有需要的归档日志和重做日 志。 4. 恢复结束后,所有数据文件都将实现同步。打开数据库。 SQL> ALTER DATABASE OPEN; 此时,可通知用户数据库可以使用了,并告诉他们重新输入系统发生故障前未提交的 所有数据。 注:在使用此恢复方法进行恢复的期间,必须关闭数据库;在恢复进程中,整个数据库都 无法让用户进行访问。 Oracle9i 数据库管理基础 II 12-25 Copyright © Oracle Corporation, 2001. All rights reserved. 恢复打开的数据库(数据库最初是打开的) 此方法适用于以下情况: • 数据库当前已打开 • 在恢复期间数据库将一直保持打开状态 • 介质故障不会影响 SYSTEM 表空间 恢复打开的数据库 恢复打开的数据库(数据库最初是打开的) 此恢复方法一般在以下情况下使用: • 未导致数据库关闭的文件损坏、文件意外丢失或介质故障。 • 数据库全天候(每周 7 天、每天 24 小时)运行。必须最大限度地减少数据库的停机时 间。 • 受到影响的文件不属于系统表空间或还原/回退段表空间。 Oracle9i 数据库管理基础 II 12-26 Copyright © Oracle Corporation, 2001. All rights reserved. 1 打开的数据库恢复示例 2 4 3 将数据文件 2 脱机 还原数据文件 2 (日志序列 144) 将数据文件 2 联机 打开的数据库 归档日志 文件 144 恢复的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145重做日志 文件 2 打开的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 2 146 数据文件 1 144 数据文件 2 146 数据文件 3 146 重做日志 文件 1 145 重做日志 文件 23 146 控制文件 3 打开的数据库恢复示例 数据库当前已打开,并且已使用操作系统命令误删了数据文件 2。因为数据库当前已打 开,所以可以使用以下命令确定该数据文件属于哪个表空间: SQL> SELECT file_id f#, file_name, 2> tablespace_name tablespace, status 3> FROM dba_data_files; F# FILE_NAME TABLESPACE STATUS --- ------------------------- ---------- --------- 1 /disk1/data/system01.dbf SYSTEM AVAILABLE 2 /disk2/data/df2.dbf USER_DATA AVAILABLE 3 /disk1/data/rbs01.dbf RBS AVAILABLE ... Oracle9i 数据库管理基础 II 12-27 打开的数据库恢复示例(续) 1. 发出以下查询,以确定是否需要将数据文件 2 脱机: SQL> SELECT d.file# f#, d.name, d.status, h.status 2> FROM v$datafile d, v$datafile_header h 3> WHERE d.file# = h.file#; F# D.NAME D.STATUS H.STATUS --- ------------------------- ---------- --------- 1 /disk1/data/system01.dbf SYSTEM ONLINE 2 /disk2/data/df2.dbf RECOVER OFFLINE 3 /disk1/data/rbs_01.dbf ONLINE ONLINE ... 在这种情况下,Oracle 服务器已将该文件脱机。 2. 因为该文件处于脱机状态,所以此时可从备份中还原该文件: UNIX > host cp /disk1/backup/df2.dbf /disk2/data/ Windows NT > host copy c:\backup\df2.dbf d:\data\ 3. 使用 RECOVER 命令将归档和重做日志应用到还原的数据文件中。 SQL> RECOVER DATAFILE ‘/disk2/backup/df2.dbf‘ or SQL> RECOVER TABLESPACE user_data 4. 恢复结束后,所有数据文件都将实现同步。将该数据文件联机: SQL> ALTER DATABASE DATAFILE ‘/disk2/data/df2.dbf‘ ONLINE; 或 SQL> ALTER TABLESPACE user_data ONLINE; 注 • 有时 Oracle 服务器会检测到某个文件有问题并自动将该文件脱机。在进行恢复之前, 一定要查看警报日志以检查是否有任何错误,并检查文件的状态;可能需要恢复脱机 文件。 • 在将表空间脱机后,就会将其所有数据文件脱机,并且无法访问该表空间中包含的任 何数据。对于具有多个文件的表空间来说,如果将其中一个数据文件脱机,则只有该 数据文件中包含的数据无法进行访问,而表空间仍然可以使用。 Oracle9i 数据库管理基础 II 12-28 Copyright © Oracle Corporation, 2001. All rights reserved. 恢复打开的数据库(数据库最初是关闭的) 此方法适用于以下情况: • 数据库当前已关闭 • 将在恢复期间打开数据库 • 介质故障不会影响 SYSTEM 表空间 恢复打开的数据库 恢复打开的数据库(数据库最初是关闭的) 此恢复方法一般在以下情况下使用: • 介质或硬件故障导致系统关闭。 • 数据库全天候(每周 7 天、每天 24 小时)运行。必须最大限度地减少数据库的停机时 间。 • 损坏的文件不属于系统表空间或还原段表空间。 Oracle9i 数据库管理基础 II 12-29 Copyright © Oracle Corporation, 2001. All rights reserved. 将数据文件 2 脱机2 打开的数据库恢复示例 还原数据文件 24 将数据文件 2 联机6 1 装载数据库 3 打开数据库 5 打开数据库 归档日志 文件 144 恢复的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145重做日志 文件 2 关闭的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 2 146 数据文件 1 144 数据文件 2 146 数据文件 3 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 25 5 打开的数据库恢复示例 您刚刚确定介质故障是由于某个磁盘控制器发生故障而引起的,该控制器只包含磁盘 2。 根据您对数据库的了解,您知道数据文件 2 不是系统数据文件或还原段数据文件,并且并 不会由于无法使用该文件而妨碍用户运行其月末报告。 1. 装载该数据库。由于数据文件 2 无法打开,因此无法打开该数据库。 SQL> STARTUP MOUNT Database mounted. 2. 如果该数据文件未脱机,则无法打开数据库。因此,必须将该文件脱机。您已经 查询了 V$DATAFILE 并确定该文件处于联机状态。 必须发出以下命令: SQL> ALTER DATABASE datafile ‘/disk2/data/df2.dbf‘ offline; 注:此时不能使用 ALTER TABLESPACE 命令,原因是数据库尚未打开。 3. 然后就可以打开数据库,使用户能够访问系统: SQL> ALTER DATABASE OPEN; Oracle9i 数据库管理基础 II 12-30 打开的数据库恢复示例(续) 4. 然后,还原该文件。因为无法将文件还原到损坏的磁盘 2 上,所以将它还原到磁盘 3 上: UNIX > host cp /disk1/backup/df2.dbf /disk3/data/ Windows NT > host copy c:\backup\df2.dbf e:\data\ 现在必须通知 Oracle 服务器新文件的位置: SQL> ALTER DATABASE rename file ‘/disk2/data/df2.dbf‘ 2> to ‘/disk3/data/df2.dbf‘; 如果数据库已打开并且需要恢复表空间,请发出以下查询,以确定该数据文件所属的 表空间的名称: SQL> SELECT file_id f#, file_name, 2> tablespace_name tablespace, status 3> FROM dba_data_files; F# FILE_NAME TABLESPACE STATUS --- ------------------ --------- ------- 1 /disk1/data/system_01.dbf SYSTEM AVAILABLE 2 /disk3/data/df2.dbf USER_DATA AVAILABLE 3 /disk1/data/rbs01.dbf RBS AVAILABLE 5. 使用 RECOVER 或 ALTER DATABASE RECOVER 命令开始将归档重做日志文件和联 机重做日志文件应用到还原的数据文件中。 SQL> RECOVER DATAFILE ‘/disk3/data/df2.dbf‘ 或 SQL> RECOVER TABLESPACE user_data 6. 恢复结束后,所有数据文件都将实现同步。将该数据文件联机: SQL> ALTER DATABASE datafile ‘/disk3/data/df2.dbf‘ online; 或 SQL> ALTER TABLESPACE user_data online; Oracle9i 数据库管理基础 II 12-31 Copyright © Oracle Corporation, 2001. All rights reserved. 在没有备份的情况下恢复数据文件 • 从未备份过的数据文件丢失了 • 当文件属于 SYSTEM 表空间时不能使用 • 如果重新创建了控制文件,则不能使用 在没有备份的情况下恢复数据文件 此恢复方法一般在下列情况使用: • 介质故障或用户故障导致丢失了从未备份过的数据文件 • 自该文件创建以来的所有归档日志都存在 • 受到影响的文件不属于系统表空间或还原段表空间 Oracle9i 数据库管理基础 II 12-32 Copyright © Oracle Corporation, 2001. All rights reserved. 在没有备份的情况下重新创建丢失的数据文件 • 当丢失的数据文件由于从未备份过而无法还原时使用。 • 对丢失的数据文件的说明仍保留在数据字典和控制文件 中。 • 重新创建该数据文件: • 使用另一个文件名重新创建该数据文件: SQL> ALTER DATABASE CREATE DATAFILE ‘filename’; SQL> ALTER DATABASE CREATE DATAFILE ‘filename’ AS ‘new file name’; 在没有备份的情况下重新创建丢失的数据文件 • 如果定期备份中不包含新的表空间或数据文件,或者该数据文件的备份丢失了,则通 常使用该方法。 • 使用 ALTER DATABASE 命令,用相同的名称重新创建该数据文件: SQL> ALTER DATABASE CREATE DATAFILE 2> ‘/ORADATA/u03/users01.dbf‘; 将使用数据字典中记录的原始文件名创建该文件。 • 使用以下版本重新创建该数据文件,但使用新的文件名或位置: SQL> ALTER DATABASE CREATE DATAFILE 2> ‘/ORADATA/u03/users01.dbf‘ 3> AS ‘/ORADATA/u04/users01.dbf‘; Oracle9i 数据库管理基础 II 12-33 Copyright © Oracle Corporation, 2001. All rights reserved. 打开的数据库 在没有备份的情况下进行恢复的示例 将数据文件或表空间 联机 4 1 将数据文件或表空间脱机 2 重新创建数据文件 3 归档日志 文件 144 恢复的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146重做日志 文件 1 145 重做日志 文件 2 打开的数据库 146 数据文件 1 146 数据文件 2 146 数据文件 3 146 控制文件 146重做日志 文件 1 145 重做日志 文件 2 146 数据文件 4 146 数据文件 4 146 数据文件 1 144 数据文件 2 146 数据文件 3 数据文件 4 146 控制文件 146 重做日志 文件 1 145 重做日志 文件 23 3 在没有备份的情况下进行恢复的示例 数据文件 4(在磁盘 1 上)丢失了。在通过磁带还原该数据文件时,出现一个错误,指 明该文件以前没有进行备份。您找到两天前创建 TABLE_DATA 表空间的那个 DBA,结 果发现该表空间中包含重要的用户数据,但它从未被纳入备份策略中。由于数据文件 4 不是系统数据文件或回退段数据文件,并且您有过去两天的所有归档日志,因此,可以 按如下方式进行恢复: 1. 如果数据库已关闭,则装载该数据库、将该数据文件(无备份)脱机,然后打开数 据库。这将允许不需要 TABLE_DATA 表空间的用户对系统执行操作。如果数据库 已打开,则将该数据文件或表空间脱机。 注:如果数据库已打开,则必须包含 “立即” (IMMEDIATE) 选项,以避免数据库写 入器试图写入到一个并不存在的文件中: SQL> ALTER TABLESPACE table_data OFFLINE IMMEDIATE; Tablespace altered. Oracle9i 数据库管理基础 II 12-34 在没有备份的情况下进行恢复的示例(续) 查询 V$RECOVER_FILE 确定恢复状态,以检查备份的状态: SQL> SELECT * FROM v$recover_file; FILE# ONLINE ERROR CHANGE# TIME ----- ------- -------------- ------- ---- 4 OFFLINE FILE NOT FOUND 0 2. 发出以下命令来重新创建该文件: SQL> ALTER DATABASE create datafile ‘/disk2/DATA/df4.dbf’ 2> as ‘/disk1/DATA/df4.dbf‘; Database altered. SQL> SELECT * FROM v$recover_file; FILE# ONLINE ERROR CHANGE# TIME ----- ------- ------------------ ---------- ------ 4 OFFLINE 248621 01-DEC-97 3. 用 RECOVER 或 ALTER DATABASE RECOVER 命令,开始将归档重做日志文件和联机 重做日志文件应用到重新创建的数据文件中: SQL> RECOVER TABLESPACE table_data; 要将数据文件恢复到发生故障前的那一刻,应该应用所有需要的归档日志和重做日 志。此时所有数据文件都将实现同步。 4. 恢复完成后,将该表空间联机: SQL> ALTER TABLESPACE table_data ONLINE; 所有数据现已恢复。将文件包括在备份策略中,并通知用户可以再次使用表空间了。 Oracle9i 数据库管理基础 II 12-35 Copyright © Oracle Corporation, 2001. All rights reserved. 只读表空间恢复 备份 2 恢复 情况 1 情况 2 情况 3 备份 1 只读 读写只读 只读读写 恢复情况 情况 1:被恢复的表空间现在是只读的,并且在上次备份时也是只读的。在这种情况下, 只需从备份中还原表空间。无需应用任何重做信息。 情况 2:被恢复的表空间现在可读写,但在上次备份时则是只读的。在这种情况下,需要 从备份中还原表空间,并应用自表空间被设置为可读写状态以来的重做信息。 情况 3:被恢复的表空间现在是只读的,但在上次备份时是可读写的。因为您应该在将表 空间设置为只读状态后始终对它进行备份,所以不应该遇到这种情况。但是,如果确实出 现这种情况,则必须从备份中还原表空间,并将其恢复到被设置为只读状态前的那一刻。 Oracle9i 数据库管理基础 II 12-36 Copyright © Oracle Corporation, 2001. All rights reserved. 只读表空间的恢复问题 当出现以下情况时,必须为只读表空间考虑一些特殊事项: • 重新创建控制文件 • 重命名数据文件 • 使用备份的控制文件 恢复只读表空间 重新创建控制文件 如果您需要用 CREATE CONTROL FILE 命令重新创建控制文件,并且您的数据库有只读 表空间,则必须按照特殊的过程进行操作。发出 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令以获得这些过程的列表。 重命名数据文件 如果不能将只读数据表空间中的数据文件副本还原到正确的目标位置,则可以使用 ALTER DATABASE RENAME 命令将这些文件放到新的位置。 备份控制文件 带备份控制文件的只读表空间与脱机正常表空间的恢复过程实质上是相同的,只是您需要 在打开数据库后将表空间联机。 Oracle9i 数据库管理基础 II 12-37 Copyright © Oracle Corporation, 2001. All rights reserved. 丢失控制文件 如果出现以下情况,则可能需要创建控制文件: • 所有控制文件由于某个故障而丢失 • 需要更改数据库的名称 • 需要更改控制文件中的当前设置 丢失控制文件 以下是三种可能需要您恢复或重新创建控制文件的情形: • 所有控制文件由于某个故障而丢失。如果您已正确地多元备份了控制文件并将这些文 件分布到多个物理设备上,则很少会遇到这种问题。 • 您需要更改数据库的名称。如果数据库将成为分布式环境的一部分,并且其它数据库 具有相同的名称,则有必要更改数据库的名称。如果是出于恢复目的而还原数据库, 则可能也需要更改其名称。 • 您需要更改控制文件中的设置。控制文件中的很多设置是在文件创建之时确定下来的。 在创建了控制文件后,就不能动态地更改这些设置;若要更改这些设置,必须重新创 建控制文件。 Oracle9i 数据库管理基础 II 12-38 Copyright © Oracle Corporation, 2001. All rights reserved. 恢复控制文件 在丢失控制文件后进行恢复的方法: • 使用当前的控制文件 • 创建新的控制文件 • 使用备份的控制文件 恢复控制文件 有三种方法可以用于还原和恢复控制文件: • 用当前副本还原丢失的文件。这种方法假定您没有丢失所有的控制文件。 • 使用 CREATE CONTROLFILE 命令创建一个新文件。要完成此项操作必须知道数据库 的所有文件。间或备份控制文件以进行跟踪有助于完成此过程。 • 使用 RECOVER DATABASE USING BACKUP CONTROLFILE 命令。如果丢失了所有 的控制文件,则需要使用此命令。 注:如果使用镜像的数据文件正确配置数据库,则丢失所有控制文件的可能性将降至最低。 Oracle9i 数据库管理基础 II 12-39 Copyright © Oracle Corporation, 2001. All rights reserved. 小结 在这一课中,您应该能够掌握: • 确定需要使用哪种恢复类型 • 确定需要还原和恢复哪些文件 • 恢复 NOARCHIVELOG 模式下的数据库 • 恢复 ARCHIVELOG 模式下的数据库 • 如果原位置不可用,将数据文件还原到其它位置 Oracle9i 数据库管理基础 II 12-40 Copyright © Oracle Corporation, 2001. All rights reserved. 练习 12 概览 这两个练习涉及以下主题: • 当数据库处于 NOARCHIVELOG 模式时对数据库执行完 全恢复 • 当数据库处于 ARCHIVELOG 模式时对数据库执行完全 恢复 Oracle9i 数据库管理基础 II 12-41 练习 12-1 用户管理的完全恢复 完全恢复数据库:NOARCHIVELOG 模式 1. 关闭数据库并禁用自动归档。启动该例程并装载数据库。将数据库设置为 NOARCHIVELOG 模式,然后打开数据库。发出 ARCHIVE LOG LIST 命令以确认 其状态。 2. 关闭数据库,并使用操作系统命令执行关闭的数据库的完全备份(目的是将文件复制 到 $HOME/BACKUP/NOARCH 目录中)。启动该例程,装载并打开数据库。 3. 运行 $HOME/STUDENT/LABS/lab12_01_03.sql 脚本。此脚本在 HR 方案中新建 一个名为 EMPHIST 的表,并向该表中添加行。查询该表以获取该表中的行数。 4. 以 system/manager 身份进行连接,并执行 $HOME/STUDENT/LABS/lab12_01_04.sql 脚本以获取那些包含 EMPHIST 表的 数据文件的名称。 5. 运行 $HOME/STUDENT/LABS/lab12_01_05.sql 脚本以模拟出现故障时的情况。 6. 尝试重新启动该例程并打开数据库。结果怎样? 7. 关闭数据库,使用相应的操作系统命令将当前数据库替换为最新的备份(提示:从 NOARCH 目录复制到 ORADATA 目录)。 8. 启动例程,装载并打开数据库。 9. 以 hr/hr 身份连接到数据库,并对 EMPHIST 表执行查询。结果怎样?为什么? 10. 关于脱机备份和恢复 NOARCHIVELOG 模式下的数据库,您可以得出什么结论? Oracle9i 数据库管理基础 II 12-42 练习 12-2 用户管理的完全恢复 完全恢复数据库:ARCHIVELOG 模式 1. 查询 V$DATABASE 视图以确定数据库的 ARCHIVELOG 模式。使用 ARCHIVE LOG LIST 命令检查自动归档的状态。 2. 关闭该例程,并配置自动归档。装载数据库并使用 ALTER DATABASE 命令将数据库 设置为 ARCHIVELOG 模式。 3. 使用 ARCHIVE LOG LIST 命令验证您所做的更改。记下当前的日志序列号。 4. 执行关闭的数据库的备份。将该备份存储在 $HOME/BACKUP/UMAN 目录中。 5. 运行 $HOME/STUDENT/LABS/lab12_02_05.sql 脚本。此脚本在 HR 方案中新建 一个名为 EMPHIST 的表,并向该表中添加行。对 EMPHIST 表发出查询,以确定该 表中包含多少行。 6. 以 system/manager 身份进行连接,然后运行 $HOME/STUDENT/LABS/lab12_02_06.sql 脚本,并记下与那个包含 EMPHIST 表的表空间相关联的数据文件。 7. 运行 $HOME/STUDENT/LABS/lab12_02_07.sql 脚本以模拟出现硬件故障的情 况。 8. 尝试启动例程并打开数据库。结果怎样? 9. Oracle 服务器因发现介质故障而无法找到 USERS 表空间的文件。由于已经启用归 档,您此时可执行完全恢复。从在步骤 4 中制作的备份中还原 USERS 表空间的数据 文件。 10. 用 RECOVER DATABASE 命令恢复数据库。 11. 恢复完成后,打开数据库以便让所有用户可以使用。 12. 查询 DBA_TABLESPACES 视图,以查看表空间 USERS 是否联机。 13. 对 HR.EMPHIST 表执行查询。结果怎样? 14. 查询 V$LOG 视图并记下序列号。将这个值与步骤 3 中的值进行比较。关于完全恢 复,您可以得出什么结论? Oracle9i 数据库管理基础 II 12-43 练习 12-3 用户管理的完全恢复 选择练习:恢复打开的数据库 1. 运行 $HOME/STUDENT/LABS/lab12_03_01.sql 脚本以模拟出现硬件故障的情 况。 2. 尝试重新启动该例程并打开数据库。结果怎样? 3. Oracle 服务器因发现介质故障而无法找到 USERS 表空间的文件。您此时可以执行一 次完全恢复。将 USERS 表空间的数据文件脱机。 4. 打开数据库以便让所有用户可以使用。 5. 将 USERS 表空间脱机,然后从备份中还原所有的数据文件。 6. 用 RECOVER TABLESPACE 命令恢复表空间。 7. 将 USERS 表空间重新联机。 8. 对 HR.EMPHIST 表执行查询。 Oracle9i 数据库管理基础 II 12-44 练习 12-4 用户管理的完全恢复 选择练习:在添加新的数据文件后进行恢复 1. 以用户 SYSTEM 的身份运行 $HOME/STUDENT/LABS/lab12_04_01.sql 脚本,目的 是执行以下操作: – 用新的数据文件创建新的表空间 – 在新的表空间的 HR 方案中创建一个名为 NEW_EMP 的表 – 模拟丢失新数据文件的情况 2. 以 hr/hr 身份进行连接,并更新 NEW_EMP 表中的行(如下所示):结果怎样? SQL> UPDATE new_emp 2> SET salary = salary * 1.1; Oracle 服务器找不到 NEW_USERS 表空间的文件。 3. 在重新创建没有备份的文件后,可以执行完全恢复。可以将 NEW_USERS 表空间的数据文 件脱机,或者将该表空间脱机,这是因为该表空间中仅包含了一个数据文件。 注:必须包含 IMMEDIATE 选项,这样,数据库写入器就不会写入到一个不存在的文件中 了。 通过查询 V$RECOVER_FILE 来确认恢复状态。 4. 现在您必须重新创建文件。 5. 使用 RECOVER TABLESPACE 命令将重做日志应用到该数据文件中。 6. 恢复完成后,将该表空间联机。 7. 按如下方式再次更新 HR.NEW_EMP 表中的行: SQL> UPDATE new_emp 2> SET salary = salary * 1.1; 8. 以 system/manager 身份进行连接,并删除 NEW_USERS 表空间及其关联的数据文件, 以便为以后的练习做好准备。 Oracle9i 数据库管理基础 II 12-45 练习 12-5 用户管理的完全恢复 选择练习:在联机备份过程中从故障中恢复 在本练习中,将模拟以下情形:在对 SAMPLE 表空间执行联机备份时数据库出现故障。需 要发出相应的命令来恢复和重新打开数据库。 1. 通过在 SQL*Plus 中发出相应的命令,从而开始对 SAMPLE 表空间进行联机备份。 2. 在 $HOME/BACKUP/UMAN 目录中,为属于 SAMPLE 表空间的文件制作操作系统备 份。 3. 在 SQL*Plus 中发出 SHUTDOWN ABORT 命令。 4. 启动该例程并装载数据库。 5. 查询 V$BACKUP 以确定联机备份中是否有任何文件。 6. 发出相应的命令来终止备份,并取消冻结数据文件头。查询 V$BACKUP 以检查数据 文件的状态。 7. 为用户打开数据库。 Oracle9i 数据库管理基础 II 12-46 Copyright © Oracle Corporation, 2001. All rights reserved. RMAN 完全恢复 Oracle9i 数据库管理基础 II 13-2 Copyright © Oracle Corporation, 2001. All rights reserved. 目标 完成这一课的学习后,您应该能达到下列目标: • 描述 RMAN 在还原和恢复操作中的用法 • 在 ARCHIVELOG 模式下执行完全恢复 • 将数据文件还原到其它位置 • 使用归档重做日志文件重新定位和恢复表空间 Oracle9i 数据库管理基础 II 13-3 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 RMAN 执行还原和数据文件介质恢复 • 使用 RMAN RESTORE 命令从备份集或映像副本 还原文件 • 使用 RMAN RECOVER 命令恢复文件 使用 RMAN 执行还原和数据文件介质恢复 RMAN 自动执行还原文件的过程。发出 RESTORE 命令后,RMAN 将使用服务器会话还 原正确的备份和副本。RMAN 资料档案库用于选择最完整的可用备份集或映像副本来进 行还原。缺省情况下,如果某一文件已处于正确位置且其文件头包含有正确的信息,则 RMAN 将不还原该文件。而在 Oracle9i 以前的版本中,将始终还原该文件。 发出 RMAN RECOVER 命令后,RMAN 将应用联机重做日志文件和归档重做日志文件中 的更改,或使用增量备份来恢复已还原的文件。 使用 RMAN 可以在以下级别执行恢复: • 数据库 • 表空间 • 数据文件 在完全恢复过程中,归档重做日志文件和联机重做日志文件中的所有重做条目都将用于恢 复数据库。损坏的文件将从备份进行还原,而日志文件则用于将数据文件更新到当前时间 点。 Oracle9i 数据库管理基础 II 13-4 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 RMAN 恢复 ARCHIVELOG 模式下的数据库 rman target / RMAN> STARTUP MOUNT RMAN> RESTORE DATABASE; RMAN> RECOVER DATABASE; RMAN> ALTER DATABASE OPEN; 使用 RMAN 还原 ARCHIVELOG 模式下的数据库 在该示例中,使用 RMAN 来还原并恢复整个数据库。 该示例假定: • 磁盘上有使用 RMAN 生成的完全备份。 • 当前控制文件未损坏,无需还原。 • 所有数据文件都已损坏或丢失。 Oracle9i 数据库管理基础 II 13-5 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 “恢复向导” (Recovery Wizard) 使用 Oracle Enterprise Manager 您可使用 “恢复向导” (Recovery Wizard) 还原和恢复数据库。如果已连接至 Management Server,则可通过 “Oracle Enterprise Manager 控制台” (Oracle Enterprise Manager Console) 来访问该向导。在 “恢复选项” (Recovery Selection) 页上,指定数据库、表空间或数据文 件。数据库的状态决定了哪些选项可用。该向导将引导您完成指定,然后通过 Oracle Enterprise Manager 提交恢复作业。 Oracle9i 数据库管理基础 II 13-6 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 RMAN 将数据文件还原到新位置 • 使用 SET NEWNAME 命令可将数据文件还原到新位置。 • 使用 SWITCH 命令可在控制文件中记录更改。 SET NEWNAME FOR DATAFILE 1 to ‘//system01.dbf’; SWITCH DATAFILE ALL; 将数据文件还原到新位置 如果遇到介质故障,如磁盘驱动器丢失,则可能需要将数据文件还原到新位置。 示例 1. 连接到 RMAN。 rman target 2. 装载数据库。 RMAN> STARTUP MOUNT 3. 使用 RMAN 将数据文件还原到新位置并在控制文件中记录更改。 run{ set newname for datafile 1 to ‘//system01.dbf’; restore database; switch datafile all; recover database; alter database open; } Oracle9i 数据库管理基础 II 13-7 Copyright © Oracle Corporation, 2001. All rights reserved. 还原到新位置 使用 Oracle Enterprise Manager 您可使用 “恢复向导” (Recovery Wizard) 还原和恢复数据库。通过使用 “重命名”(Rename) 页,可将选定数据文件还原到新位置。将数据文件还原到新位置后,它们将被当作数据文 件副本。因此,切换操作将自动执行。 Oracle9i 数据库管理基础 II 13-8 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 RMAN 恢复表空间 使用下面的 RMAN 命令还原和恢复表空间: • RESTORE TABLESPACE • RECOVER TABLESPACE run{ sql “alter tablespace users offline immediate”; restore tablespace users; recover tablespace users; sql “alter tablespace users online”; } 使用 RMAN 恢复表空间 如果已确定需要还原和恢复 USERS 表空间,则可发出下面的 RMAN 命令: run{ sql “alter tablespace users offline immediate”; restore tablespace users; recover tablespace users; sql “alter tablespace users online”; } Oracle9i 数据库管理基础 II 13-9 Copyright © Oracle Corporation, 2001. All rights reserved. 表空间恢复 使用 Oracle Enterprise Manager 您可使用 “恢复向导” (Recovery Wizard) 还原和恢复数据库。在 “恢复选项” (Recovery Selection) 页上,指定表空间恢复。通过 “表空间” (Tablespaces) 页,可选择要恢复的表空 间。您可从 “可用表空间” (Available Tablespaces) 窗口中显示的表空间列表中进行选择。 Oracle9i 数据库管理基础 II 13-10 Copyright © Oracle Corporation, 2001. All rights reserved. 使用 RMAN 重新定位表空间 • 使用 SET NEWNAME 命令还原文件。 • 使用 SWITCH 命令在控制文件中记录新名称。 • 使用 RECOVER TABLESPACE 命令恢复表空间的 数据文件。 使用 RMAN 重新定位表空间 如果由于磁盘故障而无法访问某一数据文件,则需要将其还原到一个新位置或切换到现有 的映像副本。 如果由于某个驱动器的磁盘空间不足,或需要重新组织数据库来提高性能,因而您需要重 新定位表空间,上述过程也非常有用。 示例 您注意到,u03 已经损坏,但数据库仍然打开。有时用户会抱怨无法访问编号为 3 的数据 文件中的信息。 按照以下过程操作可将该数据文件还原到一个新位置: 1. 使用以下命令检查 u03 上数据文件的位置和大小: SQL> SELECT file#, name, bytes FROM v$datafile; FILE# NAME BYTES ----- ------------------------ ---------- 1 /ORADATA/u01/system01.dbf 120586240 2 /ORADATA/u02/undotbs.dbf 31457280 3 /ORADATA/u03/users01.dbf 5242880 ... 确定 u04 上是否有足够的空间来容纳数据文件 3。 Oracle9i 数据库管理基础 II 13-11 使用 RMAN 重新定位表空间(续) 2. 确保文件(如果需要,则为表空间)处于脱机状态,以便可以使用 RESTORE 命令成 功还原。 3. 因为文件已复制到一个新位置(使用 SET NEWNAME 命令),所以必须使用 SWITCH 命令通知 Oracle 服务器新的文件位置,以使该文件成为当前文件。 4. 使用 RECOVER 命令开始将增量备份、累积备份、归档重做日志文件和联机重做日志 的组合应用于已还原的文件,以便使数据库同步。 5. 完成恢复后,使数据文件联机。通知用户数据库可以使用,需要重新输入系统发生故 障前未提交的所有数据。 可以使用以下命令: RUN{ SQL “alter tablespace users offline immediate”; SET NEWNAME FOR datafile ‘/ORADATA/u03/users01.dbf’ to ‘/ORADATA/u04/users01.dbf’; #Specify where to restore the file RESTORE (tablespace users); #Restore the datafile SWITCH datafile 3;#Update the control file and recovery catalog RECOVER TABLESPACE users; #Recover the tablespace SQL “alter tablespace tbs1 online”;} Oracle9i 数据库管理基础 II 13-12 Copyright © Oracle Corporation, 2001. All rights reserved. 小结 在这一课中,您应该能够掌握: • 恢复 ARCHIVELOG 模式下的数据库 • 如果原位置不可用,将数据文件还原到其它位置 Oracle9i 数据库管理基础 II 13-13 Copyright © Oracle Corporation, 2001. All rights reserved. 练习 13-1 和 13-2 概览 这两个练习涉及以下主题: • 使用 RMAN 恢复表空间 • 使用 RMAN 恢复重新定位的数据文件 Oracle9i 数据库管理基础 II 13-14 练习 13-1 RMAN 完全恢复 使用 RMAN 恢复表空间 1. 使用 RMAN 连接到目标数据库,并按以下格式配置控制文件自动备份: $HOME/BACKUP/RMAN/%F.bck 2. 创建以下格式的完整数据库备份: $HOME/BACKUP/RMAN/df_%d_%s_%p.bus 3. 在 SQL*Plus 中,以 sysdba 用户身份连接,然后运行 $HOME/STUDENT/LABS/lab13_01_03.sql script。 4. 调用 SQL*Plus,以 sysdba 用户身份连接并启动例程。 5. 使用 RMAN 连接到目标数据库,还原并恢复 USERS 表空间。 6. 完成恢复后打开数据库。 Oracle9i 数据库管理基础 II 13-15 练习 13-2 RMAN 完全恢复 使用 RMAN 将数据文件恢复到新位置 1. 在 SQL*Plus 中,以 sysdba 用户身份连接,然后运行 $HOME/STUDENT/LABS/breakdb.sql 脚本。 2. 您已确定 u03 ($HOME/ORADATA/u03) 已损坏。必须将 USERS 表空间的数据文件 重新定位到另一位置。 $HOME/ORADATA/u04 具有足够的空间。使用 RMAN,建立一个 RUN 块以将数据文 件从 u03 重新定位到 u04,然后恢复 USERS 表空间。 3. 恢复已重新定位的数据文件。 Oracle9i 数据库管理基础 II 13-16 Copyright © Oracle Corporation, 2001. All rights reserved. 用户管理的不完全恢复 Oracle9i 数据库管理基础 II 14-2 Copyright © Oracle Corporation, 2001. All rights reserved. 目标 完成这一课的学习后,您应该能达到下列目标: • 说明不完全恢复的各个步骤 • 执行不完全数据库恢复 • 确定当前联机重做日志文件的丢失情况 Oracle9i 数据库管理基础 II 14-3 Copyright © Oracle Corporation, 2001. All rights reserved. 不完全恢复概览 例程 SGA 重做日志 缓冲区数据缓冲区 大型共享池锁 共享池 数据字典 高速缓存 共享 SQL 和 PL/SQL PMONDBWnSMON LGWRCKPT ARCn 用户 进程 服务器 进程 PGA 用户 进程 服务器 进程 PGA 参数文件 口令文件 归档日 志文件 11 数据库 数据文件 1 数据文件 2 数据文件 3 控制文件 重做日志 文件 1 重做日志 文件 2 01 1 1 不完全恢复 不完全恢复能够重建数据库,使之恢复到以前的某个时间点(发生故障之前)。 注:该情况会导致进行恢复操作后提交的事务处理中丢失数据。如果需要,这些数据将需 要手动重新输入。只在绝对必要的情况下执行这种恢复操作。不完全恢复操作可能比较困 难而且耗费时间较长。 要执行不完全恢复,需要: • 恢复时间点之前制作的所有数据文件的有效脱机或联机备份 • 截止到指定的恢复时间之前,备份中生成的所有归档日志 通常在完全恢复操作失败的情况下进行不完全恢复。 Oracle9i 数据库管理基础 II 14-4 Copyright © Oracle Corporation, 2001. All rights reserved. 需要进行不完全 恢复的情况 • 因归档日志丢失而导致完全恢复失败。 • 所有未归档的重做日志文件和数据文件均丢失。 • 用户错误 – 某个重要的表被删除。 – 在表中提交了无效数据。 • 当前控制文件丢失,必须使用备份控制文件才能 打开数据库。 需要进行不完全恢复的常见情况 • 丢失归档:由于归档日志损坏或丢失,完全恢复操作失败。数据库只能恢复到应用归 档日志之前的过去的某一时间的状态。 • 丢失重做日志:未镜像重做日志,并且重做日志在归档之前丢失,数据文件也丢失。 恢复无法继续到丢失的重做日志之后。 • 用户错误:用户错误地删除了某个表,提交了用错误的 WHERE 子句更新的数据等等。 • 丢失控制文件:您未镜像控制文件,不知道数据库的结构,但您有旧的二进制副本的 备份。 Oracle9i 数据库管理基础 II 14-5 Copyright © Oracle Corporation, 2001. All rights reserved. 不完全恢复的类型 • 不完全恢复有三种类型: – 基于时间的恢复 – 基于取消的恢复 – 基于更改的恢复 • 在下面的情况下,可能需要使用还原的控制文件进行 恢复: – 控制文件丢失 – 执行不完全恢复,使数据库恢复到某一时间点,而这一 时间点的数据库结构与当前数据库结构不同 不完全恢复的类型 基于时间的恢复 截止指定时间点之前的所有更改提交后,该恢复方法终止。在以下情况下使用此方法: • 对数据作出了不必要的更改,或者删除了重要的表,并且知道错误发生的大概时间。 如果您立即得到通知,恢复时间最短、数据损失最少。精心测试过的程序、安全性和 过程应当可以避免此类恢复。 • 知道未镜像的联机重做日志损坏的大概时间。镜像日志可以避免此类恢复。 基于取消的恢复 在恢复提示符下输入 CANCEL(而不是日志文件名),即可终止该恢复方法。在以下情况 下使用此方法: • 当前重做日志文件或组被破坏,并且不可用于恢复。镜像可以避免此类恢复。 • 进行恢复所需的归档重做日志文件丢失。经常备份并将归档存放在多个目标位置可以 避免此类恢复。 Oracle9i 数据库管理基础 II 14-6 不完全恢复类型(续) 基于更改的恢复 截止指定系统更改编号 (SCN) 之前所做的所有更改提交之后,该恢复方法即终止。在分布 式环境中恢复数据库时,使用这种方法。本课程不对这种方法进行详细说明。 使用备份控制文件恢复 指定的恢复方法(基于取消、基于时间或基于更改的恢复)已完成或控制文件已恢复时, 该恢复方法终止。必须在 RECOVER DATABASE 命令中指定恢复将使用控制文件的旧副本。 在以下情况下使用这种方法: • 所有控制文件都已丢失,并且无法重新创建,但存在控制文件的二进制备份。镜像控制 文件(至不同磁盘)并保留 CREATE CONTROLFILE 语句的当前文本版本将减少使用 该方法的几率。 • 将某个结构与当前数据库不同的数据库还原到先前的某个时间点。 Oracle9i 数据库管理基础 II 14-7 Copyright © Oracle Corporation, 2001. All rights reserved. 不完全恢复原则 • 请认真按照所有步骤进行操作。 • 恢复前后均应执行整体数据库备份。 • 始终要验证恢复是否成功。 • 备份并删除归档日志。 不完全恢复原则 • 认真按照所有恢复步骤进行操作很重要,因为不完全恢复的大多数问题都是由恢复过 程中的 DBA 错误造成的。 • 事务活动只能前滚至期望的时间,而不能回退至期望的时间。这就是对要及时恢复的 数据库必须还原所有数据文件的原因。如果没能还原所有数据文件,将无法打开(非 同步)数据库。 • 开始不完全恢复之前应执行整体关闭数据库备份(包括控制文件和重做日志)。这样 做的好处有: – 允许从错误中恢复。如果恢复失败(例如,恢复超出了期望的恢复点),重做 日志和控制文件将无法用于下一次恢复,除非存在这些文件的备份。 – 如果恢复失败,可以节省时间。在这种情况下,您可以从新备份中还原数据文 件,而不是从需要应用归档的上一次备份中还原。 注:如果不执行整体备份,至少应归档当前重做日志 (ALTER SYSTEM ARCHIVE LOG CURRENT) 并备份控制文件 (ALTER DATABASE BACKUP CONTROLFILE TO )。 • 恢复成功后,执行关闭的数据库的整体备份。如果需要进行恢复才能完成下一次排定 的备份,则建议使用这种方法。 Oracle9i 数据库管理基础 II 14-8 不完全恢复原则(续) • 在允许用户访问系统之前一定要验证故障是否已经修复,以防止恢复失败而需要再次进 行恢复。 • 从系统中备份(以后删除)归档日志,以避免混合不同数据库复本中的归档。 请看以下示例: – 日志序列号为 144 的数据库包含从 arch_120.rdo 到 arch_143.rdo 的归档日 志。 – 执行不完全恢复后,将创建新的数据库复本,并将数据库的日志序列号设置为 0。 – 归档日志 arch_120.rdo 到 arch_143.rdo 现在是旧数据库复本的一部分。 – 日志切换 120 次后,归档日志 arch_120.rdo 将被覆盖,并通过所有其它归档 (包括旧的归档日志 arch_121.rdo 至 arch_143.rdo)备份。 – 此后,如果恢复需要 arch_124.rdo,您需要确保从该备份还原的归档日志属于 正确的数据库复本,否则将出现错误。 Oracle9i 数据库管理基础 II 14-9 Copyright © Oracle Corporation, 2001. All rights reserved. 不完全恢复和警报日志 • 在恢复前后均应检查警报日志 • 包含错误信息、提示和 SCN 警报日志 恢复过程中,进度信息存储在警报日志中。恢复前后,都应检查该文件。下面是一个 alert.log 文件示例: $ vi /disk1/BDUMP/alert_DB00.log ... Media Recovery Log ORA-279 ... RECOVER database until time ‘2001... Wed Mar 07 11:55:13 2001 RECOVER DATABASE CONTINUE DEFAULT Media Recovery Log /disk1/archive/arch_34.rdo Incomplete recovery done UNTIL CHANGE 309121 Media Recovery Complete Completed: RECOVER DATABASE CONTINUE DEFAULT Wed Mar 07 11:55:13 2001 alter database open resetlogs ... Oracle9i 数据库管理基础 II 14-10 Copyright © Oracle Corporation, 2001. All rights reserved. 用户管理的不完全恢复的过程 1. 关闭数据库,然后备份数据库。 2. 还原所有数据文件。不要还原控制文件、重做日志、 口令文件或参数文件。 3. 装载数据库。 4. 将数据文件恢复到故障前的某一点。 5. 使用 RESETLOGS 打开数据库。 6. 执行关闭数据库备份。 使用用户管理的过程的不完全恢复步骤 出现故障而要求进行不完全恢复时,必须拥有下列文件才能进行恢复: • 包含所有数据文件的有效脱机或联机备份。 • 从上次还原的备份到发生故障之前的所有归档重做日志。 请按照下列步骤进行恢复: 1. 对现有数据库执行关闭的数据库的完全备份。关闭数据库,从备份还原所有数据 文件(包括系统表空间文件)。 2. 还原所有数据文件,以及时恢复数据库。 3. 将数据库置于装载模式并确保数据文件处于联机状态。 4. 恢复数据库。 5. 使用 RESETLOGS 选项打开数据库并验证恢复。 6. 对数据库执行关闭的数据库的整体备份。 Oracle9i 数据库管理基础 II 14-11 Copyright © Oracle Corporation, 2001. All rights reserved. RECOVER 命令概览 • 恢复发出取消命令之前的数据库: • 恢复某一时间之前的数据库: • 使用备份控制文件恢复: RECOVER DATABASE until cancel RECOVER DATABASE until time ‘2001-03-04:14:22:03’ RECOVER DATABASE until time ‘2001-03-04:14:22:03’ using backup controlfile 用于不完全恢复的 RECOVER 命令 以下命令用于执行不完全恢复: RECOVER [AUTOMATIC] DATABASE
还剩353页未读

继续阅读

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

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

需要 15 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf