Professional Documents
Culture Documents
学生指南 • 第 1 册
D11297CN11
产品版 1.1
2002 年 3 月
D34485
作者 版权所有 © Oracle Corporation,2000,2001。保留所有权利。
出版商
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
配置文件
课前须知
在开始本课程的学习之前,您应该具备以下条件:
• 了解 SQL 命令和基本的操作系统命令(Unix 或 NT)
前提条件
• Oracle 9i 数据库管理基础 I (D11321GC11)(课内)
本课程的组织结构
Oracle 9i 数据库管理基础 II 课程由教师讲解,同时还包括实际操作练习。通过联机演示和笔头练
习,还可强化对课程中介绍的概念和技能的理解。
前言 - 3
相关出版物
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
前言 - 4
联网概览
完成这一课的学习后,您应该能达到下列目标:
• 说明随 Oracle9i 提供的用于管理复杂网络的解决方案
• 介绍 Oracle 联网附加解决方案
• 配置网络环境
• 维护网络
• 对网络进行优化、故障排除和监视
• 实施网络安全性
• 集成旧有的系统
配置网络环境
要成功实施网络环境,应考虑以下几个问题:
• 要配置的网络属于哪种类型?是只有几个客户机的小型网络,还是有大量
客户机和服务器的大型网络?
• 使用的是单一协议还是多个协议?
• 网络规模是固定的还是在不断扩展?
• 您有哪些配置选项?
• 有没有可用于配置网络的用户友好的工具?
• 严格地说,您的网络属于客户机/服务器结构还是数据多层结构?
维护网络
• 您的企业需要对网络进行何种程度的维护?
• 您还将向网络添加客户机和服务器吗?
• 是否需要经常升级网络?
Oracle9i 数据库管理基础 II 1-3
对网络进行优化、故障排除和监视
• 您的网络是否包括所需的工具?
• 您预计工作量有多大?
– 用户数
– 事务处理数
– 节点数
– 节点的位置
实施网络安全性
• 是否需要确保网络环境的安全?
• 是否通过网络传输机密和敏感的信息?
• 哪些工具可用于实施安全性?
• 是否预计要通过 Internet 访问服务器?
集成旧有的系统
旧有的系统将如何与联网环境进行交互?
注:事先进行分析以澄清这些问题,可以帮助您从头开始选择合适的网络策
略。
网络
客户机
服务器
• 网络连接客户机和服务器
• 客户机和服务器使用同一种 “语言”(即协议)。
两层网络
在两层网络中,客户机直接与服务器进行通信。这也称作客户机-服务器 体系
结构。客户机-服务器网络体系结构所包含的客户机进程从服务器进程请求服
务。使用某一给定协议,客户机和服务器可以通过网络进行通信。客户机和
服务器都上必须安装该协议。
配置客户机-服务器网络时一个常见的错误是:在小型的两层网络环境中建立
应用程序的原型,然后通过向服务器添加多个用户来扩大网络的规模。这种
方法会导致系统效率低下,原因是服务器负载过重。要使网络规模适当地扩
大到几百个甚至几千个用户,则需要实施 N 层 体系结构,这种结构在客户机
和服务器之间添加一个或多个服务器或代理。
网络 网络
客户机
中间层
服务器
• 客户机可以是瘦客户机或 PC
• 中间层可以包含应用程序和服务
• 实际数据存放在服务器上
N 层网络
在 N 层 体系结构中,中间层代理的角色可以是多种多样的。它可以提供以下
几种服务:
• 转换服务(即,将一台主机上安装旧有应用程序的环境转换为客户机-服
务器环境,或充当不同协议之间的桥梁)
• 可伸缩性服务(即,充当事务处理监视程序,以平衡服务器之间的请求负
载)
• 网络代理服务(即,将一个请求映射到多个不同的服务器、整理相应的多
个结果并将单一响应返回到客户机)
DECnet
DECnet
TCP/IP
TCP/IP
APPC/LU6.2
TCP/IP
复杂网络的问题
网络应改善通信,而不是阻碍分布式操作。在较为复杂的网络环境中,必须
解决下面几个问题:
• 不同硬件平台运行不同操作系统
• 这些平台上使用多个协议
• 彼此不同但相互联系的应用程序之间存在不同的语法
• 相互联系的应用程序处在不同的地理位置
设计合理的复杂网络能够支持大型分布式系统。
• 连接性
• 目录服务
• 可伸缩性
• 安全性
• 可访问性
Oracle 网络解决方案
Oracle 提供一整套产品和工具,最大限度地满足任何联网需要。Oracle Net
Services 支持的多种协议可以解决连接性的问题。Oracle Internet Directory
(OID) 与 Oracle9i 紧密地集成在一起。OID 是与 LDAP 版本 3 兼容的目录服
务,它可以执行各种请求,包括从网络服务名称到用户身份证明到策略。
Oracle 可以通过使用连接管理器 (Connection Manager) 和 Oracle Shared Server
来扩大规模,从而满足大量用户的需要。Oracle 支持第三方加密和数据完整
性产品以及验证适配器,从而可以满足安全性的需要。Oracle 支持的是行业
或事实标准安全性产品,而不是专有产品。通过 Oracle Heterogeneous
Services,Oracle 甚至可以支持与非 Oracle 数据库集成。
• 与协议无关
• 支持多种平台
• 集成的 GUI 管理工具
• 多种配置选项
• 跟踪和诊断工具集
• 基本安全性
管理和配置
客户机 协议 协议
服务器
任一平台 任一平台
数据库连接可以使用以下附加协议来实现:
• Internet 内部 ORB 协议 (IIOP)
• 超文本传输协议 (HTTP)
目录命名
LDAP
LDAP 是轻量目录访问协议 (Lightweight Directory Access Protocol) 的缩写,它
是目录服务的 Internet 标准。LDAP 已成为网络安全性的一个关键性体系结构
组件,并已成为在网络上集成各种应用程序和服务的一个重要平台。通过提
供以下功能,它大大简化了目录信息的管理:
• 与单个可扩展目录服务(如 Oracle Internet Directory)之间使用完整定义
的标准接口
• 快速开发和部署使用目录的应用程序
• 一组编程接口,支持无缝地部署 “Internet 就绪” 的应用程序
2
1
3
连接管理器
(Connection
Manager)
服务器
连接多路复用
本示例说明连接管理器 (Connection Manager) 如何充当多路复用器,将多台客
户机的数据传递给一台服务器。
1. 通过连接到连接管理器 (Connection Manager),建立从某台客户机到服务
器的初始
连接。
2. 连接管理器 (Connection Manager) 建立与该服务器的连接。
3. 当其它客户机请求通过连接管理器 (Connection Manager) 与该服务器连
接时,它们
使用的仍是连接管理器 (Connection Manager) 用于初始连接的连接。
• 加密
– 在网络节点之间编码
– DES、RSA、3DES
• 验证
– 通过第三方服务和安全套接字层 (SSL) 验证用户
– Kerberos、Radius、CyberSafe
• 数据完整性
– 确保传送过程中的数据完整性
– MD5、SHA
1 3
Oracle Advanced Security
已安装
客户机 服务器
2
解密
fdh37djf246gs’b[da,\ssk
• Oracle 与多家主要的防火墙供应商合作以提供防火墙
支持
• Oracle Net Application Proxy Kit 使防火墙供应商可
以为 Oracle 环境提供连接支持
• Oracle Net Application Proxy 基于连接管理器
(Connection Manager)
• Oracle 支持两类防火墙:
– 基于代理的防火墙
– 基于包的状态检查的防火墙
• 实现对旧有数据的访问,就象访问一个本地关系数据库
中的数据一样
• 启用 Oracle 过程调用以访问非 Oracle 系统、服务或
API
异种服务
异种服务提供 Oracle 服务器与非 Oracle 环境之间的无缝集成。借助于异种服
务,您可以实现以下功能:
• 使用 Oracle SQL 透明地访问存储在非 Oracle 数据存储(如 Informix、DB2、
SQL Server 和 Sybase)中的数据
• 使用 Oracle 过程调用从 Oracle 分布式环境透明地访问非 Oracle 系统、服
务或应用程序编程接口 (API)
要访问特定的非 Oracle 系统,需要使用异种服务代理。
好处
通过异种服务可以实现与外部数据源的集成。
注:本课程不包含配置异种服务的内容。
外部过程
与标准 SQL 或 PL/SQL 相比,Oracle 对外部过程的支持为开发人员提供了更
多的开发选择。可以配置监听程序来监听外部过程调用。PL/SQL 或 SQL 应
用程序调用外部过程时,监听程序就会启动一个针对特定网络会话的进程
(称为 extproc)。通过监听程序服务,PL/SQL 将以下信息传递给 extproc:
• 共享库名称
• 外部过程名称
• 参数(如果需要)
然后,extproc 程序加载共享库并调用外部过程。
在这一课中,您应该能够掌握:
• 说明 Oracle 用于管理复杂网络的解决方案:
– Oracle Net Services
– IIOP 和 HTTP 连接性
– Oracle Internet Directory
– Oracle Shared Server
– 连接管理器 (Connection Manager)
• 描述 Oracle 的附加解决方案:
– Oracle Advanced Security
– 异种服务
完成本课的学习后,您应该能达到下列目标:
• 解释 Oracle Net 堆栈式通信体系结构的主要组件
• 解释 Oracle Net 在客户机/服务器连接中的作用
• 描述如何通过 Oracle 联网产品建立 Web 客户机连接
双任务通用协议 双任务通用协议
(Two Task Common) (Two Task Common)
网络协议 网络协议
客户机/服务器应用程序连接
使用 Oracle Net,可在客户机和数据库服务器之间建立网络连接。Oracle Net
是一种软件组件,同时驻留在客户机和数据库服务器上。它位于网络协议的
上层。
从客户机启动与 RDBMS 服务器的连接时,数据从客户机上的堆栈传出,通
过网络,到达 RDBMS 服务器中的类似堆栈。Oracle Net 体系结构使用类似于
开放系统互连 (OSI) 网络模型的堆栈。
下面将在更高级别对 Oracle Net 堆栈式通信体系结构的每一基本组件的结构
加以说明:
客户机应用程序
客户机应用程序(如 SQL*Plus)使用 Oracle Call Interface (OCI) 与服务器进
行通信。OCI 是一种软件组件,它为客户机应用程序和服务器能够理解的
SQL 语言提供了一个接口。
双任务通用协议 (Two-Task Common)
“双任务通用协议” (Two-Task Common, TTC) 为客户机与服务器上的不同字符
Oracle9i 数据库管理基础 II 2-4
集或格式提供字符集和数据类型转换。TTC 属于 OSI 表示层。
客户机/服务器应用程序连接(续)
Oracle Net 基础层
Oracle Net 基础层负责建立并维护客户机应用程序和服务器之间的连接。
Oracle Net 必须同时驻留在客户机与服务器上才能进行对等通信。
在客户端,Oracle Net 基础层负责确定下列连接事项:
• 服务器的位置
• 是否在连接中使用一个或多个协议
• 如何处理异常和中断
在服务器端,Oracle Net 基础层不仅执行在客户端执行的相同任务,还使用监
听程序来接收传入的连接请求。
注:监听程序将在后面进行详细说明。
Oracle Net 基础层还与命名服务和 Oracle Advanced Security 通信以确保安全连
接。
“Oracle 协议支持” (Oracle Protocol Support)
“Oracle 协议支持” (Oracle Protocol Support, OPS) 负责将 Oracle Net 功能映射
到在客户机与服务器之间的连接中所使用的行业标准协议。该层支持下列网
络协议:
• TCP/IP
• 具有 SSL 的 TCP/IP
• 命名管道
• LU6.2
• “虚拟接口” (Virtual Interface, VI)
注:“虚拟接口” (Virtual Interface, VI) 协议可用于应用程序 Web 服务器和数据
库服务器通信。VI 是用于群集服务器环境的事实标准通信协议。
Web 应用程序连接
客户机 Web 浏览器通过 Internet与 Oracle 数据库服务器的连接与客户机-服务
器应用程序的连接类似,但体系结构有所不同。通常,客户机上的浏览器可
使用 HTTP 与应用程序 Web 服务器通信,以发出连接请求。该 Web 服务器可
将请求发送给应用程序进行处理。该应用程序使用 Oracle Net 与也配置有
Oracle Net 的 Oracle 数据库服务器通信。
JDBC OCI 驱动程序用来连接 Oracle 客户机,而 JDBC 瘦驱动程序用于不用
Oracle Installation 的客户机,特别是安装了 Java 小程序的客户机。
用户
Web 浏览器
应用程序 Oracle
Web 服务器 服务器
Web 服务器中间层连接
在以上网络配置中,Internet 上使用 HTTP 协议的 Web 浏览器可以调用应用程
序 Web 服务器上的 Java 小程序或 Java 应用程序。该 Web 服务器,充当安装
了 Oracle Net 或 JavaNet 的客户机,与运行 Oracle Net 的 Oracle 服务器相连。
必须在该 Web 服务器客户机与 Oracle 服务器上安装 Oracle Net 或 JavaNet 才
能建立连接。假定使用的是基础协议连接。
Oracle 协议 Oracle 协议
堆栈 支持
网络协议 网络协议
JDBC 瘦驱动程序
Oracle Net
JavaTTC 基础层
JavaNet OPS
TCP/IP 网络 TCP/IP 网络
协议 协议
客户机
服务器
HTTP
IIOP
Web
浏览器
支持 HTTP
Web 和 IIOP 的
浏览器 Oracle 服务器
客户机
数据库服务器
客户机 Oracle
RDBMS
Web 浏览器
HTTP, IIOP
HTTP, IIOP OPS
TCP/IP TCP/IP
• 数据库服务
• 服务名
– 数据库的逻辑表示
– 数据库对客户机的表现方式
• 连接描述符
– 数据库的位置
– 数据库服务的名称
• 监听程序
– 接收客户机连接请求
– 将请求发送给数据库服务器
连接概念与术语
对于客户机而言,Oracle 数据库表现为一种服务;即该数据库代表客户机执
行任务。数据库可以具有关联的一种或多种服务,一个数据库可以表现为多
种服务,而一种服务也可以作为多个数据库例程来实现。
服务名 是作为全局数据库名称的字符串,即由安装或创建数据库过程中输入
的数据库名称和域名构成的名称。服务名包含在连接描述符的连接数据部分。
客户机通过使用连接描述符 来连接至数据库服务,该描述符提供了数据库的
位置和数据库服务的名称。
连接描述符的地址部分实际上就是监听程序 的协议地址。要连接至数据库服
务,客户机首先与监听程序进程联系,该进程通常驻留在数据库服务器上。
监听程序接收传入的客户机连接请求,然后将这些请求传送给数据库服务器。
一旦建立连接,客户机与数据库服务器即可直接进行通信。与商业地址的情
况非常相像,也需要将监听程序配置为在协议地址上接受客户机的请求。该
协议地址定义了监听程序正在监听的协议以及其它特定于协议的信息。
• 服务注册
– 数据库向监听程序注册信息
– 每个例程可用的服务处理程序
• 服务处理程序
– 连接点
– 调度程序或专用服务器
连接概念与术语(续)
连接描述符还指定了数据库服务名,客户机通过该服务名来建立连接。监听
程序知道可使用哪些服务来发送连接请求,因为 Oracle 数据库向监听程序动
态注册该信息。该注册过程称为服务注册。它还为监听程序提供有关数据库
例程和每个例程可用的服务处理程序方面的信息。
服务处理程序 充当 Oracle 数据库服务器的连接点。服务处理程序可以是调度
程序,也可以是专用服务器。
• 本地管理
– 网络中的每台计算机上都具有本地文件
• 集中管理
– 符合 LDAP 的目录服务器
– Oracle Names Server
• ldap.ora
• listener.ora
• names.ora
• sqlnet.ora
• tnsnames.ora
在这一课中,您应该能够掌握:
• 解释 Oracle Net 堆栈式通信体系结构的主要组件
• 解释 Oracle Net 服务在客户机服务器连接中的作用
• 描述如何通过 Oracle 联网产品建立 Web 客户机连接
完成这一课的学习后,您应该能达到下列目标:
• 了解监听程序如何响应传入的连接
• 描述动态服务注册
• 使用 Oracle Net Manager 配置监听程序
• 使用 “监听程序控制实用程序” (Listener Control
Utility, lsnrctl) 控制监听程序
• 为 IIOP 和 HTTP 连接配置监听程序
客户机 服务器
监听程序
tnsnames.ora
sqlnet.ora listener.ora
sqlnet.ora
监听程序进程的特点
数据库服务器通过监听程序接收来自客户机应用程序的初始连接。
监听程序是在节点上运行的进程,该进程可代表一个或多个数据库监听传入的
连接。以下列出了监听程序的特点:
• 监听程序进程可监听多个数据库
• 多个监听程序可代表一个数据库进行监听,以实现负载均衡
• 监听程序可监听多个协议
• Oracle Net 中的监听程序的缺省名称是 LISTENER
• 每个 listener.ora 文件中的监听程序的名称必须唯一
注:Oracle9i 数据库要求使用 Oracle9i 监听程序。它不支持以前版本的监听程
序。但是,可以对通过早期版本的 Oracle 创建的数据库使用 Oracle9i 监听程
序。
使用 Oracle Enterprise Manager
“导航器” (Navigator) 中的 “节点” (Nodes) 文件夹下的 “监听程序” (Listeners) 页
显示出在“导航器” (Navigator) 中选定的节点的监听程序属性。这些属性信息包
括监听程序监视的所有数据库的列表以及监听程序的
Oracle9i 数据库管理基础 II 3-3 TNS 地址。可通过单击
“监听程序状态” (Listener Status) 确定监听程序的运行状态。
连接方法
客户机向服务器发出连接请求时,监听程序执行下列操作
之一:
• 衍生一个服务器进程并将连接传送给该进程或由其继承
• 将连接传送给 Oracle Shared Server 配置中的调度程序
• 将连接重定向到调度程序或服务器进程
连接方法
衍生并继承
监听程序将连接传送给衍生的进程或由其继承。该方法只在专用服务器配置中
使用。
直接传送
使用 Oracle Shared Server 时,监听程序将把连接传送给调度程序。该方法对于
专用服务器进程不可用。
重定向(消息)
如果使用 Shared Server,监听程序将把连接重定向到调度程序。
注:本课后面将详细讨论每种连接类型。
直接传送与重定向的透明性
不论连接会话是传送、重定向给现有进程还是由其继承,该会话对于用户都是
透明的。只有通过打开跟踪并分析产生的跟踪文件才能检测到该会话。
3
4
2
1
监听程序
衍生、继承和直接传送连接
接收到连接请求时,监听程序可能会衍生专用的服务器进程,并将连接传送给
该进程或由其继承。该方法的使用取决于所用操作系统是否支持网络终端继承
性。当监听程序衍生专用服务器进程并由该服务器进程继承连接时,即称为继
承会话。此时将按顺序出现下列事件:
1. 客户机使用配置的协议建立与监听程序的连接,并向该监听程序发送一
个 CONNECT 数据包。
2. 监听程序检查是否已定义 SID。如果已经定义,监听程序将分派或衍生
一个新进程来处理该连接。此时会在监听程序和新的服务器进程之间建
立继承连接,以传送进程初始化信息。传送完毕后,继承连接关闭。请
注意,新的服务器进程会继承 TCP 套接字。
3. 服务器进程将 RESEND 数据包发送回客户机。
4. 继续向新衍生的专用服务器进程发送新的 CONNECT 数据包。
5. 该专用服务器进程接受传入的连接并将 ACCEPT 消息转发回客户机。
客户机 服务器
服务器或
调度程序
6 进程
5 3
端口
4 2
1 端口
监听程序
重定向会话
当不具备继承或直接传送连接的条件时,将建立重定向会话。下列步骤概述了
建立该类连接的方法:
1. 客户机使用配置的协议建立与监听程序的连接,并向该监听程序发送一
个 CONNECT 数据包。
2. 监听程序检查是否定义了 SID。如果已经定义,监听程序将衍生一个新
线程或新进程以为新连接提供服务。然后在监听程序和新进程/线程间建
立 IPC 连接。
3. 新进程/线程从用户定义的空闲端口列表选择一个新的 TCP/IP 端口,然后
将该信息传送回监听程序。
4. 监听程序将该新端口插入 REDIRECT 数据包并将其发送回客户机,客户
机和监听程序间的源 TCP 套接字将重置。
5. 根据 REDIRECT 数据包中指定的重定向地址建立新的 TCP 连接,然后将
CONNECT 数据包转发给专用服务器进程。
可以通过两种方式配置监听程序:
• 动态服务注册
– 无需在 listener.ora 文件中进行配置
– 监听程序依赖 PMON 进程
• 静态服务配置
– 用于 Oracle8 及更早版本
– 需要配置 listener.ora
– 对 Oracle Enterprise Manager 和其它服务是必需的
配置监听程序
动态服务注册
Oracle9i 例程使用服务注册来通知监听程序有关其数据库服务的信息。服务注
册依赖 PMON 进程向监听程序注册例程信息。PMON 还通知监听程序有关例
程和共享服务器调度程序的当前状态和负载。
如果安装了 Oracle9i JVM,则可向监听程序动态注册 HTTP 和 IIOP 监听终端。
启动例程时,系统会从初始化参数文件中读取有关监听程序的初始化参数,
PMON 通过该文件向监听程序注册信息。如果例程启动时监听程序尚未运
行,PMON 将不向监听程序注册信息。PMON 将继续尝试与监听程序建立联
系。监听程序将拒绝建立与未注册服务进行的任何连接。
静态服务注册
要使监听程序接受来自 Oracle8 或更早版本的数据库的客户机请求,必须配置
listener.ora 文件。
注:对于 Oracle Enterprise Manager (OEM) 和诸如外部过程及异种服务等其它
服务来说,必须进行静态配置。
Oracle9i 数据库管理基础 II 3-9
配置监听程序(续)
动态服务注册的优点
• 无需在 listener.ora 文件中设置 SID_LIST_LISTENER_NAME 参数,该参数
用于指定有关监听程序所服务的数据库的信息。如果使用的管理工具要求使用该
参数,则仍需要进行设置。
• 启用连接时故障转移功能。
• 启用共享服务器的连接负载平衡功能。
安装 Oracle 软件时,会为初始数据库创建具有下列缺省设
置的 listener.ora 文件:
• 监听程序名 LISTENER
• 端口 1521
• 协议 TCP/IP 和 IPC
• SID 名 缺省例程
• 主机名 缺省主机名
listener.ora 文件
listener.ora 文件用来为静态服务注册配置监听程序。listener.ora 文
件必须与
监听程序驻留在同一节点或计算机上。
listener.ora 文件包含下列各项的配置信息:
• 监听程序名
• 监听程序地址
• 使用监听程序的数据库
• 监听程序参数
1. LISTENER =
2. (ADDRESS_LIST =
3. (ADDRESS= (PROTOCOL= TCP)(Host= stc-
sun02)(Port= 1521)))
4. SID_LIST_LISTENER =
5. (SID_LIST =
6. (SID_DESC =
7. (ORACLE_HOME= /home/oracle)
8. (GLOBAL_DBNAME = ORCL.us.oracle.com)
9. (SID_NAME = ORCL)))
listener.ora 文件的内容
缺省的 listener.ora 文件包含下列参数:
1. 监听程序的名称。缺省名称是 LISTENER。
2. ADDRESS_LIST 参数包含一个地址块,监听程序监听其中所列地址处的
传入连
接。该块中定义的每个地址都代表一种监听程序接收连接的不同方法。
3.TCP 地址表示从网络上的客户机传入的 TCP 连接,连接目标是端口 1521。
这些客户机使用各自的 tnsnames.ora 文件中定义的端口连接至该监听程序。
监听程序将根据为其定义的 SID_LIST 来指定要连接的数据库。请注
意,在配置有监听程序的节点上,只要监听程序具有唯一的名称和唯一
的端口,则可配置多个监听程序。所配置的每个监听程序都有自己的
SID_LIST,但是,一个数据库可以由多个监听程序提供服务。
4. 监听程序可对一台机器上的多个数据库进行监听。这些数据库的 SID 在
SID_LIST_listener_name 块或参数处定义。
5. 如果定义了多个 SID,则需要定义 SID_LIST 参数。
Oracle9i 数据库管理基础 II 3-12
listener.ora 文件的内容(续)
6. 对于每个定义的 SID 来说,必须存在 SID_DESC 参数。
7. ORACLE_HOME 标识服务的 Oracle 主目录位置。这使监听程序能够确
定 Oracle 可执行文件的位置。
8. 参数 GLOBAL_DBNAME 标识数据库的全局数据库名称,这是由数据库
名和数据库域构成的名称。全局数据库名称的格式为
database_name.database_domain。例如 ORCL.us.oracle.com,其
中,数据库名部分 ORCL 是对数据库的简称。数据库域部分
us.oracle.com 指定数据库所在的数据库域,同时也保证了全局数
据库名称唯一。该参数必须嵌在 SID_DESC 下并应与初始化参数文件
中的 SERVICE_NAMES 参数的值匹配。
9. SID_NAME 参数定义监听程序代表其接受连接的 SID 的名称。
TRACE_DIRECTORY_listener_name 指定保存跟踪文件的目录。
(Unix: $ORACLE_H OME/network/trace
NT: ORACLE_HOME\ network\ trace)
TRACE_FILE_listener_name 设置跟踪文件的名称。
(listener.trc)
TRACE_LEVEL_listener_name 对指定级别打开或关闭跟踪:
(OFF) user— 用户跟踪信息
admin — 管理跟踪信息
support — “Oracle 支持服务” (Oracle
Support Services) 跟踪信息
创建附加监听程序
在服务器上安装企业版或标准版时,Oracle Net Configuration Assistant 会自动
为 Oracle 数据库配置一个名为 LISTENER 的监听程序,该监听程序具有一个
TCP/IP 协议地址。如果需要创建附加监听程序,则应按照下述步骤,使用
Oracle Net Manager 在 listener.ora 文件中配置附加监听程序:
1. 在导航器窗格中,展开 “Oracle Net 配置” (Oracle Net Configuration) > “本
地” (Local) > “监听程序” (Listeners)。
2. 从 “编辑” (Edit) 菜单选择 “创建” (Create)。
3. 在出现的对话框上的 “监听程序名” (Listener Name) 字段中输入监听程序
的名称。
4. 从您的监听程序内的下拉列表选择 “监听位置” (Listening Locations)。
5. 单击 “添加地址” (Add Address) 按钮。
6. 根据需要在 “协议” (Protocol)、“主机” (Host) 和 “端口” (Port) 字段中更改
或输入信息。
7. 从 Oracle Met Manager 的 “文件” (File) 菜单选择 “保存网络配置” (Save
Network Configuration)。
注:在 Windows NT 上,可在 “本地” (Local) 文件夹中配置
ORACLE_HOME/network/admin 目录下的配置文件中的网络元素。也可以
Oracle9i 数据库管理基础 II 3-15
从 “文件” (File) 菜单使用 “打开网络配置” (Open Network configuration) 选择其
配置服务
配置数据库服务
1. 从您的监听程序内的下拉列表选择 “数据库服务” (Database Services)。
2. 单击 “添加数据库” (Add Database) 按钮。
3. 在相应的字段中输入全局数据库名称、Oracle 主目录和 SID。
4. 从 Net Manager 的 “文件” (File) 菜单选择 “保存网络配置” (Save Network
Configuration)。
配置监听程序以记录和跟踪事件
1. 在 Net Manager 内,从您的监听程序的下拉菜单选择 “常规参数” (General
Parameters)。
2. 单击 “事件记录与跟踪” (Logging & Tracing) 选项卡。
3. 通过选择 “启用事件记录” (Logging Enabled) 选项按钮启用事件记录。
4. 输入日志文件的路径和文件名。
5. 从 Oracle Net 的 “文件” (File) 菜单选择 “保存网络配置” (Save Network
Configuration)。
6. 对跟踪重复上述步骤(如果需要)。注意,事件记录和跟踪(尤其是跟
踪)都会占用大量磁盘空间,因此应对其进行监视。跟踪应仅在需要时
使用。
要确保服务注册可用,必须配置下列初始化参数:
• SERVICE_NAMES
• INSTANCE_NAME
配置服务注册
Oracle9i 或 Oracle8i 例程使用动态服务注册。注册由每个数据库例程的 PMON
进程执行,每个例程在数据库初始化参数文件中都有必需的配置。动态服务注
册不要求在 listener.ora 文件中进行任何配置。
动态服务注册在数据库初始化文件中配置。监听程序配置必须与数据库初始化
文件中的信息同步。
必须配置下列初始化参数,才能进行服务注册:
• SERVICE_NAMES:为该例程连接的数据库服务指定一个或多个名称。可
以指定多个服务名,以区别同一数据库的不同用途。
• INSTANCE_NAME:指定例程名。在单例程数据库系统中,例程名通常与
数据库名相同。
示例
SERVICE_NAMES=sales.us.oracle.com
INSTANCE_NAME=salesdb
服务注册
缺省情况下,PMON 向 TCP/IP 的缺省本地地址 — 端口 1521 — 处的本地监听
程序注册服务信息。
使用非缺省监听程序
可以强制 PMON 向不使用 TCP/IP 或端口 1521 的服务器上的本地监听程序进
行注册,具体方法是按如下所示对初始化参数文件中的 LOCAL_LISTENER 参
数进行配置:
LOCAL_LISTENER=listener_alias
必须通过 tnsnames.ora 等命名方法将 listener_alias 解析为监听程序
协议地址。以下是 tnsnames.ora 中的一个条目示例:
listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-
server)(PORT=1421)))
• 提示符语法:
LSNRCTL> <command name>
• 控制非缺省监听程序
LSNRCTL> set current_listener listener02
使用以下命令控制监听程序:
• START [listener_name]
• STOP [listener_name]
LSNRCTL 命令
启动监听程序
可以使用 START 命令从 “监听程序控制实用程序” ( Listener Control Utility) 启
动监听程序。关闭监听程序时,必须对 listener.ora 文件进行手动更改。
START 命令的参数是监听程序的名称,如果未指定参数,则启动当前监听程
序。如果未定义当前监听程序,则启动 LISTENER。
LSNRCTL> START [listener_name] 或
$ lsnrctl start [listener_name]
在 Windows NT 上,也可通过 “控制面板” (Control Panel) 启动监听程序:
1. 双击 “控制面板” (Control Panel) 窗口中的 “服务” (Services) 图标。
2. 选 择 Oraclehome_nameTNSListener 服 务 ( 使 用 缺 省 监 听 程 序 名
LISTENER 时的服务名)或 Oraclehome_nameTNSListenerlsnr,其中,
lsnr 是非缺省监听程序名。
3. 单击 “启动” (Start) 启动服务。
4. 在 “服务” (Services) Oracle9i
窗口中,单击 “关闭” (Close)。
数据库管理基础 II 3-23
LSNRCTL 命令(续)
停止监听程序
STOP 命令用来停止监听程序。监听程序必须在运行才能正确停止。如果已配置
口令,在使用 STOP 命令之前必须使用 SET PASSWORD 命令。必须从
LSNRCTL 提示符设置口令;不能从操作系统命令行设置口令。在停止监听程序
之前,最好向所有网络用户发送一则警告消息。
LSNRCTL> STOP [listener_name] 或
$ lsnrctl stop [listener_name]
附加
命令
LSNRCTL 命令 说明
CHANGE_PASSWORD 动态更改监听程序的加密口令。
EXIT 退出 LSNRCTL 实用程序。
HELP 提供所有可用的 LSNRCTL 命令的列表。
QUIT 提供 EXIT 命令的功能。
RELOAD 关闭除监听程序地址外的所有内容并重新读取
listener.ora 文件。使用该命令添加或更改服务时
不必实际停止监听程序。
SAVE_CONFIG 创建监听程序配置文件的备份(名为
listener.bak),然后更新 listener.ora 文件
本身以反映所有更改。
SERVICES 提供有关注册的服务和例程以及为每个例程分配的服务
处理程序的详细信息。
SET parameter 该命令用来设置监听程序参数。
SHOW parameter 该命令列出监听程序参数的值。
STATUS 提供有关监听程序的基本状态信息,包括监听程序配置
设置的概要、监听协议地址以及向监听程序注册的服务
的概要。
• 使用 SET 命令更改监听程序参数:
• 使用 SHOW 命令显示参数的值:
LSNRCTL> SHOW trc_directory
在这一课中,您应该能够掌握:
• 使用 Oracle Net Manager 配置监听程序
• 使用 “监听程序控制实用程序” (Listener Control Utility,
lsnrctl) 控制监听程序
• 为 IIOP 和 HTTP 连接配置监听程序
此练习涉及以下主题:
• 配置非缺省 LISTENER
• 启动与停止监听程序
• 查看 LISTENER 日志文件
完成这一课的学习后,您应该能达到下列目标:
• 描述主机命名与本地服务名称解析之间的区别
• 使用 Oracle Net Configuration Assistant 配置:
– 主机命名方法
– 本地命名方法
– 网络服务名
• 排除简单连接出现的故障
• 客户机应用程序在试图连接数据库服务时,需要借助
命名方法将连接标识符解析为连接描述符。
• Oracle Net 提供了五种命名方法:
– 主机命名
– 本地命名
– 目录命名
– Oracle Names
– 外部命名
命名方法概览
Oracle Net 提供了五种命名方法:
• 主机命名:使 TCP/IP 环境中的用户能够通过其现有名称解析服务来解析名称
• 本地命名:使用在每个客户机的 tnsnames.ora 文件中配置和存储的信息查找网络
地址
• 目录命名:将数据库服务或网络服务名解析为连接描述符,该描述符存储在中央目录
服务器中
• Oracle Names:这是由 Oracle Names 服务器系统构成的 Oracle 目录服务,这些服务器
可以为网络上的每个服务提供由名称到地址的解析
• 外部命名:使用受支持的第三方命名服务
对于只有几个数据库的小型组织来说,应使用主机命名将名称存储在现有名称解析服务
中,也可使用本地命名将名称存储在客户机上的 tnsnames.ora 文件中。
对于有多个数据库的大型组织来说,应使用目录命名将名称存储在集中管理的符合 LDAP
的目录服务器中。
您将在本课中学到有关主机命名和本地命名的更多内容。
在下列情况下,客户机可使用主机名来连接服务器:
• 使用 Oracle Net Services Client 软件连接 Oracle 数据
库服务
• 使用 TCP/IP 协议建立客户机与服务器的连接
• 主机名通过 DNS 或本地的 /etc/hosts 文件等 IP 地址
转换机制来解析
• 不使用 “连接管理器” (Connection Manager) 或安全选
项等高级功能
主机命名方法
主机命名方法具有下列优点:
• 需要的用户配置最少。用户只需提供主机名即可建立连接。
• 无需创建与维护本地名称配置文件 (tnsnames.ora)。
• 无需了解 Oracle Names 或 Oracle Internet Directory 管理过程。
主机命名在每个节点上只能标识一个 SID,而使用其它命名方法还可标识其它 SID。
如果在主机 (hosts) 文件中对多个全局名称设置了别名,让它们指向同一 IP 地址,这样即
使这些数据库位于同一节点上,也可使用主机命名连接任意数据库。
客户机 服务器
TCP/IP
…
names.directory_path = (HOSTNAME)
sqlnet.ora
listener.ora
客户端要求
如果使用主机命名方法,则必须在客户机上安装 TCP/IP 协议。此外,还必须安装 Oracle
Net Services 和 TCP/IP 协议适配器。
主机名通过域名服务 (Domain Name Services, DNS)、网络信息服务 (Network Information
Services, NIS) 或集中维护的 TCP/IP 主机文件等 IP 地址转换机制来解析。使用主机命名方
法之前,必须先对客户端进行如上配置。
客户机 服务器
TCP/IP
1521
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stc-sun02.us.oracle.com)
(ORACLE_HOME = /u03/ora9i/rel12)
(SID_NAME = TEST)
sqlnet.ora listener.ora
服务器端要求
如果使用主机命名方法,除了客户机,还必须在服务器上也安装 TCP/IP 协议。此外,您
也需要在服务器端安装 Oracle Net Services 和 TCP/IP 协议适配器。
在 Oracle8i 和 Oracle9i 中,只要满足以下条件之一就可向监听程序自动注册有关数据库的
信息(包括全局数据库名称):
• 在端口 1521 上使用 TCP/IP 运行的名为 LISTENER 的缺省监听程序正在运行
• 已在初始化文件中设置了 LOCAL_LISTENER 参数
早期版本中是通过 listener.ora 文件向监听程序注册数据库信息的。必须静态配置
SID_LIST_listener_name 段以包含 GLOBAL_DBNAME 参数。全局数据库名称由数据
库名称和数据库域名构成。可以从初始化参数文件中的 SERVICE_NAMES 参数或
DB_NAME 和 DB_DOMAIN 参数来获取 GLOBAL_DBNAME 的值。
主机名必须与在客户机中指定的连接字符串匹配。其它信息还包括要连接的数据库的信息。
• listener.ora 文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stc-sun02.us.oracle.com)
(ORACLE_HOME = /u03/ora9i/rel12)
(SID_NAME = TEST)
• 从客户机连接
sqlplus system/manger@stc-sun02.us.oracle.com
主机命名示例
示例
如果客户端与服务器端已满足所有要求,则可从客户机发出连接请求,此操作可使您与例
程 TEST 建立连接,如下所示:
sqlplus system/manager@stc-sun02.us.oracle.com
SQL*Plus:Release 9.0.1.0.0-Production on Thu Nov 15 13:46:24 2001
(c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.0.1.0.0 – Production
SQL>
命名方法配置
可使用 Oracle Net Configuration Assistant 或 Oracle Net Manager 执行命名方法配置。以下
示例中使用的是 Oracle Net Configuration Assistant。
由于 Oracle Net Configuration Assistant 是通过 Java 来实现并与 “Java 运行时环境” (Java
Runtime Environment) 封装在一起,因此,您可在安装了 Oracle Net Services 的任何平台
上运行 Oracle Net Configuration Assistant。
使用 Oracle Net Configuration Assistant
要启动 Oracle Net Configuration Assistant:
• 在 UNIX 上,从 $ORACLE_HOME/bin 运行 netca。
• 在 Windows NT 上,选择 “开始” (Start) > “程序” (Programs) > Oracle - HOME_NAME >
“网络管理” (Network Administration) > Oracle Net Configuration Assistant。
• 选择 “命名方法配置” (Naming Methods Configuration) 选项按钮,然后单击 “下一步”
(Next)。
选择主机命名方法
确保 “主机名” (Host Name) 已列入 “所选命名方法” (Selected Naming Methods) 窗口。如果
也选择了其它方法,应确保 “主机名” (Host Name) 列在第一位。单击 “下一步” (Next) 以
完成。您指定的内容将写入 sqlnet.ora 文件:
# SQLNET.ORA Network Configuration File:
/u03/ora9i/rel12/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = us.oracle.com
NAMES.DIRECTORY_PATH= (HOSTNAME)
客户机 服务器
sqlnet.ora
tnsnames.ora listener.ora
本地命名方法
本地命名的优点:
• 提供了一种相对简单明了的解析服务名地址的方法。
• 对于使用不同协议的各个网络,可跨网络解析服务名。
• 可使用图形配置工具轻松配置。
本地命名方法要求网络服务名存储在 tnsnames.ora 文件中。建议不要对此文件进行
编辑。但是,使用 Oracle Net Configuration Assistant 可轻松地添加网络服务名。
选择本地命名方法
可用命名方法显示在左侧窗口中,所选命名方法显示在右侧窗口中。缺省情况下,会预先
选择 “本地” (Local)、“主机名” (Host Name) 和 Oracle Names。如果因某种原因而没有选择
“本地” (Local),可以在左侧窗口中选中它并单击右箭头按钮使其进入 “所选命名方法”
(Selected Naming Methods) 窗口。单击 “下一步” (Next) 继续操作。您指定的内容将写入
sqlnet.ora 文件:
# SQLNET.ORA Network Configuration File:
/u03/ora9i/rel12/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = us.oracle.com
NAMES.DIRECTORY_PATH = (LOCAL , HOSTNAME)
网络服务名配置
将 “本地” (Local) 选作命名方法后,就可以通过从 Oracle Net Services Configuration
Assistant 选择 “本地网络服务名配置” (Local Net Service Name Configuration) 选项按钮来配
置网络服务名。
网络服务名 是一个简短且便于记忆的名称,它映射为网络地址,包含在 tnsnames.ora
文件中存储的连接描述符中。用户只需了解正确的服务名即可建立连接,而无需了解完整
的连接描述符。
添加网络服务名
使用下一个窗口可创建、重新配置、删除、重命名或测试网络服务名。本示例中选择的
是 “添加” (Add) 选项按钮。
指定数据库版本
指定数据库或服务是 Oracle8i 还是更高版本。较早的 Oracle 版本要求对监听程序进行额
外配置,而 Oracle8i 或 9i 数据库和服务则不要求。
指定服务名
对于 Oracle8i 或 Oracle9i 数据库来说,接下来您必须输入标识数据库服务的数据库服务
名。名称长度不能超过 9 个字符。该服务名通常是全局数据库名称,它由数据库名称
(DB_NAME) 和域 (DB_DOMAIN) 组合而成。全局数据库名称是数据库的缺省服务名,
这是由初始化文件中的 SERVICE_NAMES 参数指定的。
选择网络协议
现在必须指定连接使用的网络协议。Oracle Net Service Configuration Assistant 中可用的协
议只反映先前已经安装的那些协议。未安装的协议不出现在 Configuration Assistant 提供的
协议列表中。
注:在使用 Oracle9i 后,SPX 不再是一种受支持的协议了。
配置主机名和端口号
输入主机名和端口号,然后单击 “下一步” (Next)。
主机名
输入您要连接并与之通信的数据库所在的机器的全限定名称。
端口号
输入端口号,Oracle Net 监听程序需要在此端口监视发送给服务器(主机)的连接请求。
缺省情况下,Configuration Assistant 将监听程序端口号设为 1521。如果需要,可以指定备
用端口号。
测试服务信息
现在可测试连接信息。选择 “是,执行测试” (Yes, perform a test) 选项按钮,然后单击 “完
成” (Finish) 继续操作。
测试结果
如果输入的数据是正确的,连接便会成功。如果不正确,“详细资料” (Details) 窗口会提供有
用的诊断信息来排除连接故障。请注意用于连接的缺省用户名是 scott。如果没有这个用
户,应单击 “更改登录” (Change Login) 并输入有效的用户名和口令,然后重试连接。
如果连接成功,则单击 “下一步” (Next) 继续操作。不要 单击 “取消” (Cancel),因为服务信
息尚未保存。
注:保存 tnsnames.ora 文件之后,也可使用 tnsping 实用程序从命令行测试网络服务名。
例如:
$ tnsping U01
TNS Ping Utility for Solaris: Version 9-Production …
Used parameter files:
/u01/user01/NETWORK/ADMIN/sqlnet.ora
/u01/user01/NETWORK/ADMIN/tnsnames.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=stc-
sun02)(PORT=1701))
OK (0 msec)
选择网络服务名
接下来输入网络服务名的名称。缺省情况下,Configuration Assistant 提供的名称是最初输
入的数据库服务名。如果需要,也可输入一个更有意义或更具描述性的名称。单击 “下一
步” (Next) 继续操作。
保存网络服务名
选择 “否” (No) 选项按钮并单击 “下一步” (Next) 后,缺省情况下,服务名将保存到位于
$ORACLE_HOME/network/admin 目录下的 tnsnames.ora 文件中。
tnsnames.ora 文件
tnsnames.ora 文件用来存储网络服务名。在 UNIX 上,该文件的缺省位置是
$ORACLE_HOME/network/admin;在 Windows NT 上,该文件的缺省位置是
%ORACLE_HOME%\network\admin。
参数 说明
MY_SERVICE.US. … 网络服务名和域名。
DESCRIPTION 说明连接描述符的关键字。说明总是以同样的形式出现。
PROTOCOL 指定使用的协议。
CONNECT_DATA 指定要连接的数据库服务。
sqlplus system/manager@MY_SERVICE
SQL*Plus:Release 9.0.1.0.0-Production on Thu Nov 15 13:46:24 2001
(c) Copyright 2001 Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production
JServer Release 9.0.1.0.0 - Production
SQL>
sqlnet.ora 文件
sqlnet.ora 文件用于控制 Oracle Net Services 的操作方式。
在 UNIX 上,该文件的缺省位置是 $ORACLE_HOME/network/admin;在 Windows NT
上,该文件的缺省位置是 %ORACLE_HOME%\network\admin。通过定义 TNS_ADMIN
环境变量可覆盖缺省位置。
NAMES.DIRECTORY_PATH 参数可以控制 Oracle Net Services 将网络服务名解析为连接描
述符的方式。如果有多种方法,可以用逗号分隔开,并用圆括号括起来。网络服务将按照
从左到右列出的方法顺序逐一解析网络服务名。
一旦成功配置和测试了命名方法和网络服务名,则可使用任何 Oracle 客户机工具从客户
机连接到服务器。
下面是在客户端出现问题时显示的错误代码:
故障排除
下面将对常见错误以及纠正这些错误的方式加以说明。
ORA-12154:“TNS:无法解析服务名”
原因:Oracle Net Services 找不到在 tnsnames.ora 配置文件中指定的连接描述符。
操作
1. 检查 tnsnames.ora 文件是否存在以及是否可访问。
2. 检查 tnsnames.ora 文件是否位于 TNS_ADMIN 环境变量指定的位置中。
3. 在 tnsnames.ora 文件中,核实在连接字符串中指定的服务名已经映射为
tnsnames.ora 文件中的连接描述符。此外,还要核实文件中没有语法错误。
4. 确认不存在 sqlnet.ora 文件的重复副本。
5. 如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。
在这一课中,您应该能够掌握:
• 描述主机命名与本地服务名称解析之间的区别
• 使用 Oracle Net Configuration Assistant 配置:
– 主机命名方法
– 本地命名方法
– 网络服务名
• 排除简单连接出现的故障
此练习涉及以下主题:
• 本地命名配置
• 网络服务名配置
• 测试配置
完成这一课的学习后,您应该能达到下列目标:
• 识别 Oracle Shared Server 的各个组件
• 描述 Oracle Shared Server 的体系结构
• 配置 Oracle Shared Server
• 了解和说明相关数据字典视图的用处
• 专用服务器进程
• 共享服务器进程
Oracle 服务器配置选项
Oracle 创建服务器进程以处理与某例程相连的用户进程的请求。服务器进程可以是专用服
务器 进程(一个服务器进程只为一个用户进程服务),也可以是共享服务器 进程(一个
服务器进程可以为多个用户进程服务)。共享服务器进程是 Oracle Shared Server 体系结构
的一部分。
客户机 服务器
例程
SGA
用户进程 服务器进程
专用服务器进程
• 用户进程和服务器进程是分开的。
• 每个用户进程都有自己的服务器进程。
• 用户进程和服务器进程可在不同的机器上运行,以利用分布式处理的优势。
• 用户进程和服务器进程的比率是 1 比 1。
• 即使用户进程不发出数据库请求,专用服务器也存在,只是保持空闲状态。
此处所用的程序接口取决于用户进程和专用服务器进程是否在同一台机器上。如果在同一
机器上,进程间的程序接口将使用主机操作系统的交互进程通信 (IPC) 机制。
共享服务器进程 例程
SGA
Snnn
Snnn
Snnn
数据库服务器
客户机
用户进程 用户进程
• 减少针对某一例程的进程数目
• 增加可服务的用户数
• 实现负载平衡
• 减少空闲服务器进程的数目
• 减少内存占用和系统开销
TEST.world =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = stc-sun02)
(PORT = 1521)
)
(CONNECT_DATA=(SERVICE_NAME=TEST.us.oracle.com)
(SERVER=DEDICATED)
)
)
调度程序进程 调度程序进程
D001 D002
监听程序 数据库服务器
3
2 客户机
1
用户进程 用户进程
共享服务器进程 例程
SGA
Snnn 4
D001 的响应队列
Snnn 请求队列
3 D002 的响应队列
Snnn
2 5 D003 的响应队列
监听程序 6 数据库服务器
1
客户机
用户进程 用户进程
处理请求的过程
1. 用户将请求发送给调度程序。
2. 调度程序将请求置入 “系统全局区” (System Global Area, SGA) 中的请求队列。
3. 共享服务器从请求队列选择该请求,然后处理该请求。
4. 共享服务器将响应放入请求调度程序的响应队列。
5. 该响应被传送给调度程序。
6. 调度程序将该响应返回给用户。
用户请求完成后,将释放共享服务器进程,于是该进程可为请求队列中的另一个用户请求
服务。
请求队列
• 所有调度程序共享一个请求队列。
• 共享服务器监视请求队列以查看是否有新的请求。
• 请求的处理采取先进先出 (FIFO) 的原则。
专用服务器:用户会话数据保存在 PGA 中
PGA
SGA
堆栈 用户会
用户会 游标
共享池和其它内存结构 话数据
空间 话数据 状态
用户会 游标 共享池和其 堆栈
话数据 状态 它内存结构 空间
SGA 和 PGA
使用专用服务器或共享服务器时,“系统全局区” (System Global Area, SGA) 和 “程序全局
区” (Program Global Area, PGA) 的内容有所不同。
• 所有 SQL 语句的文本和语法分析表格都存储在 SGA 中。
• 游标状态包含 SQL 语句的运行时内存值,如检索的行。
• 用户会话数据包含安全性和资源使用信息。
• 堆栈空间包含用于进程的本地变量。
注:SGA 和 PGA 中的更改对于用户是透明的。但是,如果支持多个用户,您需要增大
LARGE_POOL_SIZE 初始化参数的值。请根据同时处于活动状态的会话的数目来配置大
型共享池的大小。
每个共享服务器进程都需要访问所有会话的数据空间,以便任何服务器都能处理来自任
何会话的请求。在 SGA 中为每个会话的数据空间分配空间。通过在用户配置文件中将
PRIVATE_SGA 资源限制设置为所需的空间量,可限制会话可分配的空间量。通过查询
V$SYSSTAT 可监视受 Oracle Shared Server 影响的各种资源。
• 必需的初始化参数
– DISPATCHERS
– SHARED_SERVERS
• 可选初始化参数
– MAX_DISPATCHERS
– MAX_SHARED_SERVERS
– CIRCUITS
– SHARED_SERVER_SESSIONS
指定最初为某一给定协议启动的调度程序的数目
DISPATCHERS = “(PROTOCOL=TCP)(DISPATCHERS=2)\
(PROTOCOL=IPC)(DISPATCHERS=1)”
DISPATCHERS 参数
数据库管理员使用 DISPATCHERS 参数为每个调度程序启用各种属性。
Oracle9i 支持名称-值语法(与 Oracle Net Services 使用的语法类似)来指定现有的和附加
的属性,该指定方式不受位置约束且不区分大小写。
例如:
DISPATCHERS = “(PROTOCOL=TCP)(DISPATCHERS=3)”
参数类型 字符串(指定为引用字符串)
参数类 动态(可使用 ALTER SYSTEM 修改)
缺省值 空
Oracle Database Configuration Assistant 允许您配置该参数
注:有关 DISPATCHERS 参数的其它详细信息,请参考 Oracle9i Reference Manual 中的
“Initialization Parameters” 部分。
属性 说明
PROTOCOL 指定调度程序为其生成监听端点的网络协议
(PRO 或 PROT)
ADDRESS
(ADD 或 ADDR)
指定调度程序所监听的端点的网络协议地址
DESCRIPTION 指定调度程序所监听的端点的网络说明,包括网络协议
(DES 或 DESC) 地址。例如:(DESCRIPTION=(ADDRESS=...))
DISPATCHERS 要启动的调度程序的初始数目(缺省值是 1)
(DIS 或 DISP)
SESSIONS 每个调度程序的网络会话的最大数目。该缺省值是操作
(SES 或 SESS) 系统特定的。大多数操作系统的缺省值都是 16K
CONNECTIONS 指定允许每个调度程序进行的网络连接的最大数目。该
(CON 或 CONN) 缺省值是操作系统特定的。例如,1024 是 Sun Solaris 和
Windows NT 系统的缺省值
计算调度程序进程的初始数目
一旦知道您的操作系统的每个进程的可能连接数目,就可以使用下面的公式来计算例程启
动期间将为每个网络协议创建的调度程序进程的初始数目:
调度程序的初始数目 =
CEIL(并发会话平均数/每个调度程序的连接数)
注:每个调度程序的连接数与操作系统有关。
例如,假定您的系统通常通过 TCP/IP 方式并发连接 900 个用户,每个进程支持 255 个连接。
在这种情况下,应按如下所示设置 DISPATCHERS 参数:
DISPATCHERS = "(PROTOCOL=TCP) (DISPATCHERS=4)"
• 指定可同时运行的调度程序进程的最大数目
• 发出 ALTER SYSTEM 命令可添加超过初始启动数目的
调度程序
MAX_DISPATCHERS = 5
调度程序
D004
调度程序 调度程序 调度程序 调度程序
D001 D002 D003 D005
TCP/IP TCP/IP IPC
MAX_DISPATCHERS 参数
MAX_DISPATCHERS 指定可同时运行的调度程序进程的最大数目。例程启动后,如果需
要,可启动更多调度程序进程。但是,只能启动那些使用数据库参数文件中所述协议的
调度程序。
例如,如果参数文件指定启动调度程序时使用 TCP 和 IPC 协议,之后如果不更改参数文件
并重新启动例程,就不能启动使用 DECnet 协议的调度程序。
参数类型 整数
参数类 静态
缺省值 5
取值范围 视操作系统而定
指定启动例程时创建的服务器进程的数目
SHARED_SERVERS = 6
SHARED_SERVERS 参数
SHARED_SERVERS 指定启动例程时要创建的服务器进程的数目。
参数类型 整数
参数类 动态(可使用 ALTER SYSTEM 修改)
缺省值 0
取值范围 视操作系统而定
• 指定可启动的共享服务器的最大数目
• 允许根据请求队列的长度动态分配共享服务器
MAX_SHARED_SERVERS = 10
MAX_SHARED_SERVERS 参数
MAX_SHARED_SERVERS 指定将允许同时运行的共享服务器进程的最大数目。
参数类型 整数
参数类 静态
缺省值 从 SHARED_SVEERRS 得出(20 或
2*SHARED_SERVERS)
取值范围 视操作系统而定
估计共享服务器的最大数目
一般说来,设置该参数的目的是为了在活动高峰时使共享服务器进程的数目适中。使用该
限制进行试验并监视共享服务器,以确定该参数的理想设置。
要获取所启动的服务器的最大数目,可查询数据字典视图
V$SHARED_SERVER_MONITOR。
注:在 Windows NT 上,将 MAX_SHARED_SERVERS 设为一个较高的值时应慎重,因为
每个服务器都是公共进程中的一个线程。
• 指定可供入站和出站网络会话使用的虚拟线路总数
• 影响总的 SGA 大小
CIRCUITS = 100
CIRCUITS 参数
虚拟线路是用户通过调度程序和服务器与数据库的连接。CIRCUITS 参数指定可供入站和
出站网络会话使用的虚拟线路总数。该参数非常重要,因为它是影响例程的 SGA 总需求
的参数之一。
参数类型 整数
参数类 静态
缺省值 如果已配置 Oracle Shared Server,CIRCUITS 的值应与
SESSIONS 的值一致;否则,该值为 0
SHARED_SERVER_SESSIONS = 100
SHARED_SERVER_SESSIONS 参数
该参数控制在任何时刻同时打开的共享服务器会话的总数。使用该参数可以为专用用户会
话保留资源。
参数类型 整数
参数类 静态
缺省值 衍生值:CIRCUITS 和 SESSIONS - 5 两者中较小的值
取值范围 0 到 SESSIONS - 5
相关参数
其它受 Oracle Shared Server 影响、可能需要调整的参数:
• LARGE_POOL_SIZE 指定大型共享池分配堆的大小(以字节为单位)。Oracle Shared
Server 可能会强制将缺省值设置得很高,这样会导致性能问题或启动数据库时出现问
题。
• SESSIONS 指定可在系统中创建的最大会话数。对于 Oracle Shared Server 来说,该值
可能需要调整。
使用大型共享池而不是共享池来分配与服务器有关的共享 UGA(用户全局区,User
Global Area)。这是因为 Oracle 使用共享池分配用于其它目的的 SGA(共享全局区,
Shared Global Area)内存,如共享的 SQL 和 PL/SQL 过程。使用大型共享池而不是共享
池可减少共享池的碎片。
要将与服务器有关的共享 UGA 存储在大型共享池中,应为初始化参数
LARGE_POOL_SIZE 指定一个值。要查看对象内存位于哪一个池(共享池还是大型共享
池),可查看 V$SGASTAT 中的 POOL 列。LARGE_POOL_SIZE 没有缺省值,但它的最
小值是 300K。如果没有为 LARGE_POOL_SIZE 设置值,Oracle 会将共享池用于 Oracle
Shared Server 用户会话内存。
• 发出下列命令以验证启动例程时是否已向监听程序注册
调度程序:
$ lsnrctl services
• 通过建立一次连接验证您是否已通过共享服务器连接,
然后查询 V$CIRCUIT 视图以显示每个共享服务器连接
的一个条目。
• V$CIRCUIT
• V$SHARED_SERVER
• V$DISPATCHER
• V$SHARED_SERVER_MONITOR
• V$QUEUE
• V$SESSION
动态视图小结
V$CIRCUIT 该视图包含有关虚拟线路的信息,这些线路是用户与
数据库之间通过调度程序和服务器进行的连接
V$SHARED_SERVER 该视图包含有关共享服务器进程的信息。
V$DISPATCHER 该视图提供有关调度程序进程的信息。
V$SHARED_SERVER_
该视图包含有关调整共享服务器进程的信息。
MONITOR
V$QUEUE
该视图包含有关请求和响应队列的信息。
V$SESSION 该视图列出每个当前会话的会话信息。
在这一课中,您应该能够掌握:
• 识别 Oracle Shared Server 的各个组件
• 描述 Oracle Shared Server 的体系结构
• 配置 Oracle Shared Server
• 了解和说明相关数据字典视图的用处
此练习涉及以下主题:
• 配置 Oracle Shared Server
• 为例程注册定义 LOCAL_LISTENER
• 使用监听程序控制实用程序 (Listener Control Utility)
来验证服务
• 使用 V$ 视图验证共享服务器配置和性能
• 验证例程注册
完成这一课的学习后,您应该能达到下列目标:
• 描述数据库备份、还原和恢复的基本原理
• 列出 Oracle 环境中可能发生的故障类型
• 定义备份和恢复策略
• 保护数据库以防止发生多种类型的故障
• 延长平均故障间隔时间 (MTBF)
• 缩短平均恢复时间 (MTTR)
• 尽可能减少数据损失
概览
数据库管理员 (DBA) 的主要职责之一就是确保数据库可用。DBA 可以采取预防措施来尽
量减少系统故障。
尽管有预防措施,但期望永远不出现故障只能是一种幼稚的想法。数据库出现故障后,
DBA 必须尽快使之恢复运行,尽量减少数据损失。
为了保护数据免受各种可能发生的故障的影响,DBA 必须定期备份数据库。如果没有最
新的备份,一旦发生文件损失,DBA 就不可能在不损失数据的情况下使数据库恢复运行。
备份对从各种类型的故障中进行恢复至关重要。无论如何强调验证备份都不为过。以为备
份存在而没有实际检查它是否存在,则一旦备份无效,代价可能会极其惨重。
• 语句故障
• 用户进程故障
• 用户错误
• 网络故障
• 例程故障
• 介质故障
故障类别
在 Oracle 数据库环境中可出现不同类型的故障,包括:
• 语句故障
• 用户进程故障
• 用户错误
• 例程故障
• 介质故障
• 网络故障
每种类型的故障都要求 DBA 不同程度地介入以便从中有效地进行恢复。在某些情况下,
恢复取决于已实施的备份策略的类型。例如,语句故障几乎不需要 DBA 干预,而介质故
障则要求 DBA 使用经过测试的恢复策略。
• 应用程序中出现逻辑错误
• 试图向表中输入无效数据
• 权限不足却试图执行某操作
• 试图创建表却已超出所分配的限额限制
• 试图对表执行 INSERT 或 UPDATE 操作,导致分配了一
个区,但是表空间中的可用空间不足
语句故障
在 Oracle 程序中处理语句时如果出现逻辑故障就会导致语句故障。语句故障的类型包括:
• 应用程序中出现逻辑错误。
• 用户试图向表中输入无效数据,可能破坏完整性约束。
• 用户权限不足却试图执行某个操作,例如只有 SELECT 权限却在表中执行插入操作。
• 用户试图创建表,但超出了分配给该用户的限额限制。
• 用户试图对表执行 INSERT 或 UPDATE 操作,导致分配了一个区,但是表空间中的可
用空间不足。
注:如果遇到语句故障,Oracle 服务器或操作系统将返回错误代码和错误消息。失败的
SQL 语句将自动回退,然后控制权将返回给用户程序。应用程序开发人员或 DBA 可使用
Oracle 错误代码来诊断和帮助解决故障。
• 更正程序的逻辑流。
• 修改并重新发出 SQL 语句。
• 提供必要的数据库权限。
• 使用 ALTER USER 命令更改用户的限额限制。
• 向表空间中添加文件空间。
• 启用可恢复的空间分配。
语句故障解决方法
出现语句故障后,DBA 进行干预的程度各不相同,这取决于故障的类型,可能包括以下
内容:
• 修复应用程序以使逻辑流正确无误。根据您的环境,这可能是应用程序开发人员的任
务,而不是 DBA 的任务。
• 修改并重新发出 SQL 语句。这可能也是应用程序开发人员的任务,而不是 DBA 的任
务。
• 为用户提供成功完成该语句所必需的最低数据库权限。
• 发出 ALTER USER 命令以更改限额限制。
• 向表空间中添加文件空间。从技术角度讲,DBA 应确保不发生此类情况;但是在某些
情况下可能需要添加文件空间。DBA 还可以对数据文件使用 RESIZE 和
AUTOEXTEND 选项。
• Oracle9i 提供了一种在出现空间分配故障时先挂起、然后恢复执行大型数据库操作的
方法。这使得管理员可以采取更正措施,而不是由 Oracle 数据库服务器向用户返回错
误。在错误条件得到更正之后,挂起的操作将自动恢复。此功能称为可恢复的空间分
配,受影响的语句称为可恢复语句。
• 用户在会话中执行了异常断开操作。
• 用户会话被异常终止。
• 用户的程序引起地址异常,从而终止了会话。
用户进程故障的原因
用户进程失败的原因可能有多种;但最常见的原因如下:
• 用户在会话中执行了异常断开操作。例如,用户在连接到客户机-服务器配置环境中的
数据库的情况下,关闭了 SQL*Plus 窗口。
• 用户会话被异常终止。一种可能的情况是用户在连接到客户机-服务器配置环境中的数
据库时重新引导了客户机。
• 用户程序导致地址异常,从而终止会话。如果在发生异常时,应用程序未对这些异常
进行正确处理,则通常会发生这种情况。
• PMON 进程检测异常终止的用户进程。
• PMON 回退事务处理并释放它所持有的任何资源和锁。
用户进程故障和 DBA 操作
DBA 很少需要执行操作来解决用户进程错误。该用户进程不能继续工作,尽管 Oracle 服
务器和其它用户进程会继续正常运行。
PMON 后台进程
出现异常终止的用户进程后,PMON 后台进程通常足以清理该用户进程。
PMON 进程检测到异常终止的服务器进程时,它将回退该异常终止进程的事务处理,并
释放它所获得的任何资源和锁。
用户错误
从用户错误中恢复时通常需要 DBA 干预。
用户错误的常见类型
• 用户意外地删除或截断表。
• 用户删除表中的所有行。
• 用户提交了数据,但在其中发现一个错误。
• 培训数据库用户。
• 从有效的备份中恢复。
• 从导出文件中导入表。
• 使用 LogMiner 确定错误发生的时间。
• 使用时间点恢复进行恢复。
• 使用 LogMiner 执行对象级恢复。
• 使用 FlashBack 查看和修复历史数据。
尽可能减少用户错误
在任何数据库和应用程序环境中,一个关键的问题就是确保用户已经过适当培训,并且知
道数据库可用性和完整性的含义。
DBA 应该了解应用程序和商业运作的类型,这可避免由于用户错误而导致数据丢失;
DBA 还应该了解在这些情况下如何采取恢复措施。
某些恢复情况涉及的范围可能很广,例如将数据库还原到出现错误之前的时间点、导出丢
失的数据,然后将数据导入到丢失了该数据的数据库。
LogMiner 是一种关系工具,通过它,您可以使用 SQL 来阅读、分析、解释联机和归档日
志文件。使用 LogMiner 分析日志文件可用来查明何时对数据库进行了错误的修改。这
样,就可以在应用程序级(而不是在数据库级)执行逻辑恢复了。
Oracle9i 提供一种称为 FlashBack 的新功能,您可以用它来查看和修复历史数据。
FlashBack 提供对截止某一特定时间或用户指定的系统提交号 (SCN) 的数据库执行查询的
功能。
例程故障
例程故障的原因可能有多种:
• 由于断电,导致服务器不可用。
• 由于硬件问题(如 CPU 故障或内存损坏)或操作系统崩溃而导致服务器不可用。
• 某个 Oracle 服务器后台进程(DBWn、LGWR、PMON、SMON 或 CKPT)出现故障。
要从例程故障中恢复,DBA 可以:
• 使用 “startup” 命令启动例程。Oracle 服务器将自动恢复,并执行前滚和回退阶段。
• 通过阅读警报日志和在例程故障期间生成的其它所有跟踪文件来调查故障原因。
• DBA 不需要执行任何特殊的恢复操作。
• 启动例程。
• 等待出现 “数据库已打开” (database opened) 通知。
• 通知用户。
• 检查警报日志以确定故障原因。
崩溃恢复
崩溃恢复和例程恢复将数据库恢复到发生例程故障之前的事务处理一致状态。根据定义,
崩溃恢复是对单例程配置中的数据库或 Oracle Real Application Clusters 配置(其中的所有
例程都已崩溃)中的数据库执行的恢复;而例程恢复是通过 Oracle Real Application
Clusters 配置中的一个活动例程来恢复一个失败的例程。如果需要,可以在数据库打开
时,由 Oracle 服务器自动执行崩溃恢复。
您不必执行任何恢复操作。所有必需的重做信息都由 SMON 来读取。要从这种类型的故
障中进行恢复,请启动例程:
SQL> CONNECT / AS sysdba
Connected.
SQL> STARTUP
. . .
Database opened.
数据库打开后,通知用户必须重新输入未提交的所有数据。
• 磁盘驱动器上的磁头损坏
• 读取或写入数据库文件时存在物理问题
• 文件被意外删除
介质故障
介质故障包含对操作数据库所需的文件进行读写操作时产生的物理问题。介质故障是最严
重的故障类型,原因是它通常需要 DBA 的干预。
与介质有关的问题的常见类型
• 包含某一数据库文件的磁盘驱动器出现磁头损坏。
• 对实现正常数据库操作所需的文件进行读写操作时存在物理问题。
• 文件被意外删除。
• 恢复策略取决于选择的备份方法以及受到影响的文件。
• 如果归档重做日志文件可用,可应用它们来恢复自上次
备份以来所提交的数据。
介质故障解决方法
经过测试的恢复策略是解决介质故障问题的关键要素。DBA 能够在多大程度上尽量减少
由介质故障引起的停机时间和数据损失取决于可用备份的类型。因此,恢复策略取决于以
下因素:
• 选择的备份方法以及受到影响的文件。
• 数据库操作的 ARCHIVELOG 模式。如果采用归档,可以应用已归档的重做日志文件来
恢复自上次备份以来所提交的数据;如果使用 RMAN,还可以应用增量备份。
• 业务要求
• 操作要求
• 技术方面的考虑因素
• 管理上的协作
DBA 要考虑的问题
不管您选择什么样的备份策略,获得相应管理层的认同是很重要的。例如,如果贵公司不
希望制作文件的物理映像副本,以尽量减少对磁盘空间的占用,那么管理层必须清楚这个
决定可能引起的后果。
在选择备份策略时,应考虑以下一些问题:
• 根据对系统可用性的期望,管理层是否权衡了所选备份策略的利弊?
• 是否有专门的资源来确保成功实施备份和恢复策略?
• 是否已明确了解进行备份和准备恢复的步骤的重要性?
对业务要求、操作要求和技术要求进行一次全面的分析,向管理层提供支持有效备份和恢
复策略所需的信息。
• 平均恢复时间
• 平均故障间隔时间
• 演变过程
业务影响
您应该了解停机时间将对业务产生的影响。管理层必须量化停机时间及数据损失的代价,
并将其与减少停机时间及尽量减少数据损失所需的成本进行比较。
MTTR:数据库的可用性是 DBA 要考虑的一个主要问题。出现故障后,DBA 应努力缩短
平均恢复时间 (MTTR)。此策略可确保数据库的不可用时间尽可能地最短。通过预测可能
发生的故障的类型并采取有效的恢复策略,DBA 可以最终达到缩短 MTTR 的目的。
MTBF:保护数据库以防止出现各种类型的故障也是 DBA 的一个重要任务。要做到这一
点,DBA 必须延长平均故障间隔时间 (MTBF)。DBA 必须了解 Oracle 数据库环境中备份
和恢复的结构,并对数据库进行相应配置,才不会经常发生故障。
演变过程:备份及恢复策略随着业务要求、操作要求和技术要求的变化而逐渐发展。
DBA 和相应的管理层都应定期对备份和恢复策略的有效性进行检查,这一点至关重要。
• 24 小时操作
• 测试和验证备份
• 数据库易变性
24 小时操作
备份和恢复总是受到您所提供的业务操作类型的影响,在数据库必须一周 7 天、一天 24
小时连续运行的情况下更是如此。正确的数据库配置对于支持这样的操作要求是必需的,
因为它们直接影响数据库环境的技术层面。
测试备份
DBA 可以通过制定计划定期测试备份的有效性,来确保他们的策略可以缩短 MTTR 并延
长 MTBF。有效的恢复取决于有效的备份。在选择备份策略时,应考虑以下一些问题:
• 当您需要帮助时,是否可以求助于系统管理员、供应商、后备 DBA 以及其他关键人
员?
• 您是否可以按安排的时间间隔经常测试备份和恢复策略?
• 备份副本是否存储在其它地方?
• 计划是否被详细记录并得到良好的维护?
• 资源:硬件、软件、人力和时间
• 操作系统文件的物理映像副本
• 数据库中各对象的逻辑副本
• 数据库配置
• 事务处理量,这将影响需要备份的频率
物理映像副本
某些技术要求由所要求的备份类型决定。例如,如果需要数据文件的物理映像副本,这将
显著影响可用存储空间。
逻辑副本
创建数据库中对象的逻辑副本对存储要求的影响没有物理映像副本那么显著;然而,由于
用户访问数据库时执行逻辑副本,系统资源可能会受到影响。
数据库配置
数据库的配置影响执行备份的方式和数据库的可用性。根据数据库配置,系统资源(如支
持备份及恢复策略所需的磁盘空间)可能会受到限制。
• 在出现严重灾难的情况下,您的业务会受到什么样的影
响?
– 地震、水灾或火灾
– 完全丢失计算机
– 存储硬件或软件故障
– 失去重要人员,如数据库管理员
• 是否已制定定期测试策略的计划?
自然灾害
您的数据可能非常重要,以至于您必须确保甚至在系统完全瘫痪的情况下也能够复原。自
然灾害和其它问题可能影响您的数据的可用性,因此在创建灾难恢复计划时应考虑这些问
题。在选择备份和恢复策略时,应考虑以下一些问题:
• 在发生以下严重灾难时,您的业务会受到什么样的影响:
– 水灾、火灾、地震或飓风
– 存储硬件或软件故障
• 如果您的数据库服务器发生故障,那么在更换新硬件系统可能需要的数小时、数天或
者甚至数周内,您的业务是否可以继续运转?
• 备份是否存储在其它地方?
在这一课中,您应该能够掌握:
• 评估您的环境中可能发生的故障
• 根据业务要求、操作要求和技术要求开发一套策略
• 为备份和恢复策略制定测试计划
完成这一课的学习后,您应该能达到下列目标:
• 描述与恢复相关的 Oracle 进程、内存结构和文件
• 认识检查点、重做日志文件和归档日志文件的重要性
• 描述优化例程恢复的方法
口令文件
数据文件 3 归档日
志文件
数据库
概览
Oracle 服务器将许多内存组件、后台进程和文件结构用于其备份和恢复机制。本课回顾了
“Oracle9i 数据库管理基础 I” 课程中提出的概念,重点介绍备份和恢复要求。
Oracle 例程
Oracle 例程由内存区(主要是系统全局区 [System Global Area, SGA])和后台进程(即
PMON、SMON、DBWn、LGWR 和 CKPT)组成。例程是在数据库启动过程中,读取参
数文件之后的 nomount(未装载)阶段创建的。如果其中的任何进程终止,则例程将关闭。
后台进程
类型 说明
数据库写入器 将灰缓冲区从数据缓冲区高速缓存写入数据文件。
(DBWn) 此操作是异步的。
日志写入器
将数据从重做日志缓冲区写入重做日志文件
(LGWR)
执行自动例程恢复。当不再使用临时段时就恢复这
系统监视器
些段中的空间。根据所设置的参数,合并可用空间
(SMON)
的相邻区域。
进程监视器 清理专用于异常终止的用户进程的连接/服务器进
(PMON) 程。执行回退并释放失败进程所占用的资源。
用当前的重做日志和检查点号同步数据文件头和控
检查点 (CKPT)
制文件头。
归档程序 (ARCn)
一个自动复制已标记为归档的重做日志的进程。
(可选)
用户进程
用户进程是在用户启动 SQL*Plus、Oracle Forms Developer、Oracle Reports Developer、
Oracle Enterprise Manager 等工具时创建的。该进程可能位于客户机或服务器上,它提供了
一个界面,用户可在其中输入命令,与数据库进行交互。
其它文件:
文件类型 说明 类型
初始化参数
存储启动例程所需的参数 文本
文件
服务器初始
存储启动例程所需的永久参数 二进制
化参数文件
口令文件 存储有关可启动、停止和恢复数据库的用
二进制
(可选) 户的信息
动态视图
Oracle 服务器提供许多标准视图以获取有关数据库和例程的信息。这些视图包括:
• V$SGA:查询有关例程的以下各项的大小:共享池、日志缓冲区、数据缓冲区高速
缓存以及固定内存大小(取决于操作系统)
• V$INSTANCE:查询例程的状态,如例程模式、例程名、启动时间和主机名
• V$PROCESS:查询为例程创建的后台进程和服务器进程
• V$BGPROCESS:查询为例程创建的后台进程
• V$DATABASE:列出数据库的状态和恢复信息。其中包括有关数据库名、数据库唯一
标识符、创建日期、控制文件创建的日期和时间、最后一个数据库检查点的信息,以
及其它信息。
• V$DATAFILE:列出数据库中包含的数据文件的位置和名称。其中包括文件编号和名
称、创建日期、状态(联机/脱机)、启用状态(只读、读写)、最后一个数据文件检
查点及文件大小等相关信息。
大型共享池
大型共享池用于从共享内存分配顺序 I/O 缓冲区。对于 I/O 从属和 Oracle 备份与还原,
RDBMS 分配大小为几百个千字节的缓冲区。
配置大型共享池可防止 RMAN 与其它子系统争用同一块内存区。如果您设置
DBWR_IO_SLAVES 或 BACKUP_TAPE_IO_SLAVES 参数来模拟异步 I/O,则恢复管理器
(Recovery Manager, RMAN) 会使用大型共享池来进行备份和还原。如果这两个参数都未被
启用,则 Oracle 将从本地进程内存(而不是共享内存)中分配备份缓冲区,这样就不会
使用大型共享池。
调整大型共享池的大小
如果设置了 LARGE_POOL_SIZE,则 Oracle 会尝试从大型共享池获得内存。即使这个值
不够大,Oracle 也不会从共享池获取缓冲区。
如果未设置 LARGE_POOL_SIZE 初始化参数,则 Oracle 服务器会尝试从 SGA 中的共享
池分配共享内存缓冲区。
如果 Oracle 无法获得足够的内存,它会从本地进程内存中获得 I/O 缓冲区内存,并向
alert.log 文件写入一条消息,表明已使用同步 I/O 进行备份。
例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBW0 PMON CKPT LGWR ARCn
DBW1
数据文件 3
口令文件 归档日
数据库 志文件
数据库缓冲区高速缓存的功能
• 数据缓冲区高速缓存是 SGA 中的一个区域,用于存储最近使用过的数据块。
• 服务器进程将表、索引和还原段从数据文件读入缓冲区高速缓存,在缓冲区高速缓存
中根据需要对数据块进行相应的更改。
• Oracle 服务器使用最近最少使用 (LRU) 算法确定哪个缓冲区可被覆盖以容纳缓冲区高
速缓存中的新块。
DBWn 后台进程的功能
• 数据库写入器进程 (DBWn) 将数据库缓冲区高速缓存中的灰缓冲区数据写入数据文件。
它确保在数据库缓冲区高速缓存中有足够的空闲缓冲区(即服务器进程需要读取数据
文件中的数据块时可以覆盖的缓冲区)。
• 数据库写入器定期同步数据库缓冲区高速缓存和数据文件,这就是在各种情况下触发
的检查点事件。
• 尽管一个数据库写入器进程对于大多数系统已足够,但如果系统需要修改大量数据,
您还可以配置附加的进程(从 DBW1 到 DBW9)以提高写入性能。这些附加的数据库
写入器进程对单处理器系统不起作用。
例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn
数据文件 3
口令文件 归档日
数据库 志文件
重做日志缓冲区的功能
• 重做日志缓冲区是容纳数据库更改信息的循环缓冲区。这些信息存储在重做条目中。
• 重做条目包含重建或重做由 INSERT、UPDATE、DELETE、CREATE、ALTER 或
DROP 操作对数据库的更改所必需的信息。必要时重做条目可用于数据库恢复。
• Oracle 服务器进程将重做条目从用户的内存空间复制到重做日志缓冲区。
磁盘 1
(成员 a)
log1a.rdo log2a.rdo log3a.rdo
磁盘 2
(成员 b)
log1b.rdo log2b.rdo log3b.rdo
多元备份的原则
重做日志文件配置要求每组至少有两个重做日志成员,各成员位于不同的磁盘上以防出现
故障。
谨记以下要点:
• 组中的所有成员包含相同的信息且大小相同。
• 组成员同时进行更新。
• 每组应当含有同样数量的等大小成员。
通过重命名联机重做日志文件,可以更改联机重做日志文件的位置。在重命名联机重做日
志文件之前,请确保新的联机重做日志文件存在。Oracle 服务器仅更改控制文件内的指
针,并不从物理上重命名或创建任何操作系统文件。如果旧文件是 Oracle 管理文件并且
它确实存在,则它会被删除。
• 检查点用来确定应从何处开始恢复。
• 检查点位置 – 恢复开始的位置
• 检查点队列 – 灰数据块的链接列表
数据库检查点
检查点位置
重做日志中开始恢复的位置称为检查点位置。在该检查点之前的所有引用数据块都已由
DBWn 写入磁盘。该位置定义为它与重做日志末尾之间的 “距离”。还可以将它看成是检
查点队列中第一个条目的 “年龄”,该队列是按照数据块最初变灰时的顺序排列的灰数据
块链接列表。
检查点队列
检查点队列中的每个条目包含对应数据块的标识符(即文件编号与块编号),以及该数据
块最初变灰时在重做日志中所处的位置(称为重做字节地址或 RBA)。它还包括上一次
更改该数据块时在重做日志中所处的位置。检查点队列中的第一个条目标识数据库缓冲区
高速缓存中最早的灰数据块。DBWn 按检查点队列中的顺序从缓冲区高速缓存中写入块,
随着数据块的写入,对应的每个条目将被删除。
• 完全检查点
– 写入所有灰缓冲区
– SHUTDOWN NORMAL、IMMEDIATE、或 TRANSACTIONAL
– ALTER SYSTEM CHECKPOINT
• 增量检查点(快速启动检查点)
– 定期写入
– 仅写入最旧的块
• 部分检查点
– 属于表空间的灰缓冲区
– ALTER TABLESPACE BEGIN BACKUP
– ALTER TABLESPACE tablespace OFFLINE NORMAL
检查点类型
当关闭数据库(异常关闭除外)或通过 ALTER SYSTEM CHECKPOINTA 命令手动启动检
查点操作时,将执行称为完全检查点的过程。在完全检查点操作中,DBWn 将数据库缓冲
区高速缓存中的所有灰缓冲区数据写入数据文件。
增量检查点(也称为快速启动检查点)是持续活动的检查点。DBWn 定期从检查点队列写
出缓冲区数据,从而不断推进内存中的增量检查点操作。增量检查点操作使 DBWn 写入
缓冲区高速缓存中的块,这样,最早变灰的缓冲区会被最先写入。增量检查点不更新数据
文件头。增量检查点记录在控制文件中。
ALTER TABLESPACE BEGIN BACKUP 命令仅对缓冲区高速缓存中属于该表空间的灰缓
冲区启动部分检查点操作。
ALTER TABLESPACE tablespace OFFLINE NORMAL 命令也可用于启动部分检查点
操作。
例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn
数据文件 3
口令文件 归档日
数据库 志文件
检查点进程 (CKPT)
检查点进程 (CKPT) 负责在执行各个检查点操作时向 DBWn 发出通知,并更新数据库
的数据文件和控制文件以指明最新的检查点。
每隔三秒,CKPT 就会在控制文件中记录检查点队列中最旧条目的 RBA。出现例程故
障后,通过该 RBA 可以在重做日志中找到例程恢复操作的起点。之所以能够做到这一
点,是因为系统能够保证通过 DBWn 将先前重做记录中表示的所有数据块都写入磁盘。
只有在出现日志切换的情况下,CKPT 才另外将该信息写入数据文件头。要提高性能,
不要一次写入所有文件头,而是按照所谓的 “惰性写入” (Lazy Write) 的方式进行分组更
新。日志切换并不强制将所有灰缓冲区都写入磁盘。
例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn
数据文件 1 重做日志
控制 文件 1
文件
参数文件 数据文件 2 重做日志
文件 2
数据文件 3
口令文件 归档日
数据库 志文件
控制文件的功能
控制文件是一个描述数据库结构的二进制文件。只要装载或打开数据库,控制文件就必须
随时可供 Oracle 服务器写入。它的缺省名称取决于操作系统。如果没有该文件,就无法
装载数据库,系统会要求您恢复或重建控制文件。建议至少要配置两个控制文件,并将它
们分放在不同的磁盘上,以尽量减少丢失一个控制文件所带来的影响。
控制文件的内容
• 数据库名
• 创建数据库的时间戳
• 恢复操作所需的同步信息(检查点和日志序列信息)
• 数据文件和重做日志文件的名称和位置
• 数据库的归档模式
• 当前日志序列号
• 恢复管理器备份元数据
归档后台进程的功能
ARCn 进程是一个可选进程。启用后,该进程会将重做日志文件归档到指定的存储区。该
进程对于设置为 ARCHIVELOG 模式,且每天 24 小时、每周 7 天运行的数据库的备份、
还原和恢复来说至关重要。
ARCn 进程在发生日志切换时启动,并将最近一个未归档的重做日志组中的一个成员复制
到至少一个目标(目标由一个或多个初始化参数指定)。
归档日志文件
当数据库设置为 ARCHIVELOG 模式时,LGWR 进程会等待联机重做日志文件被归档
(可手动,也可通过 ARCn 进程),然后才重新使用这些文件。
如果某个联机重做日志文件损坏,则使用同一组中的另一个成员。归档日志有益于备份和
恢复进程,这是因为:
• 数据库备份与归档重做日志文件结合使用时,可保证所有已提交数据可以被恢复到故
障点。
• 数据库联机时可进行有效的数据库备份。
• 所有数据文件(脱机或只读文件除外)必须首先同步,
数据库才能打开。
• 同步基于当前的检查点号。
• 应用重做日志文件中所记录的更改将同步数据文件。
• Oracle 服务器会自动请求重做日志文件。
数据库同步
只有当所有数据文件、重做日志和控制文件都已同步后,才能打开 Oracle 数据库。在这
种情况下需要进行恢复。
数据库文件同步
• 要打开数据库,所有数据文件必须具有相同的检查点号,除非它们处于脱机状态或者
是只读表空间的一部分。
• 所有 Oracle 文件的同步是基于当前的重做日志检查点和序列号来进行的。
• 归档和联机重做日志文件恢复已提交的事务处理并回退未提交的事务处理,以便同步
数据库文件。
• 归档和联机重做日志文件由 Oracle 服务器在恢复阶段自动请求。确保日志存在于请求
的位置。
1. 未同步的数据文件
2. 前滚(重做) 例程
SGA
3. 文件中提交和未提交 共享池
的数据 共享 SQL
Java 池 大型共享池 和 PL/SQL
4. 回退(还原) 数据库缓冲 重做日志 数据字典
5. 文件中已提交的数据 区高速缓存 缓冲区 高速缓存
数据库
崩溃恢复阶段
与介质恢复不同,在出现例程故障后,Oracle 自动执行崩溃恢复和例程恢复。崩溃恢复和
例程恢复将数据库恢复到刚发生例程故障前的事务处理一致状态。根据定义,崩溃恢复是
对单例程配置中的数据库或 Oracle Real Application Clusters 配置(其中的所有例程都已崩
溃)中的数据库执行的恢复;相对而言,例程恢复是通过 Oracle Real Application Clusters
配置中的一个活动例程来恢复一个失败的例程。
崩溃恢复阶段
1. 数据文件未同步。
2. 在高速缓存恢复期间或前滚阶段,重做日志文件中自上一个检查点之后记录的所有
更改都将重新应用于这些数据文件。此阶段还重新生成还原或回退数据。
3. 现在,数据文件中包含了已提交的更改,还可能包含未提交的更改。数据库已打开。
4. 在事务处理恢复期间或回退阶段,尚未实际提交的任何更改都将被回退。
5. 现在,数据文件中只包含已提交的对数据库所做的更改。
• 优化例程恢复和崩溃恢复的持续时间
• 优化例程恢复的阶段
优化崩溃恢复和例程恢复的性能
在出现例程故障后,例程恢复和崩溃恢复自动将重做日志记录应用于 Oracle 数据块。
要在例程恢复的持续时间与日常性能之间取得平衡,采用的主要手段就是影响 Oracle 执
行检查点操作的频率。您可以尽量减少恢复过程中所处理的块的数量,方法是让检查点处
于最新重做日志记录之后的若干块处。但是,频繁地执行检查点操作将会给正常操作带来
更大的性能开销。
要将例程恢复和崩溃恢复的持续时间保持在用户指定的范围
内,可以采用以下方法:
• 设置初始化参数以影响恢复过程中所涉及的重做日志记
录和数据块的数量。
• 调整重做日志文件的大小以影响检查点操作的频率。
• 发出 SQL 语句以启动检查点操作。
• 并行执行例程恢复操作。
优化崩溃恢复和例程恢复的性能(续)
要将例程恢复和崩溃恢复的持续时间保持在用户指定的范围内,可以采用多种方法:
快速启动故障恢复功能可用来控制例程恢复。该功能通过设定前滚时间的范围并使其可以
预知,从而缩短前滚时间,同时还节省了执行回退所需的时间。快速启动故障恢复的基础
是快速启动检查点体系结构。通过初始化参数可指定完成恢复操作的前滚阶段的目标时间。
重做日志文件的大小直接影响检查点操作。最小日志的大小越小,Oracle 服务器越可以频
繁地将灰缓冲区写入磁盘,以确保在当前日志完全填满之前,使检查点的位置前进到该当
前日志;这样,就可以重新使用该日志。
参数 定义
自增量检查点(该检查点位于上次写入
LOG_CHECKPOINT_TIMEOUT
重做日志的位置处)起经过的时间
在增量检查点与写入重做日志的上一个
LOG_CHECKPOINT_INTERVAL 块之间,可以存在的重做日志文件块的
数量
使用初始化参数影响恢复过程
您可以使用这三个初始化参数来影响 Oracle 执行检查点的频率。
快速启动检查点可持续进行,只要写入块,检查点时间即会前移。完成恢复前滚阶段的目
标(限定)时间可通过参数 FAST_START_MTTR_TARGET 来指定,Oracle 将按照该目标
时间要求自动调整检查点的写入频率。
建议您只使用 FAST_START_MTTR_TARGET 参数,而不要再象在先前版本中那样组合使
用 FAST_START_IO_TARGET、LOG_CHECKPOINT_INTERVAL 和
LOG_CHECKPOINT_TIMEOUT。FAST_START_MTTR_TARGET 可以最精确地控制恢复持
续时间,而且不需要手动为 LOG_CHECKPOINT_INTERVAL 和
LOG_CHECKPOINT_TIMEOUT 设置值。
动态视图 V$INSTANCE_RECOVERY 提供了当前的恢复参数设置。
列 说明
RECOVERY_ESTIMATED_IOS 包含在缓冲区高速缓存中的灰缓冲区数量(在标准版
中,该字段的值始终为 NULL)。
ACTUAL_REDO_BLKS 恢复操作需读取的重做块的当前数量。
TARGET_REDO_BLKS 恢复过程中要处理的重做块的最大目标值。该值是以
下三列中的最小值
(LOG_FILE_SIZE_REDO_BLKS,
LOG_CHKPT_TIMEOUT_REDO_BLKS,
LOG_CHKPT_INTERVAL_REDO_BLKS)。
LOG_FILE_SIZE_REDO_BLKS 恢复过程中要处理的重做块的数量,对应于最小日志
文件 90% 的大小。
LOG_CHKPT_TIMEOUT_REDO_BLKS 恢复过程中为满足 LOG_CHECKPOINT_TIMEOUT 而
必须处理的重做块的数量。
LOG_CHKPT_INTERVAL_REDO_BLKS 恢复过程中为满足 LOG_CHECKPOINT_INTERVAL
而必须处理的重做块的数量。
FAST_START_IO_TARGET_REDO_BLKS 该字段已过时。保留它只为向后兼容。该字段的值始
终为 NULL。
TARGET_MTTR 有效的目标平均恢复时间 (MTTR),以秒计。通常,
它应该等于 FAST_START_MTTR_TARGET 参数的
值。如果为 FAST_START_MTTR_TARGET 设置的
值太小,以致于在其时间范围内无法执行恢复,则
TARGET_MTTR 字段将包含有效的目标 MTTR,它
大于 FAST_START_MTTR_TARGET。如果为
FAST_START_MTTR_TARGET 设置的值太高,甚至
在最坏的情况下(整个缓冲区高速缓存都已变灰),
恢复也不需要如此长的时间,则 TARGET_MTTR 字
段包含在最坏情况下使用的估计 MTTR。如果未指定
FAST_START_MTTR_TARGET,则 TARGET_MTTR
字段为 0。
ESTIMATED_MTTR 根据灰缓冲区和日志块的数量而给定的当前估计平均
恢复时间 (MTTR),以秒计。即使未指定
FAST_START_MTTR_TARGET,也会给出当前估计
的 MTTR。
CKPT_BLOCK_WRITES 由检查点写入操作所写入的块的数量。
V$INSTANCE_RECOVERY
本视图监视用户可用来限制恢复 I/O 的机制。这些机制包括:
• 设置初始化参数 LOG_CHECKPOINT_TIMEOUT
• 设置初始化参数 LOG_CHECKPOINT_INTERVAL
• 设置初始化参数 FAST_START_MTTR_TARGET
• 设置最小重做日志的大小
V$INSTANCY_RECOVERY 列
RECOVERY_ESTIMATED_IOS:包含在缓冲区高速缓存中的灰缓冲区数量。在标准版
中,该列的值始终为 NULL。
ACTUAL_REDO_BLKS:恢复操作所需的重做块的当前实际数量
TARGET_REDO_BLKS:在恢复过程中必须处理的重做块的当前目标数量。该值是以下三
列中的最小值,它确定这三个用户定义的限制中哪一个用来决定检查点操作。
LOG_FILE_SIZE_REDO_BLKS:要保证在检查点操作完成之前不进行日志切换而需要的
重做块的最大数量。
• 优化前滚阶段
• 优化回退阶段
优化例程恢复的阶段
您可以使用参数来控制例程恢复的前滚和回退阶段,以提高恢复操作的效率。所需的总恢
复时间为前滚和回退各自所需时间的总和。
• 并行块恢复
• RECOVERY_PARALLELISM 可指定并发恢复进程的数量
优化前滚阶段
RECOVERY_PARALLELISM 初始化参数用来指定例程或崩溃恢复操作中并发进程的数量。
使用多个进程实际上相当于提供并行块恢复。在前滚阶段,不同的进程分配给不同的块。
RECOVERY_PARALLELISM 初始化参数仅指定例程或崩溃恢复中并发恢复进程的数量。
介质恢复不受此参数影响。对于介质恢复,可在 RECOVER DATABASE 语句中使用
PARALLEL 子句。
• 快速启动按需回退
• 快速启动并行回退
优化回退阶段
快速启动按需回退是一种自动功能,借助此功能,恢复操作的前滚阶段一结束,就可以立
即开始新的事务处理。如果用户试图访问被死事务处理锁定的行,则仅回退完成该事务处
理所需的更改。回退是根据需要进行的。
服务器进程遇到要回退的数据时将执行以下操作:
• 回退包含所需行的块
• 将其余的恢复工作(可能是并行的)转交给 SMON
响应
增强
快速启动按需回退
用户事务处理仅对该事务处理试图访问的块启动回退。剩余的块由 SMON 在后台恢复
(可能是并行的)。这样做的优势在于:不必等到一个较长事务的处理工作被全部回退即
可完成另一个事务处理。
SMON
P000
P001
P002
P003
还原段
表
快速启动并行回退
快速启动并行回退使 SMON 可以充当协调程序并使用多个服务器进程来完成回退操作。
当 SMON 确定死事务处理已生成大量的还原块时,它会自动启动并行回退。
对于长时间运行事务处理的系统,特别是对执行并行的 INSERT、UPDATE 和 DELETE 操
作的系统,该功能非常有用。
FAST_START_PARALLEL_ROLLBACK 参数
值 并行恢复服务器的最大数量
FALSE 无
HIGH 4 * CPU_COUNT
控制快速启动并行回退
事务处理恢复中所涉及的进程数量由动态初始化参数
FAST_START_PARALLEL_ROLLBACK 设置。上表显示了该参数的有效值及其对快速启
动并行回退的影响。
• V$FAST_START_SERVERS
• V$FAST_START_TRANSACTIONS
监视并行回退
使用以下查询可以监视将并行查询从属用于快速启动并行回退的情况:
SELECT * FROM v$fast_start_servers;
STATE UNDOBLOCKSDONE PID
---------- -------------- ---
RECOVERING 99 10
IDLE 0 11
IDLE 0 12
IDLE 0 13
使用以下查询可以确认快速启动回退的状态:
SELECT usn, state, undoblksdone, undoblkstotal
FROM v$fast_start_transactions;
USN STATE UNDOBLOCKSDONE UNDOBLOCKSTOTAL
--- ---------- -------------- ---------------
2 RECOVERING 82 365
USN 列指定回退发生在哪个还原段,而 UNDOBLKSDONE 和 UNDOBLKSTOTAL 则分别指
定已完成的工作量和总工作量。
在这一课中,您应该能够掌握:
• 了解对恢复操作十分关键的例程和数据库的组件
• 优化崩溃恢复和例程恢复
此练习涉及以下主题:
• 查询动态性能视图以确定数据库的当前状态和结构
• 说明如何使用特定的初始化参数
• 设置控制文件和重做日志文件的镜像
完成这一课的学习后,您应该能达到下列目标:
• 说明 ARCHIVELOG 与 NOARCHIVELOG 模式之间
的区别
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档说明 ARCHIVELOG 与
NOARCHIVELOG 模式之间的区别
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档
LGWR 无重做历史记录
052
054 053
重做历史记录
051
052
联机重做日志文件
重做日志历史记录
所有事务处理都记录在联机重做日志文件中。这样在数据库发生故障时就可以自动恢复
事务处理了。
如果数据库配置为 NOARCHIVELOG 模式,则没有重做历史记录保存到归档日志文件
中,恢复操作将受到限制,并且可能会导致事务处理工作丢失。这是日志文件自动循环
的结果,在该循环过程中,恢复操作所需的较旧的日志文件被覆盖,只有该事务历史记
录的最新部分可用。
您可以将数据库配置为 ARCHIVELOG 模式,以便重做信息的历史记录可以保留在归档
文件中。归档重做日志文件可以用于介质恢复。
数据库最初可以在 ARCHIVELOG 模式下创建,但缺省情况下配置为 NOARCHIVELOG
模式。
LGWR
无重做历
史记录
联机重做日志文件
052 053
053
054
052
052 053
053
054
NOARCHIVELOG 模式
缺省情况下,数据库是以 NOARCHIVELOG 模式创建的。在 NOARCHIVELOG 模式下操
作数据库时有以下特性:
• 重做日志文件以循环的方式使用。
• 重做日志文件可以在检查点发生之后立即重新使用。
• 重做日志被覆盖后,介质恢复将只能恢复到上一次完全备份。
NOARCHIVELOG 模式的含义
• 如果某个表空间由于故障而不可用,您将无法继续对数据库进行操作,除非删除了该
表空间或从备份还原了整个数据库。
• 您只能在数据库关闭时对数据库执行操作系统备份。而且,必须使用 NORMAL、
IMMEDIATE 或 TRANSACTIONAL 选项关闭数据库。
• 您必须在每次备份时完整备份所有的数据文件和控制文件。尽管也可以备份联机重做
日志文件,但这是不必要的。由于此类备份中日志文件是一致的,无需恢复,因此,
不需要备份联机日志。
• 如果联机重做日志文件已被覆盖,则将丢失上次完全备份后的所有数据。
LGWR
重做
历史记录
联机重做日志文件
052 053
051
054 053 051
052
052 051
053
054 053 053
归档日志文件
ARCHIVELOG 模式
在发生检查点并且已经通过 ARCn 后台进程备份重做日志文件之前,不能重新使用填满的
重做日志文件。控制文件中将有一个条目记录归档日志文件的日志序列号。
对数据库的最新更改在任何时候均可用于例程恢复,而归档重做日志文件可以用于介质恢
复。
归档要求
数据库必须处于 ARCHIVELOG 模式。通过发出命令将数据库置于 ARCHIVELOG 模式可
以更新控制文件。可以启用 ARCn 后台进程来实现自动归档。
应该有足够的资源来存放生成的归档重做日志文件。
• 出现介质故障时,可以防止数据库丢失数据。
• 可以在数据库联机时对其进行备份。
• 由于介质故障导致表空间(非 SYSTEM)脱机时,数据库的其余部分仍可用,因为表
空间(非 SYSTEM)可以在数据库打开时恢复。
介质恢复选项
• 无论数据库处于联机或脱机状态,您都可以还原损坏文件的备份副本,并使用归档日
志文件将数据文件更新为当前的版本。
• 可以将数据库恢复至特定的时间点。
• 可以将数据库恢复至指定归档日志文件的末尾。
• 可以将数据库恢复至特定的系统更改号 (SCN)。
1 SHUTDOWN NORMAL/IMMEDIATE/TRANSACTIONAL
初始化参数 控制文件
更改归档模式
初始归档模式在 CREATE DATABASE 语句中进行设置。缺省值为 NOARCHIVELOG 模
式,在该模式下,不对创建数据库过程中生成的重做信息进行归档。
您可在数据库处于装载状态时使用 ALTER DATABASE 命令更改 ARCHIVELOG 模式。
SQL> ALTER DATABASE [ archivelog | noarchivelog ]
其中:
• archivelog 将重做日志文件组设置为 ARCHIVELOG 模式
• noarchivelog 将重做日志文件组设置为 NOARCHIVELOG 模式
步骤 说明
1 关闭数据库:SQL> SHUTDOWN IMMEDIATE
2 在装载状态下启动数据库,以更改数据库的 Archivelog
模式:SQL> STARTUP MOUNT
3 使用 ALTER DATABASE 命令将数据库设置为 Archivelog
模式:
SQL> ALTER DATABASE ARCHIVELOG;
4 打开数据库:
SQL> ALTER DATABASE OPEN;
5 对数据库进行完全备份。
• 自动归档:LOG_ARCHIVE_START=TRUE
• 手动归档:LOG_ARCHIVE_START=FALSE
053 053
DBA
自动和手动归档
归档进程
将数据库设置为 ARCHIVELOG 模式后,您必须决定是自动还是手动归档联机重做日志文
件。这是创建归档重做日志文件以便用于恢复时的第二步。
自动和手动归档
• 在自动归档过程中,将启用 ARCn 后台进程,该进程在重做日志文件填满后复制这些
文件。
• 在手动归档过程中,必须使用 SQL*Plus 或 Oracle Enterprise Manager 复制文件。
• 建议您启用日志文件的自动归档。
LOG_ARCHIVE_MAX_PROCESSES 参数
并行的数据定义语言 (Data Definition Language, DDL) 和并行的数据操纵语言 (Data
Manipulation Language, DML) 操作可能会生成大量的重做日志文件。使用一个 ARC0 进程
来归档这些重做日志文件可能会不够用。Oracle 将根据需要启动更多进程。不过,如果您
希望避免由于调用附加进程而造成运行时开销,可以指定在例程启动时将启动的进程数。
使用 LOG_ARCHIVE_MAX_PROCESSES 参数最多可指定十个 ARCn 进程。
将 LOG_ARCHIVE_START 设置为 TRUE 后,Oracle 例程将按照
LOG_ARCHIVE_MAX_PROCESSES 定义的数量启动多个归档进程。
在例程有效期内,您一直可以衍生更多归档进程,只要不超过由
LOG_ARCHIVE_MAX_PROCESSES 设置的值,也可随时终止归档进程。
LOG_ARCHIVE_MAX_PROCESSES=2
ARC0ARC1
053
053 053
联机重做日志 归档重做日志
ARC2
ARCn 进程的动态数目
在事务处理负载较重或活动较多的时期,可临时启动更多归档进程以避免归档瓶颈。事务
处理活动恢复到正常水平后,可停止部分 ARCn 进程。
例如,在一个月中的每一天,可以启动有两个归档进程的例程。在每个月的最后一天,活
动量总是增多,因此可以启动更多进程:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
这一天过后,如果例程未关闭,则可发出下面的 SQL 命令来停止附加的归档进程:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=2;
已归档
已归档
当前 归档日志文件
051
051
052
053
051
051
联机重做日志
ARC0
LOG_ARCHIVE_START=TRUE 052
052
LOG_ARCHIVE_MAX_PROCESSES=n
在例程启动时启用自动归档
如果数据库处于 ARCHIVELOG 模式,通过设置以下参数,可以在每次启动数据库例程时
启动归档程序进程:
LOG_ARCHIVE_START = boolean
其中:
• 如果 Boolean 为 TRUE,将在例程启动时自动启动 n 个 ARCn 进程,其中 n 是由
LOG_ARCHIVE_MAX_PROCESSES 确定的值。
• 如果 Boolean 为 FALSE,将禁止在例程启动时启动 ARCn。
设置初始化参数后,ARCn 进程将在例程启动时自动启动,而无需您手动启动自动归档。
ARC0 051
3
在例程启动后启用自动归档
您可使用 ALTER SYSTEM 命令启用自动归档。
步骤 说明
1 检查 ARCn 进程的状态:
SQL> ARCHIVE LOG LIST
2 启用归档程序进程 (ARCn) :
UNIX :
SQL> ALTER SYSTEM ARCHIVE LOG START
TO ‘/ORADATA/ARCHIVE1‘;
Windows NT :
SQL> ALTER SYSTEM ARCHIVE LOG START
TO ‘c: \ u04 \ Oracle \ TES T \ log‘;
3 ARCn 进程将在日志文件填满时自动将其归档。
2
初始化
参数
LOG_ARCHIVE_START
1
051 052
联机重做日志
051
ARC0
052
禁用自动归档
您可随时使用 SQL*Plus 中的 ALTER SYSTEM 命令或通过 Oracle Enterprise Manager 停止
归档进程,无论这些进程是如何启动的。
步骤 说明
1 如果已启用 ARCn 进程,则执行以下命令以停止
ARCn 进程:
SQL> ALTER SYSTEM ARCHIVE LOG STOP;
2 通过设置以下初始化参数,确保未在例程启动时启
用自动归档:
LOG_ARCHIVE_START=FALSE
联机重做日志
服务器 051
进程
2 052
手动归档重做日志文件
如果数据库处于 ARCHIVELOG 模式,且未启用自动归档,则必须手动归档联机重做日志
文件。
步骤 说明
1 执行 ALTER SYSTEM SQL 命令:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
2 用户执行命令的服务器进程会执行联机重做日志文件
的归档。
此外,您可在启用自动归档的情况下使用手动归档,将非活动的组重新归档到另一个目标。
您必须使用管理员权限进行连接,才能使用 ALTER SYSTEM ARCHIVE LOG 命令。
选项 说明
GROUP 归档联机重做日志文件组
CURRENT 归档指定线程的当前重做日志文件组
LOGFILE 归档包含有由文件名标识的成员的重做日志文件组
NEXT 将尚未归档的最旧的联机重做日志文件组进行归档
ALL 对指定线程的已满但尚未归档的所有联机重做日志文件组
进行归档
START 启用重做日志文件组的自动归档
TO 指定重做日志文件组归档的目标位置
STOP 禁用重做日志文件组的自动归档
• 使用 LOG_ARCHIVE_DEST_n 最多可指定十个归档目标。
• 使用 LOG_ARCHIVE_FORMAT 可在文件名中包括日志序
列号和线程号。
指定归档日志目标
LOG_ARCHIVE_DEST_n 参数
LOG_ARCHIVE_DEST_n 参数(其中,n = 1、2、3、4、5...10)最多可定义 10 个归档日
志目标。该参数仅在安装了 Oracle 企业版后才有效。在 Oracle8i 中,您最多可定义 5 个
目标。
LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 参数
定义多个归档位置的另一种方法是,使用 LOG_ARCHIVE_DEST 参数指定主位置,使用
LOG_ARCHIVE_DUPLEX_DEST 参数定义备份目标。
注:这两种定义归档目标的方法是相互排斥的。对于 Oracle 企业版用户,建议不要使用
LOG_ARCHIVE_DEST 参数,而支持使用 LOG_ARCHIVE_DEST_n 参数。如果未安装
Oracle 企业版,或已安装但尚未指定任何 LOG_ARCHIVE_DEST_n 参数,则该参数有效。
LOG_ARCHIVE_FORMAT 参数
使用 LOG_ARCHIVE_FORMAT 可在文件名中包括日志序列号和线程号。
使用 LOG_ARCHIVE_DEST_n 最多可指定十个归档目标,
这些目标可位于:
• 本地磁盘
• 远程备用数据库
log_archive_dest_1 = "LOCATION=/archive1"
log_archive_dest_2 = "SERVICE=standby_db1"
指定多个归档位置
LOG_ARCHIVE_DEST_n 是动态参数,可以在系统级或会话级对其进行修改。通过添加
后缀 1 到 10,最多可以指定十个目标。
目标可以是:
• 本地文件系统位置,由关键字 LOCATION 定义。指定的位置必须是有效的,并且不能
是一个 NFS 装载的目录。
• 远程目标的 Oracle Net 别名,由关键字 SERVICE 指定。指定的服务名通过使用本地
的 tnsnames.ora 文件进行解析,以标识远程数据库。Oracle9i 支持使用 IPC 或
TCP/IP 协议将归档日志文件发送到远程节点。只能为每个远程数据库指定一个归档目
标。
注:配置归档日志目标时,确保根据所用的操作系统环境来设置路径名。
您必须为至少一个目标指定 LOCATION 参数。
log_archive_dest_1="LOCATION=/archive/
MANDATORY REOPEN"
log_archive_dest_2="SERVICE=standby_db1
MANDATORY REOPEN=600"
log_archive_dest_3="LOCATION=/archive2/
OPTIONAL"
LOG_ARCHIVE_DEST_n 的附加选项
MANDATORY 与 OPTIONAL
使用 LOG_ARCHIVE_DEST_n 参数时,可以将目标指定为强制 (mandatory) 或可选
(optional),如下所示:
• MANDATORY 表示必须成功完成归档到该目标的操作才可以覆盖联机重做日志文件。
• OPTIONAL 表示即使联机重做日志文件尚未成功地归档到该目标,也可以重新使用。
这是缺省设置。
REOPEN 属性
• REOPEN 属性定义发生故障时是否必须重新尝试归档到目标。如果为关键字 REOPEN
指定了值,如 REOPEN=600,则若发生故障,在经过指定时间(以秒计)后,归档程
序将尝试写入该目标。缺省值为 300 秒。归档到目标的尝试次数没有限制。归档中的
所有错误将在主站点的警报文件中报告。
• 如果未指定 REOPEN,则可选目标上的错误将被记录并忽略。不再将重做日志发送到
这些目标。在归档成功之前,强制目标上的错误将导致无法重新使用联机重做日志。
只要归档不成功,归档目标的状态就设置为 ERROR。
• LOG_ARCHIVE_MIN_SUCCEED_DEST 参数
LOG_ARCHIVE_MIN_SUCCEED_DEST = 2
• 只有在下列情况下才能重新使用联机重做日志组:
– 已归档到所有强制位置
– 已归档的本地位置数大于或等于
LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值
指定成功归档位置的最小数量
可以使用联机重做日志文件之前需要成功归档的目标数量是根据以下设置决定的:
• 定义为 MANDATORY 的目标的数量
• LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值。该参数用于为需要归档的本地目标数
指定一个下限值。如果该值小于强制本地目标的数量,则它对归档行为没有影响。如
果该值大于强制本地目标的数量,则本地归档目标的数量必须至少等于该值,才可以
重新使用联机重做日志文件。
• 可以使用动态初始化参数
LOG_ARCHIVE_DEST_STATE_n 禁用归档目标。
LOG_ARCHIVE_DEST_STATE_2 = DEFER
• 可以重新启用归档到某一目标的操作。
LOG_ARCHIVE_DEST_STATE_2 = ENABLE
LOG_ARCHIVE_DEST_STATE_n 参数
• 归档目标的状态可以动态地进行更改。缺省情况下,归档目标是 ENABLE 状态,表明
Oracle 服务器可以使用该目标。
• 归档目标的状态可以通过设置相应的 LOG_ARCHIVE_DEST_STATE_n 参数来进行修
改。例如,要在发生错误时暂时停止归档到强制位置,可以将该目标的状态设置为
DEFER。在参数文件中可能定义了一个目标,但它设置为 DEFER。当另一目标出现错
误或需要维护时,可以启用该目标。
注:如果一个目标的状态设置为 DEFER,则不会执行归档到该目标的操作。如果该目标
的状态更改为 ENABLE,则必须手动将所有缺失的日志归档到该目标。
联机重做日志文件
组1 组2
已归档的日志文件
053 053
052
052
ARC0
ARC0 052
053 053
052 /ORADATA/archive/arch%s.arc
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_FORMAT
指定 LOG_ARCHIVE_FORMAT
LOG_ARCHIVE_FORMAT = extension
其中,extension 应包括日志序列号变量 %s 或 %S。缺省值是根据操作系统而定的。
示例
UNIX:LOG_ARCHIVE_FORMAT=arch%s.arc
Windows NT:LOG_ARCHIVE_FORMAT = %%ORACLE_SID%%T%TS%S.ARC,其中,
%ORACLE_SID% 被转换为数据库 SID
文件名选项
• %s 或 %S:包括日志序列号,作为文件名的一部分。
• %t 或 %T:包括线程号,作为文件名的一部分。
• 使用 %S 可通过在值的左侧用 0 来填补空位使该值长度保持固定。
动态视图
V$ARCHIVED_LOG
V$ARCHIVE_DEST
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
命令行
动态视图
您可使用下列视图查看有关归档日志文件的信息:
• V$ARCHIVED_LOG:显示控制文件中的归档日志信息。
• V$ARCHIVE_DEST:对于当前例程,说明所有归档日志目标、当前值、模式和状
态。
SELECT destination, binding, target, status
FROM v$archive_dest;
DESTINATION BINDING TARGET STATUS
---------------------- --------- ------- --------
/db1/oracle/DEMO/arch MANDATORY PRIMARY VALID
/db2/oracle/DEMO/arch OPTIONAL PRIMARY DEFERRED
standbyDEMO OPTIONAL STANDBY ERROR
OPTIONAL PRIMARY INACTIVE
OPTIONAL PRIMARY INACTIVE
归档列表显示 说明
Database log mode 归档的当前模式
Automatic archival 可选归档程序进程的状态
Archive destination 日志文件将要复制(按照手册说明或通过
单独的进程)到的目标;即使这些目标都
是强制性的,也只显示它们中的一个
Oldest online log sequence 最旧的联机日志的序列号
Next log sequence to archive 下一个要归档的重做日志(仅在 Archivelog
模式下显示)
Current log sequence 当前日志文件的序列号
在这一课中,您应该能够掌握:
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档
• 配置多个归档进程
• 配置多个目标
此练习涉及以下主题:
• 启用和禁用自动归档
• 配置多个归档程序进程
• 配置多个归档目标
• 执行重做日志文件的手动归档
完成这一课的学习后,您应该能达到下列目标:
• 了解 RMAN 的功能和组件
• 说明 RMAN 资料档案库和控制文件的用法
• 说明通道分配
• 说明介质管理库界面
• 不使用恢复目录连接到 RMAN
• 配置 RMAN 环境
RMAN 提供了一种灵活的方式来执行下列操作:
• 备份数据库、表空间、数据文件、控制文件和归档日志
• 存储频繁执行的备份和恢复操作
• 执行增量块级别备份
• 跳过未使用的块
• 指定备份限制
恢复管理器功能
恢复管理器 (Recovery Manager, RMAN) 是一个 Oracle 实用程序,用于管理 Oracle 数据库
上的备份、还原和恢复操作。RMAN 具有功能强大且独立于操作系统的命令语言。
恢复管理器具有命令行界面。Oracle Enterprise Manager 也为恢复管理器提供图形用户界
面。在 Oracle8 或更高版本的数据库上都可以使用恢复管理器。
RMAN 提供的几种功能是在使用操作系统命令执行用户管理的备份时所不具备的。
• 您可以将频繁执行的操作作为脚本存储在数据库中。
• 使用增量块级别备份功能,您可只备份自上次备份后发生更改的块。这还可以减少在
ARCHIVELOG 模式下执行恢复操作所需的时间。
• 您可以使用 RMAN 来管理备份片的大小,并通过并行化备份操作来节省时间。
• RMAN 操作可以和操作系统的日程安排集成在一起,以实现自动备份操作。
RMAN 为执行下列操作提供了一种灵活的方式:
• 检测备份过程中损坏的块
• 通过下列方式提高性能:
– 自动并行化
– 生成较少的重做日志
– 限制备份的 I/O 操作
– 磁带流式处理
• 管理备份和恢复任务
恢复管理器功能(续)
• 您可以检测块的损坏情况。可以使用 V$BACKUP_CORRUPTION 和
V$COPY_CORRUPTION 动态视图来获取有关在备份时检测到的块损坏的信息。
• RMAN 可以提高性能,例如:
– 自动并行化备份、还原和恢复操作
– 在联机数据库备份期间不生成额外的重做日志
– 为避免干扰 OLTP 工作,限制备份操作每一秒钟只对一个文件进行读取
– 应用多路复用技术,在保持磁带机流式处理的同时,防止任何一个文件读写溢流
• RMAN 包含一个介质管理 API,可以与第三方介质管理工具一起无缝工作,使得这些
工具可以与存储设备实现交互,从而提高速度和可靠性。
• 如果使用用户管理的方法,您需要跟踪所有数据库文件和备份。在执行恢复操作时,
您必须找到每个数据文件的备份、使用操作系统命令将它们复制到正确位置,然后选
择要应用的日志。而 RMAN 能够自动管理这些任务。RMAN 的这一优点在使用
“Oracle 管理文件” (Oracle Managed Files) 时尤其有用。
服务器会话
(轮询)
Enterprise
恢复管理器
目标数据库 (RMAN) Manager
服务器会话
(rcvcat)
恢复目录数据库
磁盘 磁盘
恢复管理器组件
恢复管理器可执行文件:恢复管理器命令行界面可以通过可执行文件 RMAN 调用。
RMAN 解释用户命令并相应地调用服务器会话,以执行所需的任务。
Oracle Enterprise Manager:“Oracle Enterprise Manager 备份、恢复和目录维护” (Oracle
Enterprise Manager Backup, Recovery, and Catalog Maintenance) 向导提供访问恢复管理器的
图形用户界面。
注:只有在您连接到管理服务器 (Management Server) 的情况下,向导和属性工作表才可
用。
服务器会话:由 RMAN 调用的服务器进程 (UNIX) 或线程 (Windows NT) 与目标数据库连
接,通过 PL/SQL 接口执行备份、还原和恢复功能。
目标数据库:正在使用 RMAN 对其进行备份和恢复操作的数据库称作目标数据库。目标
数据库的控制文件包含其物理结构的有关信息,例如,数据文件的大小和位置、联机和归
档重做日志文件以及控制文件。在备份和恢复操作过程中,由 RMAN 调用的服务器会话
将使用这些信息。
• RMAN 资料档案库包含的是有关目标数据库和备份及恢
复操作的元数据。
• RMAN 资料档案库始终存储在目标数据库的控制文件中。
• CONTROL_FILE_RECORD_KEEP_TIME 用于确定一个记
录至少要保留多少天才可被覆盖。
• 控制文件可能增大。
磁盘
服务器
通道(磁盘)
会话
目标 RMAN
数据库 服务器 通道 (sbt)
会话
通道分配
每个通道代表通向某一类型设备的一个数据流。在执行备份和恢复命令前,必须先分配通
道。每个已分配的通道建立从 RMAN 可执行文件到目标或辅助数据库(通过复制命令建
立的数据库或 TSPITR 中使用的临时数据库)例程的连接,方法是在例程上启动服务器会
话。该服务器会话执行备份和恢复操作。只有一个 RMAN 会话可与已分配的服务器会话
通信。
每个通道通常对应一个输出设备,除非您的 MML 具有硬件多路复用功能。
您可以手动分配通道,也可以使用自动通道分配功能预先配置要在所有 RMAN 会话中使
用的通道。
手动分配通道
手动分配通道时,可在 RMAN 提示符下,将 ALLOCATE CHANNEL 作为 RUN 命令的子命
令发出,也可使用 ALLOCATE CHANNEL FOR MAINTENANCE 命令。手动通道分配将覆
盖自动通道分配。
• 更改缺省设备类型:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;
• 配置自动通道的并行性:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3;
• 配置自动通道选项:
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK
2> FORMAT = ‘/BACKUP/RMAN/%U';
配置自动通道
您可在 RMAN 资料档案库中保存永久配置信息,如通道参数、并行性和缺省设备类型。
可配置自动通道用于备份、还原、恢复和维护作业。
如果通道是由 RMAN 自动分配的,其名称格式为 ora_devicetype_n(ora_sbt_tape_n 或
ora_disk_n)。
如果未指定名称格式,在缺省情况下,RMAN 将使用 %U 格式,该格式可保证标识符唯
一。%U 指定 %u_%p_%c 的简写方式,可保证生成的备份文件名的唯一性。%u 指定一个
8 个字符长的名称,该名称由备份集号和备份集创建时间的缩写形式构成。%p 指定备份
集中的备份片号。%c 指定一组双重备份片中备份片的副本数。
您可通过 ALLOCATE CHANNEL 命令手动分配通道来覆盖自动通道。自动分配通道功能
与手动分配通道功能是互斥的,即:对于每个作业,RMAN 要么使用自动分配,要么使
用手动分配。
缺省情况下,RMAN 已预先配置了一个磁盘通道,这样您可以备份到磁盘而无需进行任
何手动配置。因此,如果要备份到磁盘而不是介质管理器,现在就可以开始备份到磁盘。
使用 “创建备份配置” 向导分配通道
使用 “创建备份配置” 向导,您可使用备份和恢复的一组缺省值来定义配置。在 “常规”
(General) 页上,提供用于备份、恢复和目录维护操作的一组缺省值的名称和说明。在 “通
道” (Channels) 页上,指定要将该配置用于使用映像副本的备份还是使用备份集的备份。
手动分配通道
恢复管理器使用通道进程在 Oracle 服务器与操作系统之间进行通信。
• 系统将为每个分配的通道创建目标数据库的一个 Oracle 服务器进程。从恢复管理器发
出的每个 BACKUP、COPY、RESTORE 或 RECOVER 命令至少需要一个通道。
• 分配的通道数将是备份、还原或恢复期间使用的最大并行度。
• 所需的介质类型确定了分配的通道类型。查询 V$BACKUP_DEVICE 视图可以确定支持
哪些设备类型。
• 您可以通过在 ALLOCATE CHANNEL 命令中指定参数来对 COPY 和 BACKUP 命令施加
限制:
– Read rate:限制每个文件每秒读取的缓冲区数,防止过多的磁盘 I/O 降低联机性
能。
allocate channel … rate = integer
– Kbytes:限制通道创建的备份片文件大小。这在操作系统或设备类型有最大的文
件大小限制时非常有用。
allocate channel … maxpiecesize = integer
分配通道示例
• ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE disk;
此命令为 DELETE 命令分配通道,因为将从磁盘删除一个文件。维护通道不能用于任
何其它 I/O 操作,如备份或复制。
• RMAN> RUN {
2> ALLOCATE CHANNEL d1 DEVICE TYPE disk
3> FORMAT = ’/db01/BACKUP/%U’;
4> BACKUP DATAFILE ’/…/u03/users01.dbf’;}
第二个示例分配一个名为 d1 的通道,由该通道创建的所有文件都具有格式
’/db01/BACKUP/%U’。该通道备份一个数据文件
/db01/ORADATA/u03/users01.dbf。
Oracle 服务器
恢复管理器 介质管理库
会话
介质管理
服务器
软件
磁带库或单一
磁带
介质管理
要使用磁带存储数据库备份,RMAN 需要使用介质管理器。介质管理器是加载、标记和
卸载顺序介质的实用程序,如用于备份、还原和恢复数据的磁带机。Oracle 服务器调用
MML 软件例行程序将数据文件备份到由介质管理器控制的介质或从介质中还原数据文件。
有些介质管理产品可以管理 Oracle 数据文件与备份设备之间的整个数据移动。有些产品
在存储设备与介质子系统之间使用高速连接,从而大大降低主数据库服务器的备份负载。
注:如果是备份到磁盘,Oracle 服务器无需连接到介质管理库 (MML) 软件。
Oracle 备份解决方案 (Oracle Backup Solutions Program, BSP) 提供一系列符合 Oracle 的
MML 规范的介质管理产品。使用与 MML 界面相兼容的软件,Oracle 服务器会话可备份
到介质管理器并请求介质管理器还原备份。请与介质供应商联系以确定其是否为 Oracle
BSP 的成员。
• 目标数据库
• 恢复目录数据库
• 辅助数据库
– 备用数据库
– 重复数据库
– TSPITR 例程
使用 RMAN 连接的数据库类型
使用恢复管理器,可连接到下列类型的数据库:
• 目标数据库:使用 SYSDBA 权限连接到目标数据库。您必须具有该权限才能连接成功。
• 恢复目录数据库:这是一种为 RMAN 资料档案库配置的可选数据库。
• 辅助数据库:辅助数据库是使用 RMAN DUPLICATE 命令创建的数据库。它也可能是
在表空间时间点恢复 (TSPITR) 过程中使用的临时数据库。备用数据库是生产数据库的
副本,可用于灾难恢复。
• 从本地启动 RMAN
UNIX: $ ORACLE_SID=DB01; export ORACLE_SID
$ rman target / as sysdba
Windows NT: C:\> set ORACLE_SID=DB01
C:\> rman target / as sysdba
• 从远程启动 RMAN
rman target sys/target_pwd@DB01
不使用恢复目录连接到目标数据库
本地连接
对于本地 RMAN 连接,在操作系统提示符后键入:
UNIX: $ ORACLE_SID=DB01; export ORACLE_SID
$ rman target /
Windows NT: C:\> SET ORACLE_SID=DB01
C:\> rman target /
您也可以选择指定关键字 NOCATALOG,如下所示:
$ rman target / nocatalog
NOCATALOG 是缺省模式。
远程连接
要从另一服务器进行连接,请使用目标数据库的网络服务名:
$ rman target sys/target_pwd@DB01
• 将 RMAN 输出写入到一个日志文件:
$ rman target sys/oracle
log $HOME/ORADATA/u03/rman.log append
• 调用 RMAN 时执行命令文件:
$ rman target sys/oracle
log $HOME/ORADATA/u03/rman.log append
@’$HOME/STUDENT/LABS/my_rman_script.rcv’
RMAN 命令行参数
LOG = 'filename' 参数指定用于记录 RMAN 输出的文件。如果未指定该参数,
RMAN 将把其消息日志文件写入到标准输出。如果无法打开指定的文件,RMAN 不会中
止,而是将输出内容写入到标准输出设备。
APPEND 关键字指定新的输出应附加在消息日志文件的末尾。如果未指定该参数,一旦存
在与消息日志文件同名的文件,RMAN 将覆盖该文件。
您可使用 CMDFILE = 'filename' 运行包含 RMAN 命令的文件。如果文件名的第一个
字符是字母,则可不必将文件名放在引号内。RMAN 将在运行命令文件后终止。
• 交互模式
– 在执行分析操作时使用
– 尽量减少常规使用量
– 避免与日志选项一起使用
• 批处理模式
– 目的是自动处理作业
– 尽量减少操作者错误
– 设置日志文件以获取信息
恢复管理器
恢复管理器是一个具有自己的命令语言的命令行解释程序 (CLI)。RMAN 有两种操作模式:
交互模式和批处理模式。
交互模式:要交互运行 RMAN 命令,请启动 RMAN,然后在命令行界面中键入命令。例
如,您可以从 UNIX 命令 shell 启动 RMAN,然后执行以下交互命令:
$ rman target sys/sys_pwd@db1
RMAN> BACKUP DATABASE;
批处理模式:您可以将 RMAN 命令输入到一个文件中,然后通过在命令行中指定该文件
的名称来运行该命令文件。命令文件的内容应与命令行中输入的命令完全相同。
以批处理模式运行时,RMAN 从命令文件中读取输入内容,然后将输出消息写入日志文
件(如果已指定)。
RMAN 命令有下列类型:
• 独立命令
– 仅在 RMAN 提示符下执行
– 分别执行
– 不能作为 RUN 命令的子命令
• 作业命令
– 必须位于 RUN 命令的括号中
– 成组执行
• 独立命令或作业命令
RMAN 命令
RMAN 具有两种基本类型的命令:独立命令和作业命令。
独立命令在 RMAN 提示符下执行,通常是自包含的。下列是部分独立命令:
• CHANGE
• CONNECT
• CREATE CATALOG, RESYNC CATALOG
• CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT
作业命令通常被分成几组,由 RMAN 在 RUN 命令块内按顺序执行。如果块内任何一个命
令失败,RMAN 将停止处理;而不再继续执行块内的其它命令。
有一些命令既可在提示符下发出也可在 RUN 命令中发出。如果在 RMAN 提示符下执行独
立命令,可利用自动分配通道的功能。
可以按交互模式或批处理模式执行命令。
RUN 命令:
RMAN> RUN {
backup
incremental level 0
format ‘/u01/db01/backup/%d_%s_%p’
fileperset 5
(database include current controlfile);
sql ‘alter database archive log current’;
}
作业命令
与独立命令不同,作业命令必须包含在 RUN 命令的括号中。下面是作业命令的示例:
• ALLOCATE CHANNEL
• SWITCH
RMAN 按顺序执行 RUN 命令块内的作业命令。如果块内的任何命令失败,RMAN 将停止
处理;不再继续执行块内的其它命令。实际上,RUN 命令定义了一个命令执行单位。当
RUN 命令块内的最后一个命令执行完毕后,Oracle 将释放为该命令块分配的所有服务器端
资源,如 I/O 缓冲区或 I/O 从属进程。
• RMAN 预设为使用缺省配置设置
• 使用 CONFIGURE 命令可以:
– 配置自动通道
– 指定备份保留策略
– 指定要创建的备份副本数
– 限制备份集的大小
– 使表空间从备份中脱离
– 启用和禁用备份优化
RMAN 配置设置
RMAN 预设为使用适用于所有 RMAN 会话的缺省配置设置。
您可使用 CONFIGURE 命令配置 RMAN 备份、还原、复制和维护作业的永久设置。这些
设置将对所有 RMAN 会话有效,除非清除或更改该配置。
使用 Oracle Enterprise Manager
您可使用 “创建备份配置” 向导来设置备份和恢复的缺省值。可通过 “Oracle Enterprise
Manager 控制台” (Oracle Enterprise Manager Console) 来访问该向导。在 “常规” (General)
页上,指定用于备份、恢复和目录维护操作的一组缺省值的名称和说明。在 “通道”
(Channels) 页上,指定是要将该配置用于映像副本还是备份集,并提供该通道的附加说明。
在 “备份参数” (Backup Parameters) 页上,设置备份集的存储参数。
• 配置自动通道:
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT
'/db01/BACKUP/%U';
• 通过指定恢复期实施保留策略:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY
2> WINDOW OF 7 days;
• 通过指定冗余实施保留策略:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
使用 CONFIGURE 命令
配置自动通道
使用 CONFIGURE CHANNEL 命令可指定缺省备份位置和文件命名约定。
配置备份保留策略
使用 CONFIGURE RETENTION POLICY 命令可创建永久和自动的备份保留策略。
RMAN 将根据您用 CONFIGURE 命令指定的标准来确定数据文件和控制文件的备份和副
本何时过期;即,何时介质恢复不再需要使用这些备份和副本。您可发出 REPORT
OBSOLETE 命令查看已过期的文件,并使用 DELETE OBSOLETE 命令将它们删除。发出
CONFIGURE RETENTION POLICY CLEAR 命令可将该设置恢复为缺省值。
可以使用以下两种互斥方法中的任意一种来实施保留策略:
• 指定一个恢复期,该恢复期是从当前时间回溯到可恢复时间点的时间段。在以上示例
中,使用 CONFIGURE 命令可确保对每个数据文件都保留一份早于可恢复点(七天)
的备份。
• 指定一个冗余值,该值指示备份或副本一旦超过某一指定数目,将不再予以保留。
缺省情况下,RETENTION POLICY 配置为 REDUNDANCY 1。
• 配置双重备份集:
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR
2> DEVICE TYPE disk TO 2;
• 配置备份优化:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
• 使用 CLEAR 选项恢复为缺省值:
RMAN> CONFIGURE RETENTION POLICY CLEAR;
RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt CLEAR;
使用 CONFIGURE 命令(续)
配置双重备份集
对于使用自动通道的所有备份命令,可在一个备份集中为每个备份片最多创建四个副本。
这仅适用于数据文件和归档重做日志文件。
配置备份优化
设置备份优化的目的是:如果相同的文件已备份到某一设备类型,BACKUP 命令不再将文
件备份到该设备类型。两个文件相同,指的是其内容必须完全相同。备份优化的缺省值是
OFF。
您可通过使用 BACKUP 命令的 FORCE 选项覆盖备份优化设置。
• 显示永久配置设置
• 使用 SHOW 命令可显示:
– 自动通道配置设置
– 备份保留策略设置
– 要创建的备份副本数
– 备份集大小限制
– 不包括在备份中的表空间
– 备份优化状态
• 使用 SHOW ALL 命令显示所有设置:
RMAN> SHOW ALL;
SHOW 命令
SHOW 命令用于显示使用 CONFIGURE 命令指定的永久配置设置。配置的这些设置将用于
任意 RMAN 会话。
您可使用 SHOW 命令显示下列信息:
• 自动通道配置设置
SHOW CHANNEL;
SHOW DEVICE TYPE;
SHOW DEFAULT DEVICE TYPE;
• RMAN 保留策略配置设置
SHOW RETENTION POLICY;
• 备份副本数
SHOW DATAFILE BACKUP COPIES;
• 备份集的最大大小
SHOW MAXSETSIZE;
• 不包括在整个数据库备份中的表空间
SHOW EXCLUDE;
• 备份优化的状态
SHOW BACKUP OPTIMIZATION;
• 列出备份集和数据文件副本
• 列出指定表空间的备份集和所有数据文件的副本
• 列出指定范围的备份集和包含归档日志的副本
LIST 命令
LIST 命令用于生成详细报告,列出下各项的所有信息:
• 包含指定的一系列数据文件的备份的备份集
• 指定的一系列数据文件的副本
• 包含属于指定表空间列表的任何数据文件的备份的备份集
• 属于指定表空间列表的任何数据文件的副本
• 包含任何具有指定名称或范围的归档日志的备份的备份集
• 任何具有指定名称或范围的归档日志的副本
• 列出数据库中的所有文件的备份:
RMAN> LIST BACKUP OF DATABASE;
• 列出 SYSTEM 表空间中的数据文件的所有副本:
RMAN> LIST COPY OF TABLESPACE “SYSTEM”;
使用 LIST 命令
使用此命令时必须连接至目标数据库。如果在 NOCATALOG 模式下进行连接,则必须装
载数据库。如果使用恢复目录进行连接,则必须启动目标例程(但无需装载)。
列出数据库备份
您可使用此命令生成数据库中所有文件的备份的列表。
列出备份集
上面的示例使用 LIST 命令列出数据文件
“/db01/ORADATA/u03/users01.dbf” 的所有已知备份。
列出数据文件副本
上面的示例使用 LIST 命令列出 SYSTEM 表空间的数据文件副本。
• 生成资料档案库的详细分析
• 生成的报告可以回答以下问题:
– 哪些文件需要备份?
– 哪些备份可以删除?
– 哪些文件不可恢复?
REPORT 命令
该命令有助于更详细地分析 RMAN 资料档案库中的信息。
可以针对各种问题生成报告,例如:
• 该数据库的结构是怎样的?
RMAN> REPORT SCHEMA;
• 哪些文件需要备份?
RMAN> REPORT NEED BACKUP ...;
• 哪些备份可以删除(即已过期)?
RMAN> REPORT OBSOLETE;
• 哪些文件由于不可恢复的操作而不可恢复?
RMAN> REPORT UNRECOVERABLE ...;
• 列出需要备份的所有数据文件
• 假定在还原过程中使用最新的备份
• 提供三个选项
– 增量 (Incremental) REPORT NEED BACKUP incremental 3;
REPORT NEED BACKUP days 3;
– 天数 (Days) REPORT NEED BACKUP redundancy 3;
– 冗余 (Redundancy)
• 如果不使用任何选项,则考虑已配置的保留策略
dbms_backup_restore
dbms_rcvcat dbms_rcvman
恢复
dbms_rcvcat 管理器
dbms_rcvman dbms_rcvman dbms_rcvman
PL/SQL
恢复目录
目标
控制文件
恢复管理器程序包
RMAN 可执行文件使用 PL/SQL 程序包与目标数据库和恢复目录通信。PL/SQL 程序包执
行下列功能:
• 在控制文件或恢复目录中维护 RMAN 资料档案库
• 与 Oracle 和操作系统通信以创建、还原和恢复备份集和映象副本
• 提供一致的界面,以便 RMAN 可执行文件能够将恢复目录或目标数据库控制文件用作
其备份资料档案库,而无需更改任何行为
DBMS_RCVCAT 和 DBMS_RCVMAN
这些是由 CREATE CATALOG 命令创建的内部且未记录的程序包。DBMS_RCVMAN 由脚本
dbmsrman.sql 和 prvtrmns.plb 在目标数据库中创建,而这两个脚本由
catproc.sql 调用。
恢复管理器使用 DBMS_RCVCAT 来维护恢复目录中的信息,使用 DBMS_RCVMAN 来查询
控制文件或恢复目录。
DBMS_BACKUP_RESTORE 程序包
该程序包由脚本 dbmsbkrs.sql 和 prvtbkrs.plb 创建,这两个脚本由
catproc.sql 调用。它用作与 Oracle 和操作系统的接口,以便创建、还原和恢复数据文
件备份以及归档重做日志文件。
• 资源:共享内存、更多进程
• 为用户提供的权限
– 数据库:SYSDBA
– 操作系统:对设备的访问权限
• 远程操作
– 设置口令文件
– 确保口令文件已备份
• 全球化环境变量
• 在 RMAN 命令中使用的时间参数的格式
使用 RMAN 的注意事项
在使用恢复管理器之前,请考虑以下几点:
• 系统的共享资源:RMAN 的大多数工作是通过 Oracle 服务器进程执行的。这些操作也
可以并行进行,以提高吞吐量。这意味着 PROCESSES 参数必须足够高。从 OS 的角
度看,这就意味着应该把共享内存和信号量设置得足够多。
• 执行授权操作的用户组:您必须确定执行授权操作的用户组。您可以相应地设置用户
帐户,使之具备必要的操作系统和 Oracle 数据库权限。
• 要启动和关闭数据库,用户应具有 SYSDBA 权限。
在这一课中,您应该能够掌握:
• 配置 RMAN 环境
• 使用自动通道分配
• 手动分配通道
• 不使用恢复目录连接到 RMAN
• 从 RMAN 资料档案库检索信息
此练习涉及以下主题:
• 在缺省的 NOCATALOG 模式中使用恢复管理器连接到
目标数据库。
• 从目标数据库控制文件获取信息。
• 配置保留策略
• 使用 SHOW 命令显示 RMAN 环境设置
完成这一课的学习后,您应该能达到下列目标:
• 描述用户管理的备份和恢复操作
• 论述与只读表空间相关的备份问题
• 执行关闭的数据库的备份
• 执行打开的数据库的备份
• 备份控制文件
• 在联机备份失败后执行清除
• 使用 DBVERIFY 实用程序检测损坏
• 整体数据库备份
– 目标数据库可能是打开的,也可能是关闭的
– 备份所有数据文件和控制文件
• 部分数据库备份
– 表空间
– 数据文件
– 控制文件
• 一致备份
• 不一致备份
备份术语
整体数据库备份
整体数据库备份(也称为整体备份)是指对数据库的所有数据文件和控制文件
进行备份。无论数据库是打开的还是关闭的,都可以执行整体备份。这是最常
见的备份方法。
在数据库关闭(使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 选项关
闭数据库)后进行的整体备份称为一致备份。在这种备份中,所有数据库文件
的标头均与控制文件一致,完全还原后,数据库不需任何恢复即可打开。数据
库以 NOARCHIVELOG 模式进行操作时,只有一致的整体数据库备份才可以
用来还原和恢复。
如果数据库打开并且可操作,数据文件的标头将与控制文件不一致,除非数据
库是以只读模式打开的。如果使用 ABORT 选项关闭数据库,这种不一致性将
一直存在。这种状态下的数据库备份称为不一致备份。不一致备份需要通过恢
复才能使数据库进入一致状态。如果数据库需要每周 7 天、每天 24 小时都可
用,则只能使用不一致备份,并且只能对以 ARCHIVELOG 模式运行的数据库
执行不一致备份。
Oracle9i 数据库管理基础 II 10-3
备份术语(续)
表空间备份
表空间备份 是对组成表空间的数据文件进行的备份。只有当数据库处在
ARCHIVELOG 模式下时表空间备份才有效,因为要使数据文件与数据库的其
它部分保持一致,需要使用重做条目。在 NOARCHIVELOG 模式下,如果数据
库为只读的或脱机正常的,您可以进行表空间备份。
数据文件备份
如果数据库处在 ARCHIVELOG 模式下,您可以对单个数据文件进行备份。在
NOARCHIVELOG 模式下,您可以对只读或脱机正常的数据文件进行备份。
控制文件备份
您可以对 RMAN 进行配置,使之在发出 BACKUP 或 COPY 命令后自动备份控
制文件。还可以通过 SQL 命令备份控制文件。
• 文件是使用操作系统命令进行备份的
• 备份是使用操作系统命令进行还原的
• 恢复是使用 SQL 和 SQL*Plus 命令完成的
用户管理的备份和恢复
用户管理的备份和恢复不使用恢复管理器 (Recovery Manager),而是使用操作
系统命令来进行数据库文件的备份并在恢复时还原这些备份。恢复命令在
SQL*Plus 会话中发出。
Oracle 建议将 RMAN 用于所有备份和恢复操作,但也支持用户管理的备份和
恢复方法。
V$DATAFILE
V$CONTROLFILE
V$LOGFILE
DBA_DATA_FILES
查询动态视图
在开始备份之前,您应该通过查询 V$DATAFILE、V$CONTROLFILE、
V$LOGFILE 和 V$TABLESPACE 视图来获得有关数据库文件的信息。
示例
使用 V$DATAFILE 视图获得所有数据文件的名称和状态列表。
SQL> SELECT name, status FROM v$datafile;
NAME STATUS
------------------------------------------- ------
/databases/db01/ORADATA/u01/system01.dbf SYSTEM
/databases/db01/ORADATA/u02/undotbs.dbf ONLINE
/databases/db01/ORADATA/u04/users01.dbf ONLINE
/databases/db01/ORADATA/u03/indx01.dbf ONLINE
/databases/db01/ORADATA/u02/sample01.dbf ONLINE
/databases/db01/ORADATA/u01/querydata01.dbf ONLINE
关闭的数据库 关闭或打开的数据库
NOARCHIVELOG ARCHIVELOG
模式 模式
物理备份
评估备份方法
通过选择最恰当的备份方法以最大限度地进行数据恢复,可以保护数据不因介
质故障而丢失。用户管理的数据库备份是在数据库打开或关闭时对数据库文件
进行的操作系统备份。
物理备份方法
• 不归档的操作系统备份,用于在发生介质故障后恢复到上次备份的点。
• 归档的操作系统备份,用于在发生介质故障后恢复到故障点。
联机或脱机存储
一致的整体数据库备份
一致的整体数据库备份(也称为关闭的数据库的备份)是在数据库关闭的情况
下对构成 Oracle 数据库的所有数据文件和控制文件进行的备份。它还可以包
括对联机重做日志文件、参数文件和口令文件的备份。
采用用户管理的备份操作时,您应该定义一个操作系统备份过程,然后一直用
它来备份 Oracle 数据文件、控制文件、参数文件和口令文件,这是为了防止
潜在的介质故障破坏这些文件而采取的策略的一部分。
确保记下这些文件的完整路径名并在备份时正确使用。在多个数据库的环境
中,由于参数文件和口令文件的名称并不记录在字典中,所以必须小心地通过
某一命名约定将这些文件与相应的数据库关联起来。
注:如果使用 “正常”、“事务处理” 或 “立即” 选项彻底地关闭了数据库,则不
必在整体数据库备份中包含联机重做日志文件。但是,在需要还原整个数据库
的情况下,如果已备份了联机重做日志文件,还原过程将得以简化。
• 概念上简明易懂
• 易于执行
• 几乎不需要交互操作
进行一致的整体数据库备份的优点
• 一致的整体数据库备份在概念上简明易懂,您只需:
– 关闭数据库
– 将所有需要的文件复制到备份位置
– 打开数据库
• 要执行关闭的数据库的备份,只需使用数量极少的几个命令。
• 只要执行一个简单的脚本,而且只需很少的交互操作,就可以自动执行关
闭的数据库的备份,步骤如下:
– 关闭数据库
– 复制控制文件和数据文件
– 打开数据库
• 所有在关闭的数据库的备份过程中复制的文件都具有一致的时间点。在备
份过程中,由于数据库不可用,因此不发生任何事务处理。
2
SHUTDOWN IMMEDIATE
3
HOST cp <files> /backup/
1
STARTUP OPEN
4
执行一致的整体数据库备份
在 Oracle 服务器例程关闭时执行一致的整体数据库备份。
1. 编译要备份的所有相关文件的最新列表。
2. 使用 SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE 或 SHUTDOWN
TRANSACTIONAL 命令关闭 Oracle 例程。
3. 使用操作系统备份实用程序备份所有数据文件和控制文件。您还可以备
份重做日志文件,尽管这不是必需的。您还应该备份参数文件和口令文
件。
4. 重新启动 Oracle 例程。
数据文件 控制文件
联机重做
归档重做日志文件 日志文件
口令文件 参数文件
打开的数据库的备份
如果业务性质不允许关闭数据库来执行备份,您可以使用以下方法在使用数据
库的同时对数据库执行备份:
• 执行所有表空间或各个数据文件的备份(无论它们处在联机状态还是脱机
状态)。
• 将控制文件备份为一个二进制文件,或创建一个脚本以重新创建控制文件。
联机重做日志文件不需要备份。
• 保持较高的数据库可用性
• 可以在表空间级或数据文件级进行备份
• 支持业务活动不中断
进行打开的数据库的备份的优点
• 在备份过程中数据库可以正常使用。
• 可以在表空间级(通过 RMAN)或数据文件级执行备份。
• 支持每天都全天候运作的业务。
进行打开的数据库的备份的注意事项
• 需要对 DBA 进行更多的培训。
• 如果执行打开的数据库的备份,推荐使用经测试的自动执行脚本。
LGWR
ARCHIVELOG 模式
052 051 ARC0
054 053
051
052 051 051
054 053 052
052
053
053
联机重做日志文件 归档重做日志文件
对打开的数据库执行备份的条件
只要符合以下两个标准,您就可以在使用数据库的同时,执行表空间或各个数
据文件的备份:
• 数据库设置为 ARCHIVELOG 模式。
• 通过启用 Oracle 自动归档 (ARCn) 进程或手动归档重做日志文件,确保联
机重做日志得到归档。
表空间备份 数据文件备份
对打开的数据库执行备份时的选项
使用 Oracle 服务器,您既可以备份某一特定表空间的所有数据文件,也可以
只备份某个表空间的一个数据文件。无论您选择哪个选项,在备份过程中,数
据库都可以保持正常使用(事务处理)。
如果一个数据文件处于备份模式,则可能会生成多个重做日志条目,因为日志
写入器将备份模式下的数据文件中已更改的块的块映像写入重做日志,而不仅
仅是写入行信息。
这会对重做日志的大小和日志写入器的性能产生重大影响。
如何执行联机表空间备份
1. 通过发出 ALTER TABLESPACE...BEGIN BACKUP 命令,将数据文件
或表空 间设置为备份模式。这样可避免数据文件头中的序列号发生变
化,以便恢复时可 以从备份开始时间应用日志。即使数据文件处于备
份模式,仍可用于正常事务处 理。
SQL> ALTER TABLESPACE users BEGIN BACKUP;
2. 使用操作系统备份实用程序将表空间中的所有数据文件复制到备份存储
中。如果 按顺序备份每个表空间,备份文件中的日志序列号可能不
同。
UNIX:
cp /ORADATA/u03/users01.dbf /BACKUP/users01.dbf
Windows NT:
ocopy c:\users\disk1\user01.ora
e:\users\backup\user01.ora
如何执行联机表空间备份(续)
3. 备份表空间的各数据文件后,发出下面的命令将它们设置为正常模式:
动态视图
V$BACKUP
V$DATAFILE_HEADER
动态视图
通过查询 V$BACKUP 和 V$DATAFILE_HEADER 视图,可以在执行打开的数
据库的备份时获得关于数据文件状态的信息。
V$BACKUP 视图
查询 V$BACKUP 视图以确定哪些文件处于备份模式。发出 ALTER
TABLESPACE BEGIN BACKUP 命令后,状态将更改为 ACTIVE。
SQL> SELECT * FROM v$backup;
FILE# STATUS CHANGE# TIME
----- ---------- ------- ---------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 ACTIVE 312905 05-APR-01
…
数据库
联机表空间备份过程中出现故障
在联机表空间备份的过程中,可能会发生系统崩溃、电源故障、数据库关闭等
故障。一旦发生任何这些故障:
• 如果操作系统未完成备份,则备份文件将不可用。您需要重新备份这些文
件。
• 处在联机备份模式下的数据库文件不会与数据库同步,原因是备份开始时
标头被冻结。
• 数据库将不会打开,因为 Oracle 服务器认为文件已从备份中还原。
您可以使用 ALTER DATABASE …END BACKUP 命令使数据文件脱离备份模
式。只有在您确定这些文件处于备份模式、且未从备份中还原的情况下,才可
使用此命令。
• 查询 V$BACKUP 以检查备份状态
• 发出 ALTER DATABASE 命令更改状态并取消冻结标头:
ALTER DATABASE DATAFILE ‘<filename>’ END
BACKUP;
• 或在 Oracle9i 中使用以下命令:
ALTER DATABASE END BACKUP;
联机表空间备份过程中出现故障(续)
如果您不能确定某一文件是否需要恢复,或者该文件是否仍处于联机备份模
式,可查询 V$BACKUP 视图:
SQL> SELECT * FROM v$backup;
FILE# STATUS CHANGE# TIME
----- ---------- -------- ---------
1 NOT ACTIVE 0
2 ACTIVE 228596 30-NOV-01
3 NOT ACTIVE 0
4 NOT ACTIVE 0
该输出说明号码为 2 的文件当前处于联机备份模式。要取消对标头的冻结,可
发出以下命令:
SQL> ALTER DATABASE datafile 2 END BACKUP;
Database altered.
2
3
文件 1
备份副本 SCN 1 Query_Data
SCN 1 文件 1
用户文件 1
4 SCN 2
DBW0
用户文件 2
SCN 2
只读表空间操作
图例号 说明
3 使表空间成为只读状态之后,您必须备份该表空间的所有数据
文件。
4 DBW0 进程只写入其表空间处于读写模式的数据文件,正常
的
检查点也只对这些文件执行。
• 在将表空间更改为只读后,只需要一个备份。
• 在使表空间成为读写状态之后,应恢复按照正常备份
日程对该表空间进行备份。
• 控制文件必须能正确标识处在只读模式下的表空间;
否则,您必须恢复该表空间。
对只读表空间的说明
• 由于不对只读表空间的数据文件执行任何写操作,因此,只有在这些文件
损坏的情况下才必须进行恢复。
• 将表空间从只读状态更改为读写状态,其结果是导致 DBW0 写入表空间文
件,并象通常一样产生检查点。这样,您就必须对与该表空间相关联的所
有数据文件重新使用正常备份时间表。
• 使用 ALTER TABLESPACE 命令将表空间更改为只读状态,会导致控制文
件更新。执行恢复操作时,控制文件必须能够正确地标识只读表空间;否
则,您必须恢复该表空间。
记录 不记录
所有更改记录到重做日志中 重做日志只记录最少量内容
可从上一次备份完全恢复 不可从上一次备份恢复
无其它备份 可能需要其它备份
与记录和不记录选项相关的备份问题
使用直接装载操作时,表空间、表、索引或分区可能被设置为 NOLOGGING
模式,以便更快地加载数据。为直接装载操作设置 “不记录” (Nologging) 选项
后,插入语句将不记录到重做日志文件中。
由于当表处在 NOLOGGING 模式时,重做日志不包含插入的值,因此,应在
直接装载操作完成后立即对与表或分区有关的数据文件进行备份。
• 创建二进制映像
ALTER DATABASE BACKUP CONTROLFILE TO
‘control1.bkp`;
• 创建文本跟踪文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
手动备份控制文件
如果您不使用 RMAN 进行备份,就必须手动备份控制文件。您必须防止丢失
控制文件,因为例程启动时需要使用控制文件中的信息。
Oracle 服务器在进行例程或介质恢复时会用到控制文件中的某些状态信息(如
当前联机重做日志文件以及数据库文件的名称)。每次对数据库配置进行更改
后,您都需要保留控制文件的最新副本。
原则
• 对控制文件进行多元备份,并使用 CONTROL_FILES 参数在 init.ora 文件
中为它们命名。
• ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令创建一个用
于重新创建控制文件的脚本。该文件位于由初始化参数
USER_DUMP_DEST 指定的目录下。此脚本不包含 RMAN 元数据。
• 此外,还应使用 ALTER DATABASE BACKUP CONTROLFILE 命令来备份
各个控制文件。这样可以提供控制文件在该时间点的二进制副本。
• 完全备份时,正常关闭例程,然后使用操作系统备份实用程序将控制文件
复制到备份存储中。 Oracle9i 数据库管理基础 II 10-29
手动备份控制文件(续)
以下命令更改数据库配置并导致控制文件更改:
• ALTER DATABASE [ADD | DROP] LOGFILE
• ALTER DATABASE [ADD | DROP] LOGFILE MEMBER
• ALTER DATABASE [ADD | DROP ] LOGFILE GROUP
• ALTER DATABASE [ NOARCHIVELOG | ARCHIVELOG ]
• ALTER DATABASE RENAME FILE
• CREATE TABLESPACE
• ALTER TABLESPACE [ADD | RENAME ] DATAFILE
• ALTER TABLESPACE [READ WRITE | READ ONLY ]
• DROP TABLESPACE
注:发出上述任一命令后,都需要备份控制文件。
备份服务器初始化参数文件
您可以使用 CREATE PFILE 语句来创建服务器参数文件的备份。服务器参数
文件的内容以文本格式导出到一个初始化参数文件中。
CREATE PFILE 命令可以在缺省位置创建该文件,您也可以按本幻灯片中第
二个示例指定文件名。
4
DBVERIFY
错误报告
1 2 3
联机 脱机
联机
数据文件
使用 DBVERIFY 实用程序验证备份
使用 DBVERIFY 实用程序可以验证数据文件,具体方法是检查指定数据文件
中的数据块结构的完整性。这是数据库之外的实用程序,因此它对数据库活动
的影响最小。
步骤 说明
1 该实用程序可用于验证联机数据文件。
2 您可以对数据文件的局部调用该实用程序。
3 该实用程序可用于验证脱机数据文件。
4 您可以将该实用程序的输出指向错误日志。
运行 DBVERIFY
DBVERIFY 实用程序的可执行程序名称在不同操作系统中是不同的。它位于
Oracle 主目录的 bin 目录中。在 UNIX 环境中,应执行 dbv 可执行程序。
Oracle9i 数据库管理基础 II 10-32
DBVERIFY 命令行界面
• 外部命令行实用程序
• 用于确保备份数据库或数据文件在还原之前是有效的
• 遇到数据损坏问题时可作为有用的诊断辅助工具
DBVERIFY 命令行界面
您可以使用命令行界面来调用 DBVERIFY 实用程序。该实用程序主要用于以
下两个目的:确保备份数据库(或数据文件)在还原之前是有效的;遇到数据
损坏问题时用作诊断辅助工具。
示例
要验证数据文件 users01.dbf 的完整性(从块 1 开始到块 500 结束),您可以
执行如下命令:
$ dbv file=/ORADATA/u03/users01.dbf start=1 end=500
注:DBVERIFY 的名称和位置取决于您的操作系统。有关您的系统的
DBVERIFY 位置的信息,请参阅针对特定操作系统的 Oracle 文档。
在这一课中,您应该能够掌握:
• 确定哪些文件需要备份以及应在何时进行备份
• 进行用户管理的备份
• 备份控制文件
• 备份服务器初始化参数文件
• 结束由于例程故障而未完成的联机备份
• 使用动态视图确定备份操作的状态
• 使用 DBVERIFY 验证备份
此练习涉及以下主题:
• 执行完全脱机数据库备份
• 执行表空间数据文件的联机备份
• 创建控制文件的跟踪文件
完成这一课的学习后,您应该能达到下列目标:
• 确定 RMAN 特定的备份类型
• 使用 RMAN BACKUP 命令创建备份集
• 备份控制文件
• 备份归档重做日志文件
• 使用 RMAN COPY 命令创建映像副本
• 恢复管理器备份是由服务器管理的备份
• 恢复管理器使用 Oracle 服务器会话执行备份操作
• 可以备份整个数据库、表空间中的所有数据文件、选定
的数据文件、控制文件、归档重做日志文件
• 关闭的数据库的备份
– 目标数据库必须已装载(不得打开)
– 包括数据文件、控制文件、归档重做日志文件
• 打开的数据库的备份
– 不应将表空间置于备份模式
– 包括数据文件、控制文件、归档重做日志文件
恢复管理器备份的类型
恢复管理器提供对以下内容进行备份的功能:
• 整个数据库、表空间中的每个数据文件或单个数据文件
• 控制文件
• 所有归档日志或所选归档日志
注:使用恢复管理器时不备份联机重做日志文件。
关闭的数据库的备份
关闭的数据库的备份定义为在数据库关闭(脱机)时进行的备份。这与一致数据库备份相
同。如果执行关闭的数据库的备份,则不得打开目标数据库。如果使用恢复目录,则必须
打开恢复目录数据库。
打开的数据库的备份
打开的数据库的备份定义为在数据库打开(联机)时对数据库任意部分进行的备份。恢复
管理器使用服务器进程制作数据文件、控制文件或归档日志的副本。使用恢复管理器时,
不要使用 ALTER TABLESPACE ... BEGIN BACKUP 命令将表空间置于备份模式。
RMAN 读取块,直到获得一致读取为止。
归档日志 归档日志
文件 归档日志的副本
文件
备份集
数据文件 数据文件
1 4 数据文件 数据文件 控制文件
1 3
数据文件 控制文件
数据文件 数据文件
2
2 4
数据文件
3 备份集 1 备份集 2 备份集 3
恢复管理器备份
可以使用恢复管理器执行以下类型的备份:
• 映像副本是数据文件、控制文件或归档重做日志文件的副本。可以使用恢复管理器或
操作系统实用程序制作相应的副本。数据文件的映像副本包含所有的数据文件块,其
中包括未使用过的块。映像副本只能包含一个文件,而且不能对单个复制操作进行多
元备份。
• 备份集可以包含一个或多个数据文件、控制文件或归档重做日志文件。备份集可以包
含一个或多个文件。可以使用两种完全不同的方法制作备份集:
– 完全备份:在完全备份中,可以备份一个或多个文件。在完全备份中,所有包含
指定文件数据的数据块都会被备份。
– 增量备份:增量备份只对上次增量备份以后数据块有更改的数据文件进行备份。
增量备份需要一个基础级别(即增量级别 0)备份,该备份包含指定文件数据的
所有块。增量级别 0 和完全备份均复制数据文件中的所有块,但是在增量备份策
略中不能使用完全备份。
注:您可以配置自动备份控制文件,在执行 BACKUP 或 COPY 命令后即可自动备份控制文
件。
数据文件
3 备份集 1 备份集 2 备份集 3
备份集
备份集包含一个或多个物理文件(以 RMAN 特定的格式存储在磁盘或磁带上)。可以制
作包含数据文件、控制文件以及归档重做日志文件的备份集。也可以对备份集进行备份。
备份集有两种类型:
• 数据文件:可以包含数据文件和控制文件,但不包含归档日志
• 归档日志:仅包含归档日志,不能包含数据文件或控制文件
注: 在执行恢复之前,可能需要通过恢复管理器还原备份集,这与磁盘上的映像副本不
同。
数据文件备份集中的控制文件
备份集中的每个文件必须具有相同的 Oracle 块大小。如果包含控制文件,就会将它写入
到最后一个数据文件备份集中。可以使用以下两种方式将控制文件包含在备份集中:
• 使用 INCLUDE CONTROL FILE 语法显式包含
• 通过备份文件 1(系统数据文件)隐式包含
RMAN BACKUP 命令用于备份数据文件、归档重做日志文件以及控制文件。BACKUP 命令
将文件备份到磁盘或磁带上的一个或多个备份集中。在数据库打开或关闭时,都可以制作
备份。制作类型既可以是完全备份,也可以是增量备份。
备份集的特性
备份集是一种逻辑结构,它具有以下特性:
• 备份集包含一个或多个称作备份片的物理文件。
• 备份集是使用 BACKUP 命令创建的。FILESPERSET 参数可以控制备份集中包含的数
据文件个数。
• 可以将备份集写入磁盘或磁带。缺省情况下,Oracle 为大多数平台提供一个磁带输
出,称为 SBT(系统备份到磁带),当使用介质管理器时,备份将输出到磁带设备中。
• 在执行恢复之前必须通过还原操作从备份集中提取文件。
• 归档重做日志文件备份集不能是增量备份(缺省为完全备份)。
• 备份集不包含从未使用过的数据块。
• 备份片是备份集中的一个文件。
• 备份片可以包含来自多个数据文件的数据块。
备份集 1(逻辑) 片1
片 1(文件) 片 2(文件) 服务器
进程
数据文件 数据文件 数据文件 (通道)
1 4 5 MML 片 2
集1
备份集 2(逻辑)
片 1(文件) 服务器
进程
数据文件 数据文件 数据文件 (通道)
2 3 9 MML 集2
备份片
逻辑备份集通常只包含一个备份片。备份片是一个包含一个或多个 Oracle 数据文件或归
档日志的物理文件。
对于大型数据库,一个备份集可能超出单个磁带盘、物理磁盘或操作系统文件的最大容量。
可以使用 CONFIGURE CHANNEL 或 ALLOCATE CHANNEL 命令及 MAXPIECESIZE 选项
来限制每个备份集片的大小。
可以按如下方式限制备份片的大小:
RMAN> RUN {
2> ALLOCATE CHANNEL t1 TYPE 'SBT'
3> MAXPIECESIZE = 4G;
4> BACKUP
5> FORMAT 'df_%t_%s_%p' FILESPERSET 3
6> (tablespace users); }
备份片大小
可以使用以下命令限制备份片的大小,并根据需要为每个备份集生成多个片:
ALLOCATE CHANNEL … MAXPIECESIZE = integer
CONFIGURE CHANNEL … MAXPIECESIZE = integer
以字节、千字节 (K)、兆字节 (M) 或千兆字节 (G) 来指定大小。
示例(幻灯片)
• 情况:需要将 USER_DATA 表空间备份到一台磁带机上。磁带机的最大文件大小是 4
GB。
• 结果:如果输出文件小于 4 GB,则只有一个备份片写入该备份集。如果输出文件大于
4 GB,则有多个备份片写入该备份集。每个备份片都包含分散在三个文件中的块。
注:在 Oracle8i 中,需要使用以下命令:
SET LIMIT CHANNEL t1 KBYTES 4194304;
RMAN> BACKUP
2> FORMAT '/BACKUP/df_%d_%s_%p.bus'
3> DATABASE filesperset = 2;
数据文件
3 备份集 1 备份集 2 备份集 3
BACKUP 命令
可以控制 Oracle 生成的备份集数以及恢复管理器在单个备份集中放置的输入文件数。如
果在读取文件或写入备份片时出现 I/O 错误,该作业就会中止。
在使用 BACKUP 命令时,必须执行以下操作:
• 装载或打开目标数据库。如果数据库处于 ARCHIVELOG 模式,恢复管理器允许您制
作不一致备份,但您必须应用重做日志,使备份在恢复操作中使用时保持一致。
• 如果未使用自动通道分配,则手动分配一个通道用以执行 BACKUP 命令。
或者,可以执行下列操作:
• 指定备份片的命名约定。如果没有指定 FORMAT 参数,则 RMAN 将备份片存储在端
口特定的目录中(在 UNIX 上为 $ORACLE_HOME/dbs)。如果没有指定文件名格
式,则 RMAN 缺省使用 %U。
• 通过使用 INCLUDE CURRENT CONTROLFILE 选项,可以将控制文件包含在备份集中。
选项 重要性
full 服务器会话将所有块都复制到备份集中,只跳过从未使用过的数据文
件块。在备份归档重做日志或控制文件时,服务器会话不会跳过任何
块。完全备份不是增量备份。
skip 指定该参数可将某些数据文件或归档重做日志排除在备份集之外。该
参数具有以下选项:
offline:将脱机数据文件排除在备份集之外。
readonly:排除属于只读表空间的数据文件。
inaccessible:排除由于 I/O 错误而无法读取的数据文件或归档重
做日志。
diskratio 指示恢复管理器仅将数据文件分配给分布在指定数量驱动器上的备份
integer 集。当数据文件以带状分布或位于不同磁盘轴上时,此参数对数据文
件备份非常有用。
delete 在成功创建备份集后删除输入文件。仅当备份归档重做日志、数据文
input 件副本或备份集时才指定该选项。它相当于对所有输入文件执行
CHANGE . . . DELETE 命令。
选项 重要性
include
current 创建当前控制文件的快照并将其放置在该子句生成的各备份集中。
controlfile
Format 输出名称的格式。可以单独使用或组合使用格式参数。
%c
指定一组双重备份片中备份片的副本数。
%p 指定备份集中的备份片数。对于各备份片,该值从 1 开始并且每创建一
个备份片,该值就增加 1。
%s 指定备份集数。该值是控制文件中的计数器,随着备份集的增加而增加。
%d 指定数据库名。
%n 指定数据库名,如果总长度未达到 8 个字符,则在右侧填补 x 个字符。
%t 指定备份集时间戳,它是由自某一固定参考时间开始经过的秒数生成的
4 字节值。联合使用 %s 和 %t 可以形成备份集的唯一名称。
%u 指定一个由 8 个字符组成的名称,该名称由该备份集号和创建该备份集
的时间的缩写形式构成。
%U 指定 %u_%p_%c 的简写方式,它将保证所生成的备份文件名的唯一性。
如果不指定格式,恢复管理器将缺省使用 %U。
将两个或多个数据文件多元备份到一个备份集中,以进行磁
带流式处理。
filesperset = 3
备份集
数据文件 数据文件
1 1,2,3,1,2,3…
服务器
数据文件 进程
2 (通道)
MML 磁带
数据文件
3
RMAN 多元备份集
借助 RMAN 多元备份技术可同时读取磁盘上的文件,然后将这些文件写入同一个备份片。
在将多个文件写入同一备份文件或备份片时,恢复管理器自动将文件分配给通道、对这些
文件进行多元备份,并且跳过所有未使用过的块。为了同时备份足够多数量的文件,可以
对高性能顺序输出设备(如快速磁带机)进行流式处理。这对于必须与其它联机系统资源
竞争的备份来说是很重要的。操作员或存储子系统负责更换磁带机所在目标数据库上的磁
带。该进程是为写入磁带设计的,但也可以将它用于写入磁盘。
多元备份是由以下参数控制的:
• BACKUP 命令的 FILESPERSET 参数
• ALLOCATE CHANNEL 和 CONFIGURE CHANNEL 命令的 MAXOPENFILES 参数
示例
数据库包含三个数据文件,可以将这些数据文件一起多元备份到一个物理文件(集)中,
并存储在磁带上。数据文件是通过以下方式进行多元备份的:依次写入数据文件 1、数据
文件 2、数据文件 3 的各 n 个块,然后又回到数据文件 1 继续写,如此循环反复直至所有
文件备份完毕。
分配多个通道,指定 filesperset(可选)以及包含多个
文件。
备份集 1 服务器
进程
数据文件 数据文件 数据文 (通道)
1 4 件5 集1
MML
备份集 2
服务器
数据文件 数据文件 数据文件 进程
2 3 9 (通道)
集2
MML
备份集 3
服务器
数据文件 数据文件 数据文件 进程
6 7 8 (通道) 集3
MML
备份集的并行化
可以将 CONFIGURE 命令的 PARALLELISM 选项设置为大于 1 或者手动分配多个通道来配
置并行备份,RMAN 并行地执行其操作,并且并行地写入多个备份集。服务器会话负责
分摊指定文件的备份工作。
示例
RMAN> run {
2> allocate channel c1 type sbt;
3> allocate channel c2 type sbt;
4> allocate channel c3 type sbt;
5> backup
6> incremental level = 0
7> format '/disk1/backup/df_%d_%s_%p.bak‘
8> (datafile 1,4,5 channel c1 tag=DF1)
9> (datafile 2,3,9 channel c2 tag=DF2)
10> (datafile 6,7,8 channel c3 tag=DF3);
11> alter system archive log current;
12> }
数据文件 数据文件
数据文件 1 1
1
数据文件 数据文件
数据文件 2 2
2
备份 1 备份 2
备份集
双重备份集
通过对备份集进行双重备份,可以给每个备份片最多创建 4 个完全相同的副本。
可以使用以下命令生成双重备份的备份集:
• BACKUP COPIES
• SET BACKUP COPIES
• CONFIGURE … BACKUP COPIES
RMAN 并不生成多个备份集,而是给集内的每个备份片生成完全相同的副本。
示例
此示例显示如何给数据文件 1 和 2 的备份创建两个副本:
RMAN> BACKUP COPIES 2 DATAFILE 1, DATAFILE 2
2> FORMAT '/BACKUP1/%U','/BACKUP2/%U';
RMAN 将每个备份片的第一个副本放入 /BACKUP1,而将第二个副本放入 /BACKUP2。
RMAN 使用唯一键生成一个备份集,并给集内的每个备份片生成两个完全相同的副本。
数据文件 数据文件
1 1
数据文件 数据文件
2 2
备份集 备份集
备份备份集
另一种管理备份的方法就是对备份集进行备份。可以使用 RMAN BACKUP BACKUPSET
命令进行磁盘到磁盘以及磁盘到磁带的备份。这可用于在磁带上制作额外的备份,或者将
备份从磁盘移到磁带上。
• 自动切换联机重做日志文件。
• 执行归档日志故障转移。
归档重做日志文件的备份
在开始执行每个不包含 UNTIL 子句或 SEQUENCE 参数的 BACKUP ... ARCHIVELOG 命
令时,RMAN 会尝试自动切换并归档当前的联机重做日志。
在 Oracle9i 中,RMAN 执行归档日志故障转移。如果在归档重做日志文件中检测到任何
损坏的块,RMAN 就会在其它归档目标中搜索没有损坏块的文件。
• 仅包含归档重做日志文件
• 始终是完全备份
RMAN> BACKUP
2> FORMAT '/disk1/backup/ar_%t_%s_%p'
3> ARCHIVELOG ALL DELETE ALL INPUT;
归档重做日志文件的备份集
DBA 经常遇到的一个问题是:在备份归档日志之前,不知道是否已将其完全复制到归档
日志目标中。恢复管理器可以访问控制文件或恢复目录信息,所以它知道哪些日志已经归
档,可以在恢复过程中还原。
可以使用 BACKUP ARCHIVELOG 命令备份归档重做日志文件,或者在备份数据文件和控
制文件时使用 BACKUP … PLUS ARCHIVELOG 命令也同时备份这些日志文件。
归档日志备份集的特性
• 仅包含归档日志,不能包含数据文件或控制文件。
• 始终是完全备份。(因为可以指定要备份的归档日志的范围,所以无法执行增量备
份。)
示例(幻灯片)
本示例将所有的归档重做日志备份到一个备份集中,其中每个备份片包含 3 个归档日志。
在归档日志复制完毕后,将这些日志从磁盘上删除,并在 V$ARCHIVED_LOG 视图中将它
们标记为已删除。
• 必须已装载或打开数据库。
• 不支持联机重做日志备份。
• 在 NOARCHIVELOG 模式下只能使用 “干净的” 备份。
• 在 ARCHIVELOG 模式下只能使用 “当前的” 数据文件备
份。
备份约束
在使用恢复管理器执行备份时,必须注意以下几点:
• 恢复管理器要连接的目标数据库必须已装载。
• 不支持对联机重做日志进行备份。
• 如果目标数据库处于 NOARCHIVELOG 模式,则只能采用 “干净的” 表空间和数据文
件备份(即 “脱机正常” 或 “只读” 表空间的备份)。要采用数据库备份,必须先彻底
关闭该数据库,再以 “装载” 模式重新启动它。
• 如果目标数据库处于 ARCHIVELOG 模式,则只能备份 “当前的” 数据文件(通过恢复
将数据文件还原为当前状态)。
• 如果使用恢复目录,则必须打开恢复目录数据库。
映像副本
映像副本包含单个数据文件、归档重做日志文件或控制文件。可以使用 RMAN COPY 命
令或操作系统命令创建映像副本。
当使用 RMAN COPY 命令创建映像副本时,服务器会话验证文件中的块,并将副本记录
到控制文件中。
• 只能写入磁盘
• 可立即用于恢复;不需要进行还原
• 是单个数据文件、归档日志或控制文件的物理副本
• 与操作系统备份最为相似(包含所有块)
• 可以是增量策略的一部分
映像副本的特性
映像副本具有以下特性:
• 只能将映像副本写入磁盘。因而,要在磁盘上保留该副本,则需要额外的磁盘空间。
对于大文件,复制花费的时间很长,但还原时间大大减少,这是由于该副本已经存在
于磁盘上的缘故。
• 如果文件存储在磁盘上,则可以立即使用这些文件(也就是说,这些文件不需要从其
它介质还原)。这为在恢复管理器中使用 SWITCH 命令进行恢复提供了一种快速方
法,它相当于 ALTER DATABASE RENAME FILE SQL 语句。
• 映像副本中将包含所有的块(不管这些块是否包含数据),原因是 Oracle 服务器进程
在复制该文件的同时还会执行其它操作,如检查损坏的块、在控制文件中注册该副本
等。要加快复制进程,可以使用 NOCHECKSUM 参数。
• 映像副本可以是完全备份或增量 0 级备份的一部分,原因是文件副本总是包含所有块。
如果该副本将与增量备份集一同使用,则使用 0 级选项。
• 在增量备份策略中,可以将映像副本指定为 0 级备份,但映像副本不能作为其它级别
的备份。
归档日 归档日
志文件 志文件 归档日志的副本
RMAN> COPY
2> DATAFILE '/ORADATA/users_01_db01.dbf' TO
3> '/BACKUP/users01.dbf' tag=DF3,
4> ARCHIVELOG 'arch_1060.arc' TO
5> 'arch_1060.bak';
映像副本
使用 RMAN COPY 命令可以创建文件的映像副本。输出文件始终写入磁盘。可以复制数
据文件、归档重做日志文件或控制文件。在很多情况下,复制数据文件比备份这些文件更
有益处,原因是复制的数据文件输出不需要任何其它处理就可以使用。
如果要使用 COPY 命令备份整个数据库,必须使用单独的 COPY 语句复制每个数据文件。
也可以制作控制文件和归档重做日志文件的副本。
幻灯片中的示例假定您使用的是自动通道分配。如果手动分配通道,则在 RUN 语句中包
含 COPY 命令(如下所示):
RMAN > RUN {
2> ALLOCATE CHANNEL c1 type disk;
3> COPY
4> DATAFILE '/ORADATA/users_01_db01.dbf' to
5> '/BACKUP/users01.dbf' tag=DF3,
6> ARCHIVELOG 'arch_1060.arc' to
7> 'arch_1060.bak';}
RMAN> COPY
2> DATAFILE 3 TO '/BACKUP/file3.dbf',
3> DATAFILE 1 TO '/BACKUP/file1.dbf';
数据文件
1 数据文件 控制 重做日志
1 文件 文件 1
映像副本
数据文件 重做日志
2 文件 2
数据文件
3 数据文件
3 数据库
映像副本
COPY 命令
在复制操作中,Oracle 服务器进程对每个块执行校验和计算以检测是否有块损坏。RMAN
在还原副本时也要核对校验和。该过程称为物理损坏检测。可以使用 NOCHECKSUM 选项
取消校验和操作,从而加快复制进程。如果数据库已在维护块校验和,则此选项无效。
可以使用 CHECK LOGICAL 选项测试通过了物理损坏检查的数据和索引块,查看它们是
否存在逻辑损坏,如行片或索引条目损坏。如果检测到任何块存在逻辑损坏,则将该块记
录到服务器进程的警报日志和跟踪文件中。
可以使用 MAXCORRUPT 参数设置逻辑和物理损坏的阈值。只要在某个文件中检测到的逻
辑和物理损坏总和低于该值,则 RMAN 命令完成,同时 Oracle 将损坏块的范围植入到
V$COPY_CORRUPTION 视图。如果超出 MAXCORRUPT,则该命令终止,并且不植入视图。
一个 COPY 命令,带有多个通道
RMAN> CONFIGURE DEVICE TYPE disk parallelism 4;
2> COPY # 3 files copied in parallel
3> datafile 1 TO '/BACKUP/df1.dbf',
4> datafile 2 TO '/BACKUP/df2.dbf',
5> datafile 3 TO '/BACKUP/df3.dbf';
RMAN> COPY # Second copy command
2> datafile 4 TO '/BACKUP/df4.dbf';
映像复制并行性
缺省情况下,恢复管理器将连续执行各 COPY 命令。然而,可以通过以下方法并行执行复
制操作:
• 使用 CONFIGURE DEVICE TYPE … PARALLELISM
• 或分配多个通道(在 Oracle8i 中是必需的)
• 为多个文件指定一条 COPY 命令
可以手动分配通道(如幻灯片所示),或者通过自动通道配置进行分配。
在该示例中,总共创建了 4 个通道,但仅使用其中的 3 个。以下是命令的执行情况:
1. 将 4 个通道配置为写入磁盘。
2. 第一条 COPY 命令使用 3 个通道(服务器进程),一个数据文件通过一个通道写入磁
盘。
3. 第二条 COPY 命令将在前一条 COPY 命令执行完成后才开始执行。它将只使用一个通
道。
注:当并行度比较高时,占用的计算机资源较多,但备份操作完成速度较快。
• 装载数据库,对整个数据库执行一致备份。
• 使用 REPORT SCHEMA 命令列出文件。
• 使用 COPY 命令或制作每个数据文件的映像副本。
• 使用 LIST COPY 命令验证副本。
如何制作整个数据库的映像副本
要使用恢复管理器制作所有数据文件的映像副本,请按照以下步骤执行:
1. 连接到 RMAN 并在装载模式下启动:
RMAN> STARTUP MOUNT
2. 获取目标数据库的数据文件列表:
RMAN> REPORT SCHEMA;
3. 使用 COPY 命令或脚本创建上面列出的所有数据文件的副本:
RMAN> COPY datafile 1 TO ’/BACKUP/df1.cpy’,
datafile 2 TO ’/BACKUP/df2.cpy ’,...;
4. 使用 LIST COPY 命令验证副本:
RMAN> LIST COPY;
可以使用 CURRENT CONTROLFILE 命令将控制文件包含在副本中。此外,如果
CONFIGURE CONTROLFILE AUTOBACKUP 为 ON,则在执行 COPY 命令后,RMAN 将
自动备份控制文件。
RMAN 备份类型
完全备份
完全备份与整体数据库备份不同。整体备份包含目标数据库的所有数据文件和控制文件,
而完全备份可能只包含一个或多个数据文件、控制文件或归档重做日志文件。
在执行完全备份时,Oracle 服务器进程读取整个文件,并将所有的块复制到备份集内,只
跳过从未使用过的数据文件块。在备份归档重做日志或控制文件时,服务器会话不会跳过
任何块。
完全备份不属于增量备份策略的一部分。可以用它创建和还原数据文件、数据文件副本、
表空间、数据库、控制文件、归档日志和归档日志副本的完全备份。注意,包含归档重做
日志的备份集始终是完全备份。
n 级备份,备份自最近 n 级或更低级别备份以来更改过的所
有块。
0级 0级
级别 0 2 2 1 2 2 2 0
星期 星期日 星期一 星期二 星期三 星期四 星期五 星期六 星期日
差异增量备份的示例
您要维护一个 100 GB 的数据库,该数据库还在不断地增长。基于现有的硬件,您确定执
行打开的数据库的整体备份需要 4 个小时。由于数据库每周 7 天、每天 24 小时总是处于
联机状态,所以在该时间段内执行备份将消耗大量系统资源。因此,每周只能执行一次 0
级备份,但出现故障时必须进行快速恢复。综合考虑,您制订了以下备份和恢复策略:
• 0 级备份将在每周中活动最少的一天执行。您确定这一天为星期日。
RMAN> BACKUP INCREMENTAL level 0 database;
• 每天执行一次 2 级增量备份,星期三除外。以这种方式备份的速度比较快,这是因为
只复制了自前一天以来更改过的块:
RMAN> BACKUP INCREMENTAL level 2 database;
级别 0 2 2C 1 2 2C 2C 0
星期 星期日 星期一 星期二 星期三 星期四 星期五 星期六 星期日
累积增量备份的示例
累积增量备份具有以下特性:
• 累积增量 n 级(其中,n > 0)备份复制自上次 n-1 级或更低级别备份以来更改过的所
有块。
• 累积增量备份以相同的级别备份上次备份的块。因此,与非累积备份相比,它们占用
的时间较长、写出的块较多、生成的备份文件也较大。
• 因为恢复时在各级别必须应用的备份较少,所以累积增量备份可以提高恢复速度。
示例
累积增量备份以相同的级别复制上次增量备份已复制的更改。因此,如果采用 2 级增量备
份,则随后的 2 级累积备份将备份所有新修改的块以及该 2 级增量备份备份过的块。这意
味着要进行完全恢复,只需要一个同级的增量备份即可。
RMAN> BACKUP INCREMENTAL level 2 cumulative database;
1. 确保给备份留出足够的空间。
2. 使用 NORMAL 或 IMMEDIATE 子句关闭数据库。
3. 装载数据库。
4. 如果未使用自动通道分配,请分配多个通道。
5. 运行 BACKUP 命令。
6. 确认备份完成并已分类。
7. 打开数据库进行正常使用。
RMAN> BACKUP DATABASE FILESPERSET 3;
自动备份控制文件
如果 CONFIGURE CONTROLFILE AUTOBACKUP 设置为 ON,则在以下情况下,RMAN
自动执行控制文件的自动备份:
• 在 RMAN 提示符下执行每个 BACKUP 或 COPY 命令后
• 当 RUN 命令块中 BACKUP 或 COPY 命令后跟的既不是 BACKUP 也不是 COPY 时
• 当每个 RUN 命令块结尾处的最后一条命令既不是 BACKUP 也不是 COPY 时
在执行这些命令过程中,除了执行当前控制文件的备份或复制外,还进行控制文件的自动
备份。
缺省情况下,CONFIGURE CONTROLFILE AUTOBACKUP 设置为 OFF。
RMAN 使用 %F 这种缺省格式自动备份当前的控制文件。可以使用 CONFIGURE
CONTROLFILE AUTOBACKUP FORMAT 和 SET CONTROLFILE AUTOBACKUP FORMAT
命令更改此格式。
为备份集或映像副本分配的逻辑名称
数据文件 数据文件
2,4 4
备份和映像副本的标记
标记是可以分配给备份集或映像副本的有意义的名称。使用用户标记的优点如下:
• 标记可以为文件副本集合或备份集提供有用的引用。
• 在 LIST 命令中,使用标记可以容易地定位已备份的文件。
• 可以在 RESTORE 和 SWITCH 命令中使用标记。
• 同样的标记可以用于多个备份集或文件副本。
如果一个不唯一的标记引用了多个数据文件,则恢复管理器会选择最新的可用文件。
示例
• 每月都会对数据文件 1、2、3 和 4 执行完全备份。虽然生成的物理文件名是
df_DB00_863_1.dbf,但控制文件中该备份的标记是 month_full_backup 。
• 每周都会对数据文件 3 和 4 执行完全备份。该备份的标记名为 week_full_backup。
• V$ARCHIVED_LOG
• V$BACKUP_CORRUPTION
• V$COPY_CORRUPTION
• V$BACKUP_DATAFILE
• V$BACKUP_REDOLOG
• V$BACKUP_SET
• V$BACKUP_PIECE
RMAN 动态视图
可以使用以下视图获取在控制文件中存储的 RMAN 信息:
• V$ARCHIVED_LOG 显示在数据库中已经创建、备份或清除的归档文件。
• V$BACKUP_CORRUPTION 显示在备份集的备份过程中找到的损坏块。
• V$COPY_CORRUPTION 显示映像复制过程中找到的损坏块。
• V$BACKUP_DATAFILE 用于通过确定各数据文件中的块数来创建大小相同的备份
集。通过它也可以找出数据文件中已损坏的块数。
• V$BACKUP_REDOLOG 显示在备份集中存储的归档日志。
• V$BACKUP_SET 显示已经创建的备份集。
• V$BACKUP_PIECE 显示为备份集创建的备份片。
如何监视复制进程
要在备份过程中将某一进程与一个通道关联起来,请:
1. 启动恢复管理器并连接到目标数据库和恢复目录(与后者的连接是可选的)。
rman target / catalog rman/rman@rcat
2. 在分配通道后,设置 COMMAND ID 参数,然后复制所需的对象。
run {
allocate channel t1 type disk;
set command id to 'rman';
copy datafile 1 to '/u01/backup/df1.cpy';
release channel t1;}
3. 查询 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%';
• 恢复管理器作业异常终止
• 检测到物理和逻辑块损坏
• 在打开的数据库的备份过程中检测到破碎块
其它 RMAN 问题
恢复管理器异常终止
恢复管理器只在控制文件中记录已成功备份的备份集。如果恢复管理器作业异常终止,则
操作系统中可能存在没有完成的文件。恢复管理器不使用这些文件,但您应该将它们删除。
检测损坏
恢复管理器可以检测并能够禁止执行一些操作,如导致备份文件无法使用或造成还原的数
据文件损坏的操作。
缺省情况下将启用对物理损坏的错误检查。有关在备份过程中遇到的损坏数据文件块的信
息将记录在控制文件和警报日志中。服务器可以识别损坏的数据文件块,但这些损坏块仍
包含在备份中。Oracle 服务器在控制文件中记录损坏块的地址和损坏类型。要从控制文件
查看损坏块,请通过 V$BACKUP_CORRUPTION 查看备份集或通过
V$COPY_CORRUPTION 查看映像副本。
RMAN 将检测数据块和索引块是否存在逻辑损坏,并将所有错误记录在 alert.log 和服务器
会话的跟踪文件中。缺省情况下,禁用逻辑损坏的错误检查。
在这一课中,您应该能够掌握:
• 确定应该采用哪种 RMAN 备份类型
• 使用 RMAN COPY 和 BACKUP 命令制作备份
• 备份控制文件
• 备份归档重做日志文件
此练习涉及以下主题:
• 使用恢复管理器备份一个表空间数据文件和一个控制
文件
• 使用恢复管理器备份归档日志文件
• 使用 RMAN COPY 命令创建数据库文件的映像副本