You are on page 1of 376

Oracle9i 数据库管理基础 II

学生指南 • 第 1 册

D11297CN11
产品版 1.1
2002 年 3 月
D34485
作者 版权所有 © Oracle Corporation,2000,2001。保留所有权利。

Donna Keesling 本文档包含 Oracle 公司的专有权信息;根据许可证协议提供该文档,该许可证协议含


James Womack 有对使用和公开本文档的各种限制;本文档还受到版权法的保护。严禁对本文档所涉及
的软件进行逆向工程设计。如果将本文档交付给美国国防部下属的某个政府机构,则根
据 “受限制权利” 进行提供并且必须符合以下规定:
技术撰稿人和审稿人
Lance Ashdown 受限制权利说明

Tammy Bednar 对商用计算机软件的限制同样适用于政府的使用、复制或泄露行为,并且根据联邦法


Louise Beijer 律,本软件将被视为 “受限制权利” 软件,相关规定请参见 DFARS 252.227-7013《技
术数据和计算机软件中的权利》(1988 年 10 月)中的段落 (c)(1)(ii)。
Harald van Breederode
Howard Bradley 未经 Oracle 公司事先明确的书面许可,不得以任何形式或通过任何途径复制本文档或
Senad Dizdar 文档的任何部分。任何其它复制行为都被视为对版权法的触犯,违者可能须负民事和
(或)刑事责任。
Steven George
Joel Goodman 如果将本文档交付给美国国防部之外的某个政府机构,则根据 “受限制权利” 进行提供,
该权利在 FAR 52.227-14《数据权利-通则》(包括 1987 年 6 月的《附则》III)中有
Scott Gossett
所规定。
John Hibbard
Stefan Lindblad 本文档中的信息如有更改,恕不另行通知。如果您在此文档中发现任何问题,请书面
通知 Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6,
Roman Niehoff Redwood Shores, CA 94065。Oracle 公司不保证此文档中没有错误。
Howard Ostrow
Oracle 和所有对 Oracle 产品的引用都是 Oracle 公司的商标或注册商标。
Radhanes Petronilla
Maria Jesus Senise Garcia 所有其它产品或公司名称仅用于标识,可能是其各自所有者的商标。
Peter Sharman
Ranbir Singh
Sergey Stetsenko
John Watson
Steven Wertheimer
Junichi Yamazaki

出版商
John B Dawson
目录

前言
1 联网概览
目标 1-2
网络环境的挑战 1-3
简单网络:两层 1-5
简单网络到复杂网络:N 层 1-6
复杂的网络 1-7
Oracle9i 联网解决方案 1-8
连接性:Oracle Net Services 1-9
连接性:使用 IIOP 和 HTTP 连接数据库 1-11
目录命名 1-12
目录服务:Oracle Internet Directory 1-14
可伸缩性:Oracle Shared Server 1-15
可伸缩性:连接管理器 (Connection Manager) 1-16
安全性:高级安全性 (Advanced Security) 1-18
高级安全性 (Advanced Security) 加密 1-19
安全性:Oracle Net Services 和防火墙 1-20
可访问性:异种服务 1-21
可访问性:外部过程 1-22
Oracle Net Configuration Assistant 1-23
Oracle Net Manager 1-24
小结 1-25
2 Oracle Net 体系结构
目标 2-2
Oracle Net 连接 2-3
客户机-服务器应用程序连接:无中间层 2-4
Web 客户机应用程序连接 2-6
Web 客户机应用程序连接:Web 服务器中间层 2-7
Web 客户机应用程序连接:Java 应用程序客户机 2-8
Web 客户机应用程序连接:Java 小程序客户机 2-9
Web 客户机应用程序连接:无中间层 2-10
连接概念与术语 2-12
Oracle Net 配置模型 2-14
Oracle Net 配置文件 2-15
小结 2-17
3 Oracle Net 服务器端基本配置
目标 3-2
监听程序进程 3-3
连接方法 3-4
衍生、继承和直接传送连接 3-5
重定向会话 3-7
服务配置和注册 3-9
iii
静态服务注册:listener.ora 文件 3-12
静态服务注册:创建监听程序 3-15
配置服务 3-16
事件记录与跟踪 3-17
动态服务注册:配置注册 3-18
动态服务注册:向监听程序注册信息 3-19
为 Oracle9i JVM 配置监听程序:IIOP 和 HTTP 3-20
“监听程序控制实用程序” (Listener Control Utility, LSNRCTL) 3-22
LSNRCTL 命令 3-23
LSNRCTL SET 和 SHOW 修改符 3-25
小结 3-27
练习 3 概览 3-28
4 命名方法配置
目标 4-2
命名方法概览 4-3
主机命名 4-4
主机命名:客户端 4-5
主机命名:服务器端 4-6
主机命名示例 4-7
命名方法配置 4-8
选择主机命名方法 4-9
本地命名 4-10
选择本地命名方法 4-11
配置本地网络服务名 4-12
处理网络服务名 4-13
指定 Oracle 数据库的版本 4-14
数据库服务名 4-15
网络协议 4-16
主机名和监听程序端口 4-17
测试连接 4-18
连接测试的结果 4-19
网络服务名 4-20
保存网络服务名 4-21
生成的文件:tnsnames.ora 4-22
生成的文件:sqlnet.ora 4-24
排除客户端故障 4-25
小结 4-27
练习 4 概览 4-28
5 Oracle Shared Server 的使用和配置
目标 5-2
服务器配置 5-3
专用服务器进程 5-4
Oracle Shared Server 5-5
Oracle Shared Server 的优点 5-7
iv
同时使用专用服务器和 Oracle Shared Server 5-8
连接 5-9
处理请求 5-10
SGA 和 PGA 5-12
配置 Oracle Shared Server 5-13
DISPATCHERS 5-14
MAX_DISPATCHERS 5-16
SHARED_SERVERS 5-18
MAX_SHARED_SERVERS 5-20
CIRCUITS 5-21
SHARED_SERVER_SESSIONS 5-22
相关参数 5-23
验证设置 5-25
动态视图 5-27
小结 5-28
练习 5 概览 5-29
6 备份和恢复概览
目标 6-2
备份和恢复问题 6-3
故障类别 6-4
语句故障的原因 6-6
语句故障的解决方法 6-7
用户进程故障的原因 6-8
用户进程故障的解决方法 6-9
可能的用户错误 6-10
用户错误的解决方法 6-11
例程故障的原因 6-12
从例程故障进行恢复 6-13
介质故障的原因 6-15
介质故障的解决方法 6-16
定义备份和恢复策略 6-17
业务要求 6-18
操作要求 6-19
技术方面的考虑因素 6-21
灾难恢复问题 6-23
小结 6-25
7 例程和介质恢复结构
目标 7-2
概览 7-3
大型共享池 7-6
数据库缓冲区高速缓存、DBWn 和数据文件 7-8
重做日志缓冲区、LGWR 和重做日志文件 7-10
v
多元备份的重做日志文件 7-13
Enterprise Manager 中的重做日志文件 7-15
检查点 7-16
检查点类型 7-17
CKPT 进程 7-18
多元备份的控制文件 7-19
Enterprise Manager 中的控制文件 7-21
ARCn 进程和归档日志文件 7-22
数据库同步 7-24
例程恢复的各个阶段 7-25
优化崩溃恢复和例程恢复的性能 7-27
优化例程恢复和崩溃恢复的持续时间 7-28
影响检查点的初始化参数 7-29
控制例程崩溃恢复时间 7-31
V$INSTANCE_RECOVERY 7-32
优化崩溃恢复和例程恢复的阶段 7-34
优化前滚阶段 7-35
优化回退阶段 7-36
快速启动按需回退 7-37
快速启动并行回退 7-38
控制快速启动并行回退 7-39
监视并行回退 7-40
小结 7-41
练习 7 概览 7-42
8 配置数据库归档模式
目标 8-2
重做日志历史记录 8-3
NOARCHIVELOG 模式 8-4
ARCHIVELOG 模式 8-6
更改归档模式 8-8
设置归档模式 8-10
自动和手动归档 8-11
启用自动归档 8-13
指定多个 ARCn 进程 8-14
停止或启动附加归档进程 8-15
在例程启动时启用自动归档 8-16
在例程启动后启用自动归档 8-17
禁用自动归档 8-18
手动归档联机重做日志文件 8-19
手动归档重做日志文件 8-21
指定归档日志目标 8-22
指定多个归档日志目标 8-23
LOG_ARCHIVE_DEST_n 选项 8-24
指定本地目标的最小数量 8-25
vi
控制归档到目标 8-27
指定文件名格式 8-28
获取归档日志信息 8-29
小结 8-32
9 Oracle Recovery Manager 概览和配置
目标 9-2
恢复管理器功能 9-3
恢复管理器组件 9-5
使用 “备份管理” 向导 9-7
RMAN 资料档案库:使用控制文件 9-8
分配通道 9-9
自动分配通道 9-11
使用 OEM 分配通道 9-12
手动分配通道 9-13
介质管理 9-15
使用 RMAN 的连接类型 9-17
不使用恢复目录进行连接 9-18
其它 RMAN 命令行参数 9-20
恢复管理器模式 9-21
RMAN 命令 9-23
作业命令示例 9-25
RMAN 配置设置 9-26
CONFIGURE 命令 9-27
SHOW 命令 9-29
LIST 命令操作 9-30
LIST 命令 9-31
REPORT 命令 9-32
REPORT NEED BACKUP 命令 9-33
恢复管理器程序包 9-34
使用 RMAN 的注意事项 9-35
小结 9-37
练习 9 概览 9-38
10 用户管理的备份
目标 10-2
术语 10-3
用户管理的备份和恢复 10-5
查询视图以获得数据库文件信息 10-6
获得数据库文件信息 10-8
备份方法 10-9
一致的整体数据库备份(关闭的数据库的备份) 10-10
进行一致的整体数据库备份的优点 10-11
进行一致的整体数据库备份 10-13
打开的数据库的备份 10-15
vii
进行打开的数据库的备份的优点 10-16
打开的数据库的备份的要求 10-17
打开的数据库的备份的选项 10-18
进行联机表空间的备份 10-19
结束联机表空间备份 10-20
备份状态信息 10-21
联机表空间备份过程中出现故障 10-23
结束联机备份 10-24
只读表空间备份 10-26
只读表空间备份问题 10-27
与记录和不记录选项相关的备份问题 10-28
手动备份控制文件 10-29
备份初始化参数文件 10-31
使用 DBVERIFY 实用程序验证备份 10-32
DBVERIFY 命令行界面 10-33
小结 10-35
练习 10 概览 10-36
11 RMAN 备份
RMAN 备份概念 11-3
恢复管理器备份 11-4
备份集 11-5
备份集的特性 11-6
备份片 11-7
备份片大小 11-8
BACKUP 命令 11-9
创建备份集 11-12
多元备份集 11-13
备份集的并行化 11-14
双重备份集 11-16
备份集的备份 11-17
归档重做日志文件的备份 11-18
归档重做日志的备份集 11-19
备份约束 11-20
映像副本 11-21
映像副本的特性 11-22
创建映像副本 11-23
映像副本示例 11-24
COPY 命令 11-25
映像复制并行性 11-26
复制整个数据库 11-27
制作增量备份 11-28
差异增量备份的示例 11-30
累积增量备份的示例 11-32

viii
在 NOARCHIVELOG 模式下进行备份 11-33
自动备份 RMAN 控制文件 11-34
备份和映像副本的标记 11-36
RMAN 动态视图 11-37
监视 RMAN 备份 11-38
其它 RMAN 问题 11-40
小结 11-42
练习 11 概览 11-43
12 用户管理的完全恢复
目标 12-2
介质恢复 12-3
恢复步骤 12-4
使用用户管理的过程而执行的还原和数据文件介质恢复 12-5
ARCHIVELOG 模式和 NOARCHIVELOG 模式 12-6
在 NOARCHIVELOG 模式下进行恢复 12-7
在 NOARCHIVELOG 模式下使用重做日志文件备份进行恢复 12-9
在 NOARCHIVELOG 模式下不使用重做日志文件备份进行恢复 12-10
在 ARCHIVELOG 模式下进行恢复 12-11
完全恢复 12-12
在 ARCHIVELOG 模式下进行完全恢复 12-13
确定需要恢复哪些文件 12-14
用户管理的恢复过程:RECOVER 命令 12-16
在恢复过程中使用归档重做日志文件 12-17
使用用户管理的过程将数据文件还原到新的位置 12-19
完全恢复方法 12-20
完全恢复关闭的数据库 12-22
关闭的数据库恢复示例 12-23
恢复打开的数据库(数据库最初是打开的) 12-25
打开的数据库恢复示例 12-26
恢复打开的数据库(数据库最初是关闭的) 12-28
打开的数据库恢复示例 12-29
在没有备份的情况下恢复数据文件 12-31
在没有备份的情况下重新创建丢失的数据文件 12-32
在没有备份的情况下进行恢复的示例 12-33
只读表空间恢复 12-35
只读表空间的恢复问题 12-36
丢失控制文件 12-37
恢复控制文件 12-38
小结 12-39
练习 12 概览 12-40
13 RMAN 完全恢复
目标 13-2
使用 RMAN 执行还原和数据文件介质恢复 13-3
ix
使用 RMAN 恢复 ARCHIVELOG 模式下的数据库 13-4
使用 “恢复向导” (Recovery Wizard) 13-5
使用 RMAN 将数据文件还原到新位置 13-6
还原到新位置 13-7
使用 RMAN 恢复表空间 13-8
表空间恢复 13-9
使用 RMAN 重新定位表空间 13-10
小结 13-12
练习 13-1 和 13-2 概览 13-13
14 RMAN 完全恢复
目标 14-2
不完全恢复概览 14-3
需要进行不完全恢复的情况 14-4
不完全恢复类型 14-5
不完全恢复原则 14-7
不完全恢复和警报日志 14-9
用户管理的不完全恢复的过程 14-10
RECOVER 命令概览 14-11
基于时间的恢复示例 14-12
UNTIL TIME 恢复 14-13
基于取消的恢复示例 14-15
恢复期间使用备份控制文件 14-18
当前重做日志文件丢失 14-21
小结 14-23
练习 14-1 和 14-2 概览 14-24
15 RMAN 不完全恢复
目标 15-2
使用 RMAN 进行数据库的不完全恢复 15-3
指定还原时间 15-4
使用 UNTIL TIME 进行 RMAN 不完全恢复的示例 15-5
使用 UNTIL SEQUENCE 进行 RMAN 不完全恢复的示例 15-7
小结 15-8
练习 15 概览 15-9
16 RMAN 维护
目标 16-2
交叉查对备份和副本 16-3
CROSSCHECK 命令 16-4
删除备份和副本 16-5
DELETE 命令 16-6
删除备份和副本 16-7
更改 RMAN 备份和副本的可用性 16-8
更改可用性状态 16-9
使备份或副本脱离保留策略 16-10
x
CHANGE … KEEP 命令 16-11
将归档重做日志文件和用户管理的备份列入目录 16-12
CATALOG 命令 16-13
不将 RMAN 记录列入目录 16-14
CHANGE … UNCATALOG 命令 16-15
小结 16-16
练习 16 概览 16-17
17 恢复目录的创建和维护
目标 17-2
概览 17-4
恢复目录内容 17-5
使用恢复目录的优点 17-7
创建恢复目录 17-8
使用恢复目录连接 17-11
恢复目录维护 17-12
目录维护 17-13
恢复目录的重新同步 17-14
使用 RESYNC CATALOG 进行重新同步 17-15
重置数据库复本 17-16
恢复目录报告 17-18
查看恢复目录 17-19
已存储的脚本 17-21
脚本示例 17-22
管理脚本 17-23
恢复目录备份 17-24
恢复恢复目录 17-25
小结 17-26
练习 17 概览 17-27
18 在数据库之间传输数据
目标 18-2
Oracle 导出和导入实用程序 18-3
Oracle 导出和导入实用程序概览 18-4
调用导出和导入实用程序的方法 18-6
导出模式 18-7
调用导出实用程序 18-9
使用导出向导 18-12
直接路径导出概念 18-13
直接路径导出功能 18-14
直接路径导出的限制 18-15
指定直接路径导出 18-16
使用导入实用程序进行恢复 18-17
导入模式 18-18
调用导入实用程序 18-19
使用导入向导 18-21
xi
作为 SYSDBA 调用导入实用程序 18-22
导入进程序列 18-23
全球化支持注意事项 18-24
小结 18-25
练习 18 概览 18-26
19 专题讨论
目标 19-2
专题讨论方法 19-4
专题讨论的方法步骤 19-6
业务要求 19-7
排除数据库故障 19-8
排除网络故障 19-10
启用跟踪 19-11
使用跟踪文件 19-12
小结 19-15
练习 19 19-17
附录 A:练习答案
附录 B:专题讨论中出现的情况
附录 C:全球支持公告板
附录 D:将数据加载到数据库中

xii
前言
前言 - 2
配置文件

课前须知
在开始本课程的学习之前,您应该具备以下条件:
• 了解 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
联网概览

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 说明随 Oracle9i 提供的用于管理复杂网络的解决方案
• 介绍 Oracle 联网附加解决方案

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 1-2


网络环境的挑战

• 配置网络环境
• 维护网络
• 对网络进行优化、故障排除和监视
• 实施网络安全性
• 集成旧有的系统

Copyright © Oracle Corporation, 2001. All rights reserved.

配置网络环境
要成功实施网络环境,应考虑以下几个问题:
• 要配置的网络属于哪种类型?是只有几个客户机的小型网络,还是有大量
客户机和服务器的大型网络?
• 使用的是单一协议还是多个协议?
• 网络规模是固定的还是在不断扩展?
• 您有哪些配置选项?
• 有没有可用于配置网络的用户友好的工具?
• 严格地说,您的网络属于客户机/服务器结构还是数据多层结构?
维护网络
• 您的企业需要对网络进行何种程度的维护?
• 您还将向网络添加客户机和服务器吗?
• 是否需要经常升级网络?
Oracle9i 数据库管理基础 II 1-3
对网络进行优化、故障排除和监视
• 您的网络是否包括所需的工具?
• 您预计工作量有多大?
– 用户数
– 事务处理数
– 节点数
– 节点的位置
实施网络安全性
• 是否需要确保网络环境的安全?
• 是否通过网络传输机密和敏感的信息?
• 哪些工具可用于实施安全性?
• 是否预计要通过 Internet 访问服务器?
集成旧有的系统
旧有的系统将如何与联网环境进行交互?
注:事先进行分析以澄清这些问题,可以帮助您从头开始选择合适的网络策
略。

Oracle9i 数据库管理基础 II 1-4


简单网络:两层

网络
客户机
服务器

• 网络连接客户机和服务器
• 客户机和服务器使用同一种 “语言”(即协议)。

Copyright © Oracle Corporation, 2001. All rights reserved.

两层网络
在两层网络中,客户机直接与服务器进行通信。这也称作客户机-服务器 体系
结构。客户机-服务器网络体系结构所包含的客户机进程从服务器进程请求服
务。使用某一给定协议,客户机和服务器可以通过网络进行通信。客户机和
服务器都上必须安装该协议。
配置客户机-服务器网络时一个常见的错误是:在小型的两层网络环境中建立
应用程序的原型,然后通过向服务器添加多个用户来扩大网络的规模。这种
方法会导致系统效率低下,原因是服务器负载过重。要使网络规模适当地扩
大到几百个甚至几千个用户,则需要实施 N 层 体系结构,这种结构在客户机
和服务器之间添加一个或多个服务器或代理。

Oracle9i 数据库管理基础 II 1-5


简单网络到复杂网络:N 层

网络 网络

客户机
中间层
服务器

• 客户机可以是瘦客户机或 PC
• 中间层可以包含应用程序和服务
• 实际数据存放在服务器上

Copyright © Oracle Corporation, 2001. All rights reserved.

N 层网络
在 N 层 体系结构中,中间层代理的角色可以是多种多样的。它可以提供以下
几种服务:
• 转换服务(即,将一台主机上安装旧有应用程序的环境转换为客户机-服
务器环境,或充当不同协议之间的桥梁)
• 可伸缩性服务(即,充当事务处理监视程序,以平衡服务器之间的请求负
载)
• 网络代理服务(即,将一个请求映射到多个不同的服务器、整理相应的多
个结果并将单一响应返回到客户机)

Oracle9i 数据库管理基础 II 1-6


复杂的网络

DECnet

DECnet

TCP/IP

TCP/IP
APPC/LU6.2
TCP/IP

Copyright © Oracle Corporation, 2001. All rights reserved.

复杂网络的问题
网络应改善通信,而不是阻碍分布式操作。在较为复杂的网络环境中,必须
解决下面几个问题:
• 不同硬件平台运行不同操作系统
• 这些平台上使用多个协议
• 彼此不同但相互联系的应用程序之间存在不同的语法
• 相互联系的应用程序处在不同的地理位置
设计合理的复杂网络能够支持大型分布式系统。

Oracle9i 数据库管理基础 II 1-7


Oracle9i 联网解决方案

• 连接性
• 目录服务
• 可伸缩性
• 安全性
• 可访问性

Copyright © Oracle Corporation, 2001. All rights reserved.

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 数据库集成。

Oracle9i 数据库管理基础 II 1-8


连接性:Oracle Net Services

• 与协议无关
• 支持多种平台
• 集成的 GUI 管理工具
• 多种配置选项
• 跟踪和诊断工具集
• 基本安全性

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net Services 的主要功能


Oracle Net Services 引进的主要功能可以处理分布式环境中因网络规模扩大造
成的变化。这些变化包括用户对数据存储访问的增加、创建更容易配置和管
理的环境以及改善用户验证方法以安全地识别用户。

Oracle9i 数据库管理基础 II 1-9


连接性:Oracle Net Services

管理和配置

Oracle Net Oracle Net

客户机 协议 协议
服务器
任一平台 任一平台

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net Services


Oracle Net Services 对各种网络传输协议提供业界最广泛的支持,这些协议包
括 TCP/IP、IBM LU6.2 和 DECnet。使用 Oracle Net Services 进行的所有数据
转换对用户和应用程序都是不可见的。这使得 Oracle9i 可以使用不同类型的
计算机、操作系统和网络,透明地将 PC、UNIX、旧有系统和其它系统的任
意组合连接在一起,而无需对现有体系结构进行成本高昂的改造。
Oracle Net Services 包含配置和管理机制并且不需要中央配置实用程序。对于
简单的环境,Oracle Net Services 的缺省设置提供一个透明的名称解析适配
器,从而无需生成配置文件。对于较为复杂的环境,除其它服务外,Oracle
Internet Directory 还将连接信息存储在数据库中。
Oracle Net Services 通过将标准解决方案与旧有系统相集成来解决 Internet 连
接性问题,这些解决方案如:远程验证拨入用户服务 (RADIUS) 和轻量目录
访问协议 (LDAP)。
注:在 Oracle9i 中,不再支持 Novell IPX/SPX 协议。

Oracle9i 数据库管理基础 II 1-10


连接性:使用 IIOP 和 HTTP
连接数据库

数据库连接可以使用以下附加协议来实现:
• Internet 内部 ORB 协议 (IIOP)
• 超文本传输协议 (HTTP)

Web 浏览器 IIOP, HTTP Oracle9i

Copyright © Oracle Corporation, 2001. All rights reserved.

IIOP 和 HTTP 连接性


与数据库的连接并不仅限于使用 Oracle Net Services;客户机可以使用 Internet
协议 — 如 Internet Inter-ORB 协议 (IIOP) 和超文本传输协议 (HTTP) 等 — 来
建立与数据库的连接。使用这些 Internet 协议,用户可以从 Web 浏览器中运
行应用程序,从而直接连接到 Oracle9i 数据库。各种 Internet 技术 — 如
Internet 文件系统、Enterprise JavaBeans (EJB) 以及 Internet 标准安全套接字层
(SSL) 协议 — 提高了网络连接的安全性。
注:Oracle Net 支持称为通用 Inter-ORB 协议 (GIOP) 的表示层,它用于与
Java 选项连接的客户机。IIOP 是在 TCP/IP(或使用 SSL 的 TCP/IP)的基础
上实施的 GIOP。Oracle 提供 GIOP 服务实施。

Oracle9i 数据库管理基础 II 1-11


目录命名

• 目录命名是使用符合 LDAP 的目录服务器来解析网络别


名的过程。
• 客户机必须被配置为使用符合 LDAP 的服务器。

Copyright © Oracle Corporation, 2001. All rights reserved.

目录命名
LDAP
LDAP 是轻量目录访问协议 (Lightweight Directory Access Protocol) 的缩写,它
是目录服务的 Internet 标准。LDAP 已成为网络安全性的一个关键性体系结构
组件,并已成为在网络上集成各种应用程序和服务的一个重要平台。通过提
供以下功能,它大大简化了目录信息的管理:
• 与单个可扩展目录服务(如 Oracle Internet Directory)之间使用完整定义
的标准接口
• 快速开发和部署使用目录的应用程序
• 一组编程接口,支持无缝地部署 “Internet 就绪” 的应用程序

Oracle9i 数据库管理基础 II 1-12


目录命名(续)
命名方法
Oracle 支持多种命名方法。命名方法 是指将复杂的网络地址解析为一个简单
别名的过程。随后,在复杂的网络上,用户和管理员就可以使用该别名连接
各个网络。Oracle 支持以下命名方法:
• 主机命名:仅用于使用 TCP/IP 的简单网络
• 本地命名:使用 tnsnames.ora 文件
• Oracle Names 命名:将 Oracle Names Server 用于 Oracle8i 或更早版本
• 目录命名:使用 Oracle Internet Directory

Oracle9i 数据库管理基础 II 1-13


目录服务:Oracle Internet Directory

Oracle Internet Directory 是 Oracle 的符合 LDAP 的目录


服务。它提供以下功能:
• 与 Oracle9i 紧密集成
• 简化网络管理
• 提供安全可靠的目录结构

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Internet Directory (OID)


Oracle Internet Directory (OID) 符合 LDAP 版本 3。它提供以下功能:
• 与 Oracle8i 和 Oracle9i 数据库集成,从而使 Oracle 客户可以很轻松地管理
他们的用户和系统
• 提供可伸缩、跨平台的目录结构,以便进行安全可靠的 Internet 计算
• 启用基于 OID 的目录,即使在分布式格局中也能保持同步
• 集成现有的公用密钥证书、电子钱包和访问权限
• 维护路由选择策略、系统管理对象以及服务问题的质量
• 使服务经销商可以从电信运营级别供应商那里租用线路,将带有客户信息
的目录与它们的供应商隔离开,但共享需要的体系结构信息,从而提供高
质量的服务
注:本课程不包含配置 Oracle Internet Directory 的内容。

Oracle9i 数据库管理基础 II 1-14


可伸缩性:Oracle Shared Server

• Oracle Shared Server 允许大量用户同时连接到某一


数据库。
• 由于数据库资源是共享的,从而可以有效地利用内存和
处理能力。
• 连接通过调度程序进行路由。
• 服务器进程不是由各个客户机专用的。
• 服务器进程根据需要为客户机进程提供服务。

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Shared Server


Oracle Shared Server 体系结构在设计时就考虑了用户可伸缩性。通过提供有
效的服务器端资源共享,Oracle Shared Server 允许大量用户同时连接到一个
数据库服务器。
调度程序
调度程序是一个进程,它负责管理与有用的服务器进程的连接。一个调度程
序可同时支持多个客户机连接。
服务器进程
共享服务器负责检索数据,并将它们保存到数据库中,还负责应用程序所需
的其它任何 CPU 处理。
结果
Oracle Shared Server 中的这种任务分配是非常有效的,并实现了较大的用户
可伸缩性。它还使连接时间和吞吐量都很理想。
注:Oracle Shared Server 在 Oracle9i 之前的版本中称为 Oracle Multithreaded
Server (MTS)。 Oracle9i 数据库管理基础 II 1-15
可伸缩性:连接管理器
(Connection Manager)

连接管理器 (Connection Manager) 提供以下功能:


• 连接的多路复用
• 跨协议连接性
• 网络访问控制

Copyright © Oracle Corporation, 2001. All rights reserved.

连接管理器 (Connection Manager)


连接管理器 (Connection Manager) 是在中间层上配置和安装的网关进程和控制
程序。连接管理器 (Connection Manager) 可配置为提供以下功能:
多路复用
连接管理器 (Connection Manager) 可以处理多个传入的连接,并通过一个传出
连接同时传送这些传入的连接。多路复用使更多用户可以访问一台服务器。
这一配置只在 TCP/IP 环境中提供。
跨协议连接性
借助于该功能,客户机和服务器可以通过不同的网络协议进行通信。
网络访问控制
利用连接管理器 (Connection Manager),在基于 TCP/IP 协议的网络中,指定
的客户机可以连接到特定的服务器。
连接管理器 (Connection Manager) 的优点
• 如果您使用中间层来部署连接管理器 (Connection Manager),即可在底层
上支持更多用户;同时可以更好地利用资源,并提供可伸缩性
• 支持跨协议通信
• 可以用作访问控制机制
• 如果防火墙不与 Oracle Net 交互,它可以用作代理服务器
Oracle9i 数据库管理基础 II 1-16
可伸缩性:连接管理器
(Connection Manager)

2
1

3
连接管理器
(Connection
Manager)
服务器

Copyright © Oracle Corporation, 2001. All rights reserved.

连接多路复用
本示例说明连接管理器 (Connection Manager) 如何充当多路复用器,将多台客
户机的数据传递给一台服务器。
1. 通过连接到连接管理器 (Connection Manager),建立从某台客户机到服务
器的初始
连接。
2. 连接管理器 (Connection Manager) 建立与该服务器的连接。
3. 当其它客户机请求通过连接管理器 (Connection Manager) 与该服务器连
接时,它们
使用的仍是连接管理器 (Connection Manager) 用于初始连接的连接。

Oracle9i 数据库管理基础 II 1-17


安全性:高级安全性
(Advanced Security)

• 加密
– 在网络节点之间编码
– DES、RSA、3DES

• 验证
– 通过第三方服务和安全套接字层 (SSL) 验证用户
– Kerberos、Radius、CyberSafe

• 数据完整性
– 确保传送过程中的数据完整性
– MD5、SHA

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Advanced Security


Oracle Advanced Security 提供数据保密性、完整性、验证和一次登入。
• 验证可确保对用户进行适当验证。
• 加密确保在节点之间所传送的数据是保密的。
• 数据完整性确保数据在传送过程中不被修改或篡改。
• 一次登入使用户可以使用用一用户名/口令组合经过验证以登录到多台服务
器中。
注:Oracle Advanced Security 是需要另外获取许可证才能使用的产品。

Oracle9i 数据库管理基础 II 1-18


高级安全性 (Advanced Security) 加密

本季度公司收入上升了 45% 本季度公司收入上升了 45%

1 3
Oracle Advanced Security
已安装

Oracle Advanced Security


已安装 Decrypt

客户机 服务器
2
解密

fdh37djf246gs’b[da,\ssk

Copyright © Oracle Corporation, 2001. All rights reserved.

使用高级安全性 (Advanced Security) 的加密示例


本示例说明通过网络进行安全传送的主要任务之一。要确保这种安全传送,
客户机和服务器上都必须安装 Oracle Advanced Security。
配置高级安全性 (Advanced Security) 之后,通过 Oracle Net Services 进行传送
的数据都可加密,如下所示:
1. 文本信息从客户端发出。在通过网络链路进行传送该信息之前,客户端
网络中的一
层对该信息进行加密。
2. 经过加密的数据(可能包括发送的每个数据包的校验和)通过网络链路
进行传送。
3. 在服务器端,此消息被解密,使用校验和可确保数据按正确顺序到达且
未被篡改。
只有具备正确密钥的服务器才可以解密信息并验证数据的校验和序列。

Oracle9i 数据库管理基础 II 1-19


安全性:Oracle Net Services 和防火墙

• Oracle 与多家主要的防火墙供应商合作以提供防火墙
支持
• Oracle Net Application Proxy Kit 使防火墙供应商可
以为 Oracle 环境提供连接支持
• Oracle Net Application Proxy 基于连接管理器
(Connection Manager)
• Oracle 支持两类防火墙:
– 基于代理的防火墙
– 基于包的状态检查的防火墙

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net 和防火墙


Oracle 与多家主要的防火墙供应商合作,专门为数据库网络通信提供支持。
由于可以使用 Oracle Net Application Proxy Kit,防火墙供应商可以提供在
Oracle 环境中部署真正分布式 Internet 和 Intranet 应用程序所需的支持。
基于代理的防火墙
Oracle Net Application Proxy 基于 Oracle Connection Manager。它使防火墙可
以代理和检查 Oracle Net 通信情况。在应用程序代理方法中,信息流经防火
墙,但外部数据包不经过防火墙。应用程序代理通常是跨双子网主机的两个
网络接口转发数据的唯一方法。网关负责内部主机与外部主机之间的数据转
送,这一点由安全性策略定义。
基于状态检验的防火墙
这类防火墙过滤和检验 TCP/IP 数据包,而且可以配置防火墙来处理 Oracle
Net 通信。通过检验 IP 标题信息和了解所支持的各种更高级别的协议,这种
防火墙可以执行 IP 级过滤,同时可以监视和实施针对特定应用程序的操作
(如端口重定向请求)。

Oracle9i 数据库管理基础 II 1-20


可访问性:异种服务

• 实现对旧有数据的访问,就象访问一个本地关系数据库
中的数据一样
• 启用 Oracle 过程调用以访问非 Oracle 系统、服务或
API

Copyright © Oracle Corporation, 2001. All rights reserved.

异种服务
异种服务提供 Oracle 服务器与非 Oracle 环境之间的无缝集成。借助于异种服
务,您可以实现以下功能:
• 使用 Oracle SQL 透明地访问存储在非 Oracle 数据存储(如 Informix、DB2、
SQL Server 和 Sybase)中的数据
• 使用 Oracle 过程调用从 Oracle 分布式环境透明地访问非 Oracle 系统、服
务或应用程序编程接口 (API)
要访问特定的非 Oracle 系统,需要使用异种服务代理。
好处
通过异种服务可以实现与外部数据源的集成。
注:本课程不包含配置异种服务的内容。

Oracle9i 数据库管理基础 II 1-21


可访问性:外部过程

• 外部过程是用 3GL 语言编写的函数,可以从 PL/SQL


调用这些函数。
• 支持外部过程使得开发人员比使用 SQL 或 PL/SQL
更为灵活。
• Oracle 监听程序可以监听外部过程调用。
• 可以在服务器安装期间或安装之后配置与外部过程的
连接。

Copyright © Oracle Corporation, 2001. All rights reserved.

外部过程
与标准 SQL 或 PL/SQL 相比,Oracle 对外部过程的支持为开发人员提供了更
多的开发选择。可以配置监听程序来监听外部过程调用。PL/SQL 或 SQL 应
用程序调用外部过程时,监听程序就会启动一个针对特定网络会话的进程
(称为 extproc)。通过监听程序服务,PL/SQL 将以下信息传递给 extproc:
• 共享库名称
• 外部过程名称
• 参数(如果需要)
然后,extproc 程序加载共享库并调用外部过程。

Oracle9i 数据库管理基础 II 1-22


Oracle Net Configuration Assistant

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net Configuration Assistant


Oracle Net Configuration Assistant 主要用于在安装期间配置基本网络组件,包括:
• 监听程序名称和协议地址
• 客户机用来解析连接标识符的命名方法
• tnsnames.ora 文件中的网络服务名
• 目录服务器访问
Oracle Net Configuration Assistant 在软件安装期间自动运行,这一点在 Oracle 安
装指南中有具体说明。
它也可以在安装之后以独立模式运行,通过与安装过程中类似的方法来配置命
名方法的用法、监听程序、tnsnames.ora 文件中的网络服务名以及目录服务
器的用法。
要启动 Oracle Net Configuration Assistant,请执行以下操作:
• 在 UNIX 上,从 $ORACLE_HOME/bin 运行 netca。
• 在 Windows NT 上,选择 “开始” (Start) > 程序 (Programs) > Oracle -
HOME_NAME > Oracle9i 数据库管理基础 II 1-23
网络管理 (Network Administration) > Oracle Net Configuration Assistant。
Oracle Net Manager

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net Manager


Oracle Net Manager 将配置功能与组件控制组合在一起,从而为配置与管理
Oracle Net 提供一个集成环境。
Oracle Net Manager 是一个帮助您配置和管理 Oracle 网络环境的工具。通过
Oracle Net Manager,您可以使用以下 Oracle Net 功能和组件来进行配置和管理:
• 服务命名 — 您可以创建或修改 tnsnames.ora 文件、目录服务器或 Oracle
Names Server 中有关数据库服务的网络说明。
• 监听程序 — 您可以创建或修改监听程序,它是服务器上的一个进程,用来
接收和响应客户机请求数据库服务时的连接请求。
• 配置文件 — 您可以创建或修改配置文件。配置文件是一组参数,用于决定
客户机怎样连接到 Oracle 网络。您可以确定客户机的命名方法参数、记录、
跟踪、外部命名参数以及 Oracle Advanced Security 的参数等。
• Oracle Names Server — 您可以创建、修改 Oracle Names Server 的配置设置,
或控制 Oracle Names Server。

Oracle9i 数据库管理基础 II 1-24


小结

在这一课中,您应该能够掌握:
• 说明 Oracle 用于管理复杂网络的解决方案:
– Oracle Net Services
– IIOP 和 HTTP 连接性
– Oracle Internet Directory
– Oracle Shared Server
– 连接管理器 (Connection Manager)
• 描述 Oracle 的附加解决方案:
– Oracle Advanced Security
– 异种服务

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 1-25


Oracle9i 数据库管理基础 II 1-26
Oracle Net 体系结构

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成本课的学习后,您应该能达到下列目标:
• 解释 Oracle Net 堆栈式通信体系结构的主要组件
• 解释 Oracle Net 在客户机/服务器连接中的作用
• 描述如何通过 Oracle 联网产品建立 Web 客户机连接

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 2-2


Oracle Net 连接

• Oracle Net 用于根据下列因素在网络上的应用程序间


建立连接:
– 网络配置
– 节点位置
– 应用程序
– 网络协议
• 连接类型可以是:
– 客户机/服务器应用程序
– Java 应用程序
– Web 客户机应用程序

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 2-3


客户机-服务器应用程序连接:
没有中间层
客户机 数据库服务器

客户机应用程序 Oracle RDBMS


(使用 OCI) (使用 OPI)

双任务通用协议 双任务通用协议
(Two Task Common) (Two Task Common)

Oracle Net 协议 Oracle Net 协议


基础层 基础层
Oracle Oracle
Net Net
Oracle 协议 Oracle 协议
支持 支持

网络协议 网络协议

Copyright © Oracle Corporation, 2001. All rights reserved.

客户机/服务器应用程序连接
使用 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 是用于群集服务器环境的事实标准通信协议。

Oracle9i 数据库管理基础 II 2-5


Web 客户机应用程序连接

Web 浏览器可以通过下列方式连接至 Oracle 服务器:


• 将 Web 服务器用作配置有下列驱动程序的中间层:
– JDBC “Oracle 调用接口” (Oracle Call Interface, OCI)
驱动程序
– JDBC 瘦驱动程序

• 使用下列协议直接连接至 Oracle 服务器:


– IIOP
– HTTP

Copyright © Oracle Corporation, 2001. All rights reserved.

Web 应用程序连接
客户机 Web 浏览器通过 Internet与 Oracle 数据库服务器的连接与客户机-服务
器应用程序的连接类似,但体系结构有所不同。通常,客户机上的浏览器可
使用 HTTP 与应用程序 Web 服务器通信,以发出连接请求。该 Web 服务器可
将请求发送给应用程序进行处理。该应用程序使用 Oracle Net 与也配置有
Oracle Net 的 Oracle 数据库服务器通信。
JDBC OCI 驱动程序用来连接 Oracle 客户机,而 JDBC 瘦驱动程序用于不用
Oracle Installation 的客户机,特别是安装了 Java 小程序的客户机。

Oracle9i 数据库管理基础 II 2-6


Web 客户机应用程序连接:
Web 服务器中间层

Java 应用程序 客户机 服务器


或小程序

HTTP Oracle Net

用户

Web 浏览器
应用程序 Oracle
Web 服务器 服务器

Copyright © Oracle Corporation, 2001. All rights reserved.

Web 服务器中间层连接
在以上网络配置中,Internet 上使用 HTTP 协议的 Web 浏览器可以调用应用程
序 Web 服务器上的 Java 小程序或 Java 应用程序。该 Web 服务器,充当安装
了 Oracle Net 或 JavaNet 的客户机,与运行 Oracle Net 的 Oracle 服务器相连。
必须在该 Web 服务器客户机与 Oracle 服务器上安装 Oracle Net 或 JavaNet 才
能建立连接。假定使用的是基础协议连接。

Oracle9i 数据库管理基础 II 2-7


Web 客户机应用程序连接:
Java 应用程序客户机
应用程序 Web
服务器(客户机) 数据库服务器

Java 应用程序 Oracle


RDBMS
JDBC OCI 驱动程序
TTC
TTC

Oracle Net Oracle Net


基础层 基础层

Oracle 协议 Oracle 协议
堆栈 支持

网络协议 网络协议

Copyright © Oracle Corporation, 2001. All rights reserved.

Java 应用程序连接(JDBC OCI 驱动程序)


如果使用 Web 服务器上的 Java 应用程序来启动与 Oracle 服务器的连接,则
该 Web 服务器充当客户机,并且使用 JDBC 驱动程序。JDBC 驱动程序与
Oracle Net 通信以连接到 Oracle 数据库,该数据库也必须配置有 Oracle Net。
与客户机-服务器配置相比,数据在客户机和服务器上的堆栈中传入、传出的
方式并没有任何区别。

Oracle9i 数据库管理基础 II 2-8


Web 客户机应用程序连接:
Java 小程序客户机
数据库服务器

应用程序 Web Oracle


服务器(客户机) RDBMS

Java 小程序 TTC

JDBC 瘦驱动程序
Oracle Net
JavaTTC 基础层

JavaNet OPS

TCP/IP 网络 TCP/IP 网络
协议 协议

Copyright © Oracle Corporation, 2001. All rights reserved.

Java 小程序连接(JDBC 瘦驱动程序)


如果在 Web 服务器上调用 Java 小程序来启动与 Oracle 服务器的连接,则该
Web 服务器充当客户机,并且使用 JDBC 瘦驱动程序。JDBC 瘦驱动程序先与
Java Net 通信,然后才能与必须配置有 Oracle Net 的 Oracle 数据库进行通信。
JDBC 瘦驱动程序使用两种 Java 实施方式,一种是名为 JavaNet 的 Oracle Net
基础层的 Java 实施方式,另一种是名为 JavaTTC 的 TTC 的 Java 实施方式。
与客户机-服务器配置相比,数据在客户机和服务器上的堆栈中传入、传出的
方式并没有任何其它区别。

Oracle9i 数据库管理基础 II 2-9


Web 客户机应用程序连接:
无中间层

客户机
服务器
HTTP

IIOP
Web
浏览器

支持 HTTP
Web 和 IIOP 的
浏览器 Oracle 服务器

客户机

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 HTTP 和 IIOP 进行的 Web 连接


客户机或服务器上不需要安装 Oracle Net,但是,必须对 Oracle 服务器进行配
置以支持这些协议。在此类连接中不需要使用 Web 应用程序服务器。

Oracle9i 数据库管理基础 II 2-10


Web 客户机应用程序连接:
无中间层

数据库服务器

客户机 Oracle
RDBMS
Web 浏览器
HTTP, IIOP
HTTP, IIOP OPS
TCP/IP TCP/IP

Copyright © Oracle Corporation, 2001. All rights reserved.

Web 浏览器直接连接(HTTP 与 IIOP)


可以配置监听程序来接受 HTTP 和 “Internet 间协议” (Internet Inter-Orb
Protocol, IIOP)。这些协议用于连接至包含在数据库内的应用程序。例如,
HTTP 用于访问 “Oracle Internet 文件系统” (Oracle Internet File System),IIOP
用于连接至 Enterprise JavaBeans (EJBs) 和 “公共对象请求中介” (Common
Object Request Broker, CORBA) 应用程序。
客户机或服务器上无需安装 Oracle Net 基础层,但是必须对 Oracle 服务器进
行配置以支持这些协议。

Oracle9i 数据库管理基础 II 2-11


连接概念与术语

• 数据库服务
• 服务名
– 数据库的逻辑表示
– 数据库对客户机的表现方式
• 连接描述符
– 数据库的位置
– 数据库服务的名称
• 监听程序
– 接收客户机连接请求
– 将请求发送给数据库服务器

Copyright © Oracle Corporation, 2001. All rights reserved.

连接概念与术语
对于客户机而言,Oracle 数据库表现为一种服务;即该数据库代表客户机执
行任务。数据库可以具有关联的一种或多种服务,一个数据库可以表现为多
种服务,而一种服务也可以作为多个数据库例程来实现。
服务名 是作为全局数据库名称的字符串,即由安装或创建数据库过程中输入
的数据库名称和域名构成的名称。服务名包含在连接描述符的连接数据部分。
客户机通过使用连接描述符 来连接至数据库服务,该描述符提供了数据库的
位置和数据库服务的名称。
连接描述符的地址部分实际上就是监听程序 的协议地址。要连接至数据库服
务,客户机首先与监听程序进程联系,该进程通常驻留在数据库服务器上。
监听程序接收传入的客户机连接请求,然后将这些请求传送给数据库服务器。
一旦建立连接,客户机与数据库服务器即可直接进行通信。与商业地址的情
况非常相像,也需要将监听程序配置为在协议地址上接受客户机的请求。该
协议地址定义了监听程序正在监听的协议以及其它特定于协议的信息。

Oracle9i 数据库管理基础 II 2-12


连接概念与术语

• 服务注册
– 数据库向监听程序注册信息
– 每个例程可用的服务处理程序

• 服务处理程序
– 连接点
– 调度程序或专用服务器

Copyright © Oracle Corporation, 2001. All rights reserved.

连接概念与术语(续)
连接描述符还指定了数据库服务名,客户机通过该服务名来建立连接。监听
程序知道可使用哪些服务来发送连接请求,因为 Oracle 数据库向监听程序动
态注册该信息。该注册过程称为服务注册。它还为监听程序提供有关数据库
例程和每个例程可用的服务处理程序方面的信息。
服务处理程序 充当 Oracle 数据库服务器的连接点。服务处理程序可以是调度
程序,也可以是专用服务器。

Oracle9i 数据库管理基础 II 2-13


Oracle Net 配置模型

• 本地管理
– 网络中的每台计算机上都具有本地文件

• 集中管理
– 符合 LDAP 的目录服务器
– Oracle Names Server

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net 配置模型


配置信息可存储在本地配置文件或集中资料档案库中。
本地管理
网络地址信息存储在网络中的每台计算机上的 tnsnames.ora 文件中。
集中管理
网络地址信息存储在集中目录服务中,包括符合 LDAP 的目录服务器或
Oracle Names Server。
注:在以后的版本中,将不支持 Oracle Names 作为一种集中命名方法。

Oracle9i 数据库管理基础 II 2-14


Oracle Net 配置文件

• ldap.ora
• listener.ora
• names.ora
• sqlnet.ora
• tnsnames.ora

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Net 配置文件


根据所用的配置模型,可使用下述文件对网络计算机进行配置:
• ldap.ora:位于为集中管理功能配置的数据库服务器和客户机计算机
上,该文件包含访问目录服务器所需的参数。
• listener.ora:位于数据库服务器上,该配置文件用于监听程序,其中
包括:
– 监听程序接受连接请求所基于的协议地址
– 监听程序要监听的数据库服务和非数据库服务
– 监听程序使用的控制参数
• names.ora:位于 Oracle Names Server 上,该文件包含 Oracle Names
Server 的位置、域信息和可选配置参数。
• sqlnet.ora:位于客户机与数据库服务器计算机上。
• tnsnames.ora:位于客户机上,该文件包含映射到连接描述符的网络服
务名,用于本地命名方法。
Oracle9i 数据库管理基础 II 2-15
Oracle Net 配置文件(续)
在 UNIX 上,通常在 $ORACLE_HOME/network/admin 下创建配置文件,
对于 Windows 操作系统,通常为 %ORACLE_HOME%\network\admin。
但是,也可在其它位置创建配置文件,因为 Oracle Net 按照下列顺序搜索配
置文件:
1. 对于 sqlnet.ora 文件,搜索从其执行应用程序的当前工作目录。
2. TNS_ADMIN 环境变量指定的目录。如果未在 Windows NT 上将
TNS_ADMIN
环境变量定义为变量,则它可能位于注册表中。
3. 节点的全局配置目录。对于 Sun Solaris,该目录是 /var/opt/oracle。
Windows NT 没有中央目录,如果要拥有中央配置,则只能使用注册表
中的
TNS_ADMIN。
4. UNIX 上的 $ORACLE_HOME/network/admin 目录,对于 Windows 操
作系统,
则是 ORACLE_HOME\network\admin 目录。

Oracle9i 数据库管理基础 II 2-16


小结

在这一课中,您应该能够掌握:
• 解释 Oracle Net 堆栈式通信体系结构的主要组件
• 解释 Oracle Net 服务在客户机服务器连接中的作用
• 描述如何通过 Oracle 联网产品建立 Web 客户机连接

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 2-17


Oracle9i 数据库管理基础 II 2-18
Oracle Net 服务器端
基本配置

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 了解监听程序如何响应传入的连接
• 描述动态服务注册
• 使用 Oracle Net Manager 配置监听程序
• 使用 “监听程序控制实用程序” (Listener Control
Utility, lsnrctl) 控制监听程序
• 为 IIOP 和 HTTP 连接配置监听程序

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 3-2


监听程序进程

客户机 服务器

监听程序

tnsnames.ora

sqlnet.ora listener.ora

sqlnet.ora

Copyright © Oracle Corporation, 2001. All rights reserved.

监听程序进程的特点
数据库服务器通过监听程序接收来自客户机应用程序的初始连接。
监听程序是在节点上运行的进程,该进程可代表一个或多个数据库监听传入的
连接。以下列出了监听程序的特点:
• 监听程序进程可监听多个数据库
• 多个监听程序可代表一个数据库进行监听,以实现负载均衡
• 监听程序可监听多个协议
• 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 配置中的调度程序
• 将连接重定向到调度程序或服务器进程

Copyright © Oracle Corporation, 2001. All rights reserved.

连接方法
衍生并继承
监听程序将连接传送给衍生的进程或由其继承。该方法只在专用服务器配置中
使用。
直接传送
使用 Oracle Shared Server 时,监听程序将把连接传送给调度程序。该方法对于
专用服务器进程不可用。
重定向(消息)
如果使用 Shared Server,监听程序将把连接重定向到调度程序。
注:本课后面将详细讨论每种连接类型。
直接传送与重定向的透明性
不论连接会话是传送、重定向给现有进程还是由其继承,该会话对于用户都是
透明的。只有通过打开跟踪并分析产生的跟踪文件才能检测到该会话。

Oracle9i 数据库管理基础 II 3-4


衍生、继承和直接传送连接

客户机 衍生的 服务器


服务器
进程
5

3
4
2

1
监听程序

Copyright © Oracle Corporation, 2001. All rights reserved.

衍生、继承和直接传送连接
接收到连接请求时,监听程序可能会衍生专用的服务器进程,并将连接传送给
该进程或由其继承。该方法的使用取决于所用操作系统是否支持网络终端继承
性。当监听程序衍生专用服务器进程并由该服务器进程继承连接时,即称为继
承会话。此时将按顺序出现下列事件:
1. 客户机使用配置的协议建立与监听程序的连接,并向该监听程序发送一
个 CONNECT 数据包。
2. 监听程序检查是否已定义 SID。如果已经定义,监听程序将分派或衍生
一个新进程来处理该连接。此时会在监听程序和新的服务器进程之间建
立继承连接,以传送进程初始化信息。传送完毕后,继承连接关闭。请
注意,新的服务器进程会继承 TCP 套接字。
3. 服务器进程将 RESEND 数据包发送回客户机。
4. 继续向新衍生的专用服务器进程发送新的 CONNECT 数据包。
5. 该专用服务器进程接受传入的连接并将 ACCEPT 消息转发回客户机。

Oracle9i 数据库管理基础 II 3-5


继承和直接传送连接(续)
如果由于操作系统或协议的原因,而无法在同一机器上的两个不同进程之间
传送连接,则必须进行重定向。
注:客户机断开连接时,客户机的专用服务器进程将关闭。
使用 Oracle Shared Server 的直接传送连接
当操作系统以上述方式处理共享服务器连接时,即称为直接传送连接。二者
的唯一区别是监听程序不衍生调度程序进程。但是,连接方法是相同的。
注:如果监听程序在用于连接的远程节点上选择共享服务器调度程序,则不
能进行直接传送。这是使用负载均衡技术的 Real Application Clusters 数据库
中的典型情况,在该数据库中,一个节点上的监听程序可以选择另一个节点
上的调度程序。
Windows 平台注意事项
Windows NT 在缺省情况下不支持网络终端的继承性。要启用该功能,必须将
注册表条目 USE_SHARED_SOCKET 设为 TRUE,才允许多个连接使用一个单
一套接字。当该值为 FALSE (缺省值)时,将不会进行继承连接,而将启动
重定向会话。
如果 USE_SHARED_SOCKET 条目设为 TRUE,Windows NT 可以启动继承连
接,但是需注意几点事项。如果启动了多个连接,并且因某种原因监听程序
已经停止,则直到清除了这些连接后,监听程序才能重新启动。这是因为现
有连接正在使用监听程序执行监听需使用的同一端口号。这是 Microsoft 使用
Widows 套接字 API (WINSOCK2) 实施 TCP/IP 的局限性。

Oracle9i 数据库管理基础 II 3-6


重定向会话

客户机 服务器
服务器或
调度程序
6 进程
5 3
端口

4 2
1 端口
监听程序

Copyright © Oracle Corporation, 2001. All rights reserved.

重定向会话
当不具备继承或直接传送连接的条件时,将建立重定向会话。下列步骤概述了
建立该类连接的方法:
1. 客户机使用配置的协议建立与监听程序的连接,并向该监听程序发送一
个 CONNECT 数据包。
2. 监听程序检查是否定义了 SID。如果已经定义,监听程序将衍生一个新
线程或新进程以为新连接提供服务。然后在监听程序和新进程/线程间建
立 IPC 连接。
3. 新进程/线程从用户定义的空闲端口列表选择一个新的 TCP/IP 端口,然后
将该信息传送回监听程序。
4. 监听程序将该新端口插入 REDIRECT 数据包并将其发送回客户机,客户
机和监听程序间的源 TCP 套接字将重置。
5. 根据 REDIRECT 数据包中指定的重定向地址建立新的 TCP 连接,然后将
CONNECT 数据包转发给专用服务器进程。

Oracle9i 数据库管理基础 II 3-7


重定向会话(续)
6. 专用服务器进程最终接受传入的连接并将 ACCEPT 消息转发回客户机。
如果重定向会话是使用共享服务器建立的,且正在运行的共享服务器上还有
容量,则不必按步骤 2 所述衍生新的进程。

Oracle9i 数据库管理基础 II 3-8


服务配置和注册

可以通过两种方式配置监听程序:
• 动态服务注册
– 无需在 listener.ora 文件中进行配置
– 监听程序依赖 PMON 进程

• 静态服务配置
– 用于 Oracle8 及更早版本
– 需要配置 listener.ora
– 对 Oracle Enterprise Manager 和其它服务是必需的

Copyright © Oracle Corporation, 2001. All rights reserved.

配置监听程序
动态服务注册
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 参数,该参数
用于指定有关监听程序所服务的数据库的信息。如果使用的管理工具要求使用该
参数,则仍需要进行设置。
• 启用连接时故障转移功能。
• 启用共享服务器的连接负载平衡功能。

Oracle9i 数据库管理基础 II 3-10


静态服务注册:
listener.ora 文件

安装 Oracle 软件时,会为初始数据库创建具有下列缺省设
置的 listener.ora 文件:
• 监听程序名 LISTENER
• 端口 1521
• 协议 TCP/IP 和 IPC
• SID 名 缺省例程
• 主机名 缺省主机名

Copyright © Oracle Corporation, 2001. All rights reserved.

listener.ora 文件
listener.ora 文件用来为静态服务注册配置监听程序。listener.ora 文
件必须与
监听程序驻留在同一节点或计算机上。
listener.ora 文件包含下列各项的配置信息:
• 监听程序名
• 监听程序地址
• 使用监听程序的数据库
• 监听程序参数

Oracle9i 数据库管理基础 II 3-11


静态服务注册:
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)))

Copyright © Oracle Corporation, 2001. All rights reserved.

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 的名称。

Oracle9i 数据库管理基础 II 3-13


listener.ora 参数
注:缺省值显示在参数名后面的括号中。
参数 说明
ADDRESS 定义一个单一的监听程序协议地址。
LOG_DIRECTORY_listener_name 控制保存日志文件的目录。
(Unix: $ORACLE_HOME/network/log
NT: ORACLE_HOME\network\log )
LOG_FILE_listener_name 指定将日志信息写入其中的文件名。
(listener.log)
LOGGING_listener_name 打开或关闭事件记录。
(ON)
PASSWORDS_listener_name 设置非加密的验证口令,该口令针对的
是受保护的命令的 “监听程序控制实用
程序” (Listener Control Utility, LSNRCTL)。

SAVE_CONFIG_ON_STOP_listener_ 如果该参数设为 TRUE,通过 LSNRCTL


name SET 命令所做的任何更改都成为永久的
(FALSE) 更改。
SID_LIST_listener_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) 跟踪信息

Oracle9i 数据库管理基础 II 3-14


静态服务注册:
创建监听程序

Copyright © Oracle Corporation, 2001. All rights reserved.

创建附加监听程序
在服务器上安装企业版或标准版时,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) 选择其
配置服务

Copyright © Oracle Corporation, 2001. All rights reserved.

配置数据库服务
1. 从您的监听程序内的下拉列表选择 “数据库服务” (Database Services)。
2. 单击 “添加数据库” (Add Database) 按钮。
3. 在相应的字段中输入全局数据库名称、Oracle 主目录和 SID。
4. 从 Net Manager 的 “文件” (File) 菜单选择 “保存网络配置” (Save Network
Configuration)。

Oracle9i 数据库管理基础 II 3-16


事件记录与跟踪

Copyright © Oracle Corporation, 2001. All rights reserved.

配置监听程序以记录和跟踪事件
1. 在 Net Manager 内,从您的监听程序的下拉菜单选择 “常规参数” (General
Parameters)。
2. 单击 “事件记录与跟踪” (Logging & Tracing) 选项卡。
3. 通过选择 “启用事件记录” (Logging Enabled) 选项按钮启用事件记录。
4. 输入日志文件的路径和文件名。
5. 从 Oracle Net 的 “文件” (File) 菜单选择 “保存网络配置” (Save Network
Configuration)。
6. 对跟踪重复上述步骤(如果需要)。注意,事件记录和跟踪(尤其是跟
踪)都会占用大量磁盘空间,因此应对其进行监视。跟踪应仅在需要时
使用。

Oracle9i 数据库管理基础 II 3-17


动态服务注册:
配置注册

要确保服务注册可用,必须配置下列初始化参数:
• SERVICE_NAMES
• INSTANCE_NAME

Copyright © Oracle Corporation, 2001. All rights reserved.

配置服务注册
Oracle9i 或 Oracle8i 例程使用动态服务注册。注册由每个数据库例程的 PMON
进程执行,每个例程在数据库初始化参数文件中都有必需的配置。动态服务注
册不要求在 listener.ora 文件中进行任何配置。
动态服务注册在数据库初始化文件中配置。监听程序配置必须与数据库初始化
文件中的信息同步。
必须配置下列初始化参数,才能进行服务注册:
• SERVICE_NAMES:为该例程连接的数据库服务指定一个或多个名称。可
以指定多个服务名,以区别同一数据库的不同用途。
• INSTANCE_NAME:指定例程名。在单例程数据库系统中,例程名通常与
数据库名相同。
示例
SERVICE_NAMES=sales.us.oracle.com
INSTANCE_NAME=salesdb

Oracle9i 数据库管理基础 II 3-18


动态服务注册:
向监听程序注册信息

• 缺省情况下,PMON 向 TCP/IP 的缺省本地地址 — 端口


1521 — 处的服务器上的本地监听程序进行注册。
• 在下列情况下,PMON 将向非缺省监听程序注册:
– 已经定义 LOCAL_LISTENER 初始化参数
– 已为 Oracle Shared Server 定义 DISPATCHERS 初始化参
数的 LISTENER 属性

Copyright © Oracle Corporation, 2001. All rights reserved.

服务注册
缺省情况下,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)))

Oracle9i 数据库管理基础 II 3-19


为 Oracle9i JVM 配置监听程序:
IIOP 和 HTTP

• 可对监听程序进行配置,以接受使用 IIOP 和 HTTP 的客


户机的连接请求。
• 如果数据库是 Oracle8i 或更早版本,即使使用 Oracle9i
监听程序,也应使用 “静态监听程序注册” (Static
Listener Registration)。
• 如果监听程序和数据库都是 Oracle9i,则将在服务注册
过程中进行动态配置。

Copyright © Oracle Corporation, 2001. All rights reserved.

为 IIOP 和 HTTP 静态配置监听程序


与 Oracle9i JVM 的连接需要使用 TCP/IP 或具有 SSL 功能的 TCP/IP 监听协议
地址。如果监听程序和数据库都是 Oracle9i,则在服务注册过程中进行动态配
置。如果数据库是 Oracle8i 或更早版本,即使使用的是 Oracle9i 监听程序,也
应通过下列过程静态配置监听地址。
1. 启动 Oracle Net Manager。
2. 在导航器窗格,展开 “本地” (Local) > “监听程序” (Listeners)。
3. 选择一个现有的监听程序。
4. 从右窗格的列表选择 “监听位置” (Listening Locations)。
5. 选择 “添加地址” (Add Address)。出现一个新地址选项卡。
6. 从 “协议” (Protocol) 列表选择 TCP/IP 或具有 SSL 功能的 TCP/IP 协议。
7. 在 “主机” (Host) 字段中输入数据库的主机名。
8. 如果所选协议是 TCP/IP,则在 “端口” (Port) 字段中输入端口 2481,如果
所选协议是具有 SSL 功能的 TCP/IP,则在“端口” (Port) 字段中输入端口
2482。
9. 选择 “将此地址静态地专用于 JServer 连接”II (Statically
Oracle9i 数据库管理基础 3-20 dedicate this address
for JServer connections)。
为 IIOP 和 HTTP 静态配置监听程序(续)
10. 选择 “文件” (File) > “保存网络配置” (Save Network Configuration)。
用下列信息更新 listener.ora 文件:
listener=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=2481))
(PROTOCOL_STACK=
(PRESENTATION=giop)
(SESSION=raw))))

Oracle9i 数据库管理基础 II 3-21


“监听程序控制实用程序”
(Listener Control Utility, LSNRCTL)

“监听程序控制实用程序” (Listener Control Utility) 命令可


从命令行或 LSNRCTL 提示符下发出。
• UNIX 命令行语法:
$ lsnrctl <command name>

• 提示符语法:
LSNRCTL> <command name>

• 控制非缺省监听程序
LSNRCTL> set current_listener listener02

Copyright © Oracle Corporation, 2001. All rights reserved.

“监听程序控制实用程序” (Listener Control Utility)


发出 lsnrctl 命令时,除非执行了 SET LISTENER 命令,否则,该命令将
对缺省监听程序 “listener” 进行操作。控制其它监听程序的另一种方式是将监
听程序名用作命令修改符:
$ lsnrctl start listener02
Windows NT 平台命令行语法
在 Windows NT 操作系统上,使用以下命令启动 “监听程序控制实用程序”
(Listener Control Utility):
C:\> lsnrctl <command name>

Oracle9i 数据库管理基础 II 3-22


LSNRCTL 命令

使用以下命令控制监听程序:
• START [listener_name]
• STOP [listener_name]

Copyright © Oracle Corporation, 2001. All rights reserved.

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 提供有关监听程序的基本状态信息,包括监听程序配置
设置的概要、监听协议地址以及向监听程序注册的服务
的概要。

注:也可通过 “Oracle Enterprise Manager 控制台” (Oracle Enterprise Manager


Console) 获取监听程序的状态。

Oracle9i 数据库管理基础 II 3-24


LSNRCTL SET 和 SHOW 修改符

• 使用 SET 命令更改监听程序参数:

LSNRCTL> SET trc_level ADMIN

• 使用 SHOW 命令显示参数的值:
LSNRCTL> SHOW trc_directory

Copyright © Oracle Corporation, 2001. All rights reserved.

SET 和 SHOW 修改符


SET 修改符用来更改 “监听程序控制实用程序” (Listener Control Utility) 环境内
的监听程序参数。
SHOW 修改符用来显示监听程序参数集的值。

Oracle9i 数据库管理基础 II 3-25


SET 和 SHOW 修改符(续)
命令 说明
SET CURRENT_LISTENER 使用多个监听程序时,用来设置或显示参
数。
SET LOG_DIRECTORY 设置日志文件的非缺省位置或将位置设置恢
复为缺省值。
SET LOG_FILE 设置日志文件的非缺省名称。
SET LOG_STATUS 打开或关闭监听程序事件记录。
SET PASSWORD 更改从 LSNRCTL 实用程序发送给监听程序
进程的只用于验证目的的口令。
SET SAVE_CONFIG_ON_STOP 如果该参数设置为启用,则永久保存由
LSNRCTL SET 命令所做的所有更改。在监
听程序即将退出之前保存所有参数。
SET TRC_DIRECTORY 设置跟踪文件的非缺省位置或将位置设置恢
复为缺省值。
SET TRC_FILE 设置跟踪文件的非缺省名称。
SET TRC_LEVEL 打开对监听程序的跟踪。

注:SHOW 命令具有除 SET PASSWORD 以外的 SET 命令的相应参数。

Oracle9i 数据库管理基础 II 3-26


小结

在这一课中,您应该能够掌握:
• 使用 Oracle Net Manager 配置监听程序
• 使用 “监听程序控制实用程序” (Listener Control Utility,
lsnrctl) 控制监听程序
• 为 IIOP 和 HTTP 连接配置监听程序

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 3-27


练习 3 概览

此练习涉及以下主题:
• 配置非缺省 LISTENER
• 启动与停止监听程序
• 查看 LISTENER 日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 3-28


练习 3
1. 使用 Oracle Net Manager 创建监听程序 listenernn(nn 是教师分配给您的一
个两位数字编号)。必须按教师指定的步骤为服务器配置监听程序。必须
将监听程序配置为只用于 TCP/IP 协议,并且监听程序必须监听教师提供的
端口上的传入连接。
注:如果客户机 PC 上安装了 Oracle9i Oracle Net 软件,将使用 Oracle Net
Manager 在客户机 PC 上创建监听程序配置文件,然后在以后的步骤中,通
过 FTP 或类似的文件传输应用程序将该文件传输到服务器。
对于本练习和后续网络练习,TNS_ADMIN 环境变量必须 指向您的 UNIX 帐
户所在的主机上的 $HOME/NETWORK/ADMIN 目录。
可以在 UNIX 提示符下发出以下命令以验证设置:
echo $TNS_ADMIN
或者可查看 .profile 文件(位于您的主目录下)并搜索以下条目:
TNS_ADMIN=$HOME/NETWORK/ADMIN
export TNS_ADMIN
如果以上条目不在该文件中,可编辑该文件并添加上述行。注销然后重新
注册以使更改生效。
如果您的 PC 上没有安装 Oracle9i 客户机软件,则必须编辑
listener.ora。在您的 $HOME/STUDENT/LABS 目录下可找到联网文件
示例。示例文件的扩展名为 .sam。将
$HOME/STUDENT/LABS/listener.sam 复制为
$TNS_ADMIN/listener.ora 并使用 vi 编辑该文件。
$ cd $TNS_ADMIN
$ cp $HOME/STUDENT/LABS/listener.sam listener.ora
2. 如果已在您的 PC 上创建了 listener.ora 文件,可使用 FTP(ASCII 模
式)将其传输到您的 UNIX 服务器上的 $TNS_ADMIN 目录下。您的 PC 客
户机上的该文件将位于 <ORACLE_HOME>\NETWORK\ADMIN 目录下。您需
要编辑该文件以更改日志目录的位置。
3. 验证您的文件中的配置详细信息。
4. 通过在操作系统提示符下发出 lsnrctl start listenernn 命令启动
监听程序。如果遇到问题,可使用 lsnrctl 命令输出监听程序日志文件排
除故障。
5. 停止,然后重新启动您的数据库例程。
6. 查看监听程序日志文件的内容。该例程是否已经注册?为什么没有注册?
Oracle9i 数据库管理基础 II 3-29
Oracle9i 数据库管理基础 II 3-30
命名方法配置

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 描述主机命名与本地服务名称解析之间的区别
• 使用 Oracle Net Configuration Assistant 配置:
– 主机命名方法
– 本地命名方法
– 网络服务名

• 排除简单连接出现的故障

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 4-2


命名方法概览

• 客户机应用程序在试图连接数据库服务时,需要借助
命名方法将连接标识符解析为连接描述符。
• Oracle Net 提供了五种命名方法:
– 主机命名
– 本地命名
– 目录命名
– Oracle Names
– 外部命名

Copyright © Oracle Corporation, 2001. All rights reserved.

命名方法概览
Oracle Net 提供了五种命名方法:
• 主机命名:使 TCP/IP 环境中的用户能够通过其现有名称解析服务来解析名称
• 本地命名:使用在每个客户机的 tnsnames.ora 文件中配置和存储的信息查找网络
地址
• 目录命名:将数据库服务或网络服务名解析为连接描述符,该描述符存储在中央目录
服务器中
• Oracle Names:这是由 Oracle Names 服务器系统构成的 Oracle 目录服务,这些服务器
可以为网络上的每个服务提供由名称到地址的解析
• 外部命名:使用受支持的第三方命名服务
对于只有几个数据库的小型组织来说,应使用主机命名将名称存储在现有名称解析服务
中,也可使用本地命名将名称存储在客户机上的 tnsnames.ora 文件中。
对于有多个数据库的大型组织来说,应使用目录命名将名称存储在集中管理的符合 LDAP
的目录服务器中。
您将在本课中学到有关主机命名和本地命名的更多内容。

Oracle9i 数据库管理基础 II 4-3


主机命名

在下列情况下,客户机可使用主机名来连接服务器:
• 使用 Oracle Net Services Client 软件连接 Oracle 数据
库服务
• 使用 TCP/IP 协议建立客户机与服务器的连接
• 主机名通过 DNS 或本地的 /etc/hosts 文件等 IP 地址
转换机制来解析
• 不使用 “连接管理器” (Connection Manager) 或安全选
项等高级功能

Copyright © Oracle Corporation, 2001. All rights reserved.

主机命名方法
主机命名方法具有下列优点:
• 需要的用户配置最少。用户只需提供主机名即可建立连接。
• 无需创建与维护本地名称配置文件 (tnsnames.ora)。
• 无需了解 Oracle Names 或 Oracle Internet Directory 管理过程。
主机命名在每个节点上只能标识一个 SID,而使用其它命名方法还可标识其它 SID。
如果在主机 (hosts) 文件中对多个全局名称设置了别名,让它们指向同一 IP 地址,这样即
使这些数据库位于同一节点上,也可使用主机命名连接任意数据库。

Oracle9i 数据库管理基础 II 4-4


主机命名:客户端

客户机 服务器

TCP/IP


names.directory_path = (HOSTNAME)
sqlnet.ora

listener.ora

Copyright © Oracle Corporation, 2001. All rights reserved.

客户端要求
如果使用主机命名方法,则必须在客户机上安装 TCP/IP 协议。此外,还必须安装 Oracle
Net Services 和 TCP/IP 协议适配器。
主机名通过域名服务 (Domain Name Services, DNS)、网络信息服务 (Network Information
Services, NIS) 或集中维护的 TCP/IP 主机文件等 IP 地址转换机制来解析。使用主机命名方
法之前,必须先对客户端进行如上配置。

Oracle9i 数据库管理基础 II 4-5


主机命名:服务器端

客户机 服务器

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

Copyright © Oracle Corporation, 2001. All rights reserved.

服务器端要求
如果使用主机命名方法,除了客户机,还必须在服务器上也安装 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 的值。
主机名必须与在客户机中指定的连接字符串匹配。其它信息还包括要连接的数据库的信息。

Oracle9i 数据库管理基础 II 4-6


主机命名示例

• 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

Copyright © Oracle Corporation, 2001. All rights reserved.

主机命名示例
示例
如果客户端与服务器端已满足所有要求,则可从客户机发出连接请求,此操作可使您与例
程 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>

Oracle9i 数据库管理基础 II 4-7


命名方法配置

Copyright © Oracle Corporation, 2001. All rights reserved.

命名方法配置
可使用 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)。

Oracle9i 数据库管理基础 II 4-8


选择主机命名方法

Copyright © Oracle Corporation, 2001. All rights reserved.

选择主机命名方法
确保 “主机名” (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)

Oracle9i 数据库管理基础 II 4-9


本地命名

客户机 服务器

sqlnet.ora

tnsnames.ora listener.ora

Copyright © Oracle Corporation, 2001. All rights reserved.

本地命名方法
本地命名的优点:
• 提供了一种相对简单明了的解析服务名地址的方法。
• 对于使用不同协议的各个网络,可跨网络解析服务名。
• 可使用图形配置工具轻松配置。
本地命名方法要求网络服务名存储在 tnsnames.ora 文件中。建议不要对此文件进行
编辑。但是,使用 Oracle Net Configuration Assistant 可轻松地添加网络服务名。

Oracle9i 数据库管理基础 II 4-10


选择本地命名方法

Copyright © Oracle Corporation, 2001. All rights reserved.

选择本地命名方法
可用命名方法显示在左侧窗口中,所选命名方法显示在右侧窗口中。缺省情况下,会预先
选择 “本地” (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)

Oracle9i 数据库管理基础 II 4-11


配置本地网络服务名

Copyright © Oracle Corporation, 2001. All rights reserved.

网络服务名配置
将 “本地” (Local) 选作命名方法后,就可以通过从 Oracle Net Services Configuration
Assistant 选择 “本地网络服务名配置” (Local Net Service Name Configuration) 选项按钮来配
置网络服务名。
网络服务名 是一个简短且便于记忆的名称,它映射为网络地址,包含在 tnsnames.ora
文件中存储的连接描述符中。用户只需了解正确的服务名即可建立连接,而无需了解完整
的连接描述符。

Oracle9i 数据库管理基础 II 4-12


处理网络服务名

Copyright © Oracle Corporation, 2001. All rights reserved.

添加网络服务名
使用下一个窗口可创建、重新配置、删除、重命名或测试网络服务名。本示例中选择的
是 “添加” (Add) 选项按钮。

Oracle9i 数据库管理基础 II 4-13


指定 Oracle 数据库的版本

Copyright © Oracle Corporation, 2001. All rights reserved.

指定数据库版本
指定数据库或服务是 Oracle8i 还是更高版本。较早的 Oracle 版本要求对监听程序进行额
外配置,而 Oracle8i 或 9i 数据库和服务则不要求。

Oracle9i 数据库管理基础 II 4-14


数据库服务名

Copyright © Oracle Corporation, 2001. All rights reserved.

指定服务名
对于 Oracle8i 或 Oracle9i 数据库来说,接下来您必须输入标识数据库服务的数据库服务
名。名称长度不能超过 9 个字符。该服务名通常是全局数据库名称,它由数据库名称
(DB_NAME) 和域 (DB_DOMAIN) 组合而成。全局数据库名称是数据库的缺省服务名,
这是由初始化文件中的 SERVICE_NAMES 参数指定的。

Oracle9i 数据库管理基础 II 4-15


网络协议

Copyright © Oracle Corporation, 2001. All rights reserved.

选择网络协议
现在必须指定连接使用的网络协议。Oracle Net Service Configuration Assistant 中可用的协
议只反映先前已经安装的那些协议。未安装的协议不出现在 Configuration Assistant 提供的
协议列表中。
注:在使用 Oracle9i 后,SPX 不再是一种受支持的协议了。

Oracle9i 数据库管理基础 II 4-16


主机名和监听程序端口

Copyright © Oracle Corporation, 2001. All rights reserved.

配置主机名和端口号
输入主机名和端口号,然后单击 “下一步” (Next)。
主机名
输入您要连接并与之通信的数据库所在的机器的全限定名称。
端口号
输入端口号,Oracle Net 监听程序需要在此端口监视发送给服务器(主机)的连接请求。
缺省情况下,Configuration Assistant 将监听程序端口号设为 1521。如果需要,可以指定备
用端口号。

Oracle9i 数据库管理基础 II 4-17


测试连接

Copyright © Oracle Corporation, 2001. All rights reserved.

测试服务信息
现在可测试连接信息。选择 “是,执行测试” (Yes, perform a test) 选项按钮,然后单击 “完
成” (Finish) 继续操作。

Oracle9i 数据库管理基础 II 4-18


连接测试的结果

Copyright © Oracle Corporation, 2001. All rights reserved.

测试结果
如果输入的数据是正确的,连接便会成功。如果不正确,“详细资料” (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)

Oracle9i 数据库管理基础 II 4-19


网络服务名

Copyright © Oracle Corporation, 2001. All rights reserved.

选择网络服务名
接下来输入网络服务名的名称。缺省情况下,Configuration Assistant 提供的名称是最初输
入的数据库服务名。如果需要,也可输入一个更有意义或更具描述性的名称。单击 “下一
步” (Next) 继续操作。

Oracle9i 数据库管理基础 II 4-20


保存网络服务名

Copyright © Oracle Corporation, 2001. All rights reserved.

保存网络服务名
选择 “否” (No) 选项按钮并单击 “下一步” (Next) 后,缺省情况下,服务名将保存到位于
$ORACLE_HOME/network/admin 目录下的 tnsnames.ora 文件中。

Oracle9i 数据库管理基础 II 4-21


生成的文件:
tnsnames.ora

# TNSNAMES.ORA Network Configuration


# File:/u03/ora9i/rel12/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
MY_SERVICE.US.ORACLE.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)(HOST = stc-sun02.us.oracle.com)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TEST.us.oracle.com)
)
)

Copyright © Oracle Corporation, 2001. All rights reserved.

tnsnames.ora 文件
tnsnames.ora 文件用来存储网络服务名。在 UNIX 上,该文件的缺省位置是
$ORACLE_HOME/network/admin;在 Windows NT 上,该文件的缺省位置是
%ORACLE_HOME%\network\admin。

Oracle9i 数据库管理基础 II 4-22


tnsnames.ora 文件(续)
tnsnames.ora 包含如下内容:

参数 说明
MY_SERVICE.US. … 网络服务名和域名。

DESCRIPTION 说明连接描述符的关键字。说明总是以同样的形式出现。

ADDRESS 指定地址的关键字。如果指定了多个地址,则在 ADDRESS 前


使用关键字 ADDRESS_LIST。

PROTOCOL 指定使用的协议。

HOST TCP/IP 协议的特定信息-指定服务器的主机名或 IP 地址。其它


协议可以有不同的指定。

PORT TCP/IP 协议特定信息-指定服务器端监听程序正在监听的端口号。

CONNECT_DATA 指定要连接的数据库服务。

Oracle9i 数据库管理基础 II 4-23


生成的文件:
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= (TNSNAMES, HOSTNAME)
SQLNET.EXPIRE_TIME=0

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>

Copyright © Oracle Corporation, 2001. All rights reserved.

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 客户机工具从客户
机连接到服务器。

Oracle9i 数据库管理基础 II 4-24


排除客户端故障

下面是在客户端出现问题时显示的错误代码:

ORA-12154 “TNS:could not resolve service name”


ORA-12198 “TNS:could not find path to destination”
ORA-12203 “TNS:unable to connect to destination”
ORA-12533 “TNS:illegal ADDRESS parameters”
ORA-12541 “TNS:no listener”

Copyright © Oracle Corporation, 2001. All rights reserved.

故障排除
下面将对常见错误以及纠正这些错误的方式加以说明。
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 符号 (@)。

Oracle9i 数据库管理基础 II 4-25


故障排除(续)
ORA-12198:“TNS:找不到指向目标的路径” 和
ORA-12203:“TNS:无法连接目标”
原因:客户机找不到所需数据库。
操作
1. 核实已正确输入要连接的数据库的服务名。
2. 核实 TNSNAMES.ORA 文件的连接描述符中的服务名 ADDRESS 参数是正确的。
3. 核实 TNSNAMES.ORA 文件已存储在 TNS_ADMIN 环境变量定义的目录中。
4. 核实远程节点上的监听程序已经启动并正在运行。如果未启动,可使用 “监听程
序控制实用程序” (Listener Control utility) 启动监听程序。
5. 如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。
ORA-12533:“TNS:ADDRESS 参数非法”
原因:tnsnames.ora 文件内指定的连接描述符的 ADDRESS 段中的协议特定参数不
正确。
操作:有关针对不同协议的关键字的详细信息,请参考适用于您的平台的 Oracle 操作
系统文档。
ORA-12541:TNS:没有监听程序
原因:无法与远程节点上的监听程序取得联系。
操作:核实远程节点上的监听程序已经启动。可使用 “监听程序控制实用程序”
(Listener Control Utility) 的 STATUS 命令检查监听程序的状态。如果需要,还可使用
START 命令启动该监听程序。

Oracle9i 数据库管理基础 II 4-26


小结

在这一课中,您应该能够掌握:
• 描述主机命名与本地服务名称解析之间的区别
• 使用 Oracle Net Configuration Assistant 配置:
– 主机命名方法
– 本地命名方法
– 网络服务名

• 排除简单连接出现的故障

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 4-27


练习 4 概览

此练习涉及以下主题:
• 本地命名配置
• 网络服务名配置
• 测试配置

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 4-28


练习 4
1. 使用 Oracle Net Manager 配置客户机以使用本地命名方法。选择 TNSNAMES 作为
唯一 命名方法。如果不能确定客户机的名称,可向教师询问如何获取。
手动配置
如果从您的客户机无法连接到 Oracle9i,可从 UNIX 主机手动配置并测试客户机连
接。切换到 $TNS_ADMIN 目录,并将 $HOME/STUDENT/LABS/sqlnet.sam 和
$HOME/STUDENT/LABS/tnsnames.sam 分别复制到 sqlnet.ora 和
tnsnames.ora。使用 vi 手动编辑这两个文件。
2. 查看通过 Oracle Net Manager 创建的 sqlnet.ora 和 tnsnames.ora 文件的内
容。在这些文件中您所提供的信息是如何记录的?
3. 如果已手动编辑这些文件,可使用 tnsping 测试是否可连接服务。
4. 使用 SQL*Plus 并以 system/manager 身份连接服务器,通过查询 V$INSTANCE
视图核实是否已与正确的例程建立连接。

Oracle9i 数据库管理基础 II 4-29


Oracle9i 数据库管理基础 II 4-30
Oracle Shared Server
的使用和配置

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 识别 Oracle Shared Server 的各个组件
• 描述 Oracle Shared Server 的体系结构
• 配置 Oracle Shared Server
• 了解和说明相关数据字典视图的用处

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 5-2


服务器配置

• 专用服务器进程
• 共享服务器进程

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle 服务器配置选项
Oracle 创建服务器进程以处理与某例程相连的用户进程的请求。服务器进程可以是专用服
务器 进程(一个服务器进程只为一个用户进程服务),也可以是共享服务器 进程(一个
服务器进程可以为多个用户进程服务)。共享服务器进程是 Oracle Shared Server 体系结构
的一部分。

Oracle9i 数据库管理基础 II 5-3


专用服务器进程

客户机 服务器

例程
SGA

用户进程 服务器进程

SMON DBWn PMON CKPT LGWR ARCn

Copyright © Oracle Corporation, 2001. All rights reserved.

专用服务器进程
• 用户进程和服务器进程是分开的。
• 每个用户进程都有自己的服务器进程。
• 用户进程和服务器进程可在不同的机器上运行,以利用分布式处理的优势。
• 用户进程和服务器进程的比率是 1 比 1。
• 即使用户进程不发出数据库请求,专用服务器也存在,只是保持空闲状态。
此处所用的程序接口取决于用户进程和专用服务器进程是否在同一台机器上。如果在同一
机器上,进程间的程序接口将使用主机操作系统的交互进程通信 (IPC) 机制。

Oracle9i 数据库管理基础 II 5-4


Oracle Shared Server

共享服务器进程 例程
SGA
Snnn

Snnn

Snnn

调度程序 调度程序 调度程序


D001 D002 D003

数据库服务器
客户机
用户进程 用户进程

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle Shared Server


Oracle Shared Server 配置使得共享服务器、专用服务器及组合在一起的用户和服务器能够
在同一例程内存在。
• 例如,在一个联机事务处理环境(如订单录入应用产品)中,用户通过应用程序接口
输入数据,服务器进程可能会在 90% 以上的连接时间内处于空闲状态。
• Oracle Shared Server 则可以提高服务器的效率,因为任何服务器都可处理传入的请
求,而不是等待特定服务器处理有关请求的工作。
• 在具备相同数目的服务器的情况下,由于 Oracle Shared Server 体系结构中的用户共享
服务器进程,因此,使用 Oracle Shared Server 可支持的用户比在专用服务器配置中可
支持的用户多得多,而需要配置的服务器进程却更少。
在 Oracle Shared Server 体系结构下,客户机-用户进程最终会与调度程序 建立连接。
PMON 进程向监听程序注册调度程序的位置和负载,使监听程序能够将请求转发给占用
率最低的调度程序。服务注册不要求在 listener.ora 文件中进行配置。
一个调度程序可同时支持多个客户机连接。每个客户机连接都使用一个虚拟线路。虚拟
线路 是一块共享内存,调度程序将它用于客户机数据库连接请求与答复。

Oracle9i 数据库管理基础 II 5-5


Oracle Shared Server (续)
请求到达时,调度程序会将虚拟线路置入一个公共队列。共享服务器从公共队列选择该虚
拟线路并为请求服务,然后在尝试从公共队列检索另一个虚拟线路前取消该虚拟线路。这
种方法使得少量的服务器进程就能够为大量客户机服务。
注:在 Windows NT 上,调度程序只能使用 TCP/IP 协议。

Oracle9i 数据库管理基础 II 5-6


Oracle Shared Server 的优点

• 减少针对某一例程的进程数目
• 增加可服务的用户数
• 实现负载平衡
• 减少空闲服务器进程的数目
• 减少内存占用和系统开销

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Shared Server


Oracle Shared Server 体系结构通过减少所需的服务器进程的数目减少了内存占用。例如,
对于使用专用服务器的 100 个用户来说,需要 100 个服务器进程。而在使用 Oracle Shared
Server 的情况下,对于 100 个用户来说,可能只需要 10 个共享服务器进程,大大降低了
系统资源的耗用。
Oracle Shared Server 体系结构要求 Oracle Net Services。要使用 Oracle Shared Servers 的用
户进程必须通过 Oracle Net Services 连接,即使用户进程与 Oracle 例程在同一机器上也是
如此。

Oracle9i 数据库管理基础 II 5-7


同时使用专用服务器和
Oracle Shared Server

TEST.world =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = stc-sun02)
(PORT = 1521)
)

(CONNECT_DATA=(SERVICE_NAME=TEST.us.oracle.com)
(SERVER=DEDICATED)
)
)

Copyright © Oracle Corporation, 2001. All rights reserved.

同时使用专用服务器和 Oracle Shared Server


何时使用专用服务器
• 提交批作业(预计很少有或没有空闲时间)
• 以 sysdba 身份连接以启动、关闭或执行恢复
要请求使用专用服务器,必须在 tnsnames.ora 文件内的 Oracle Net TNS 连接字符串中
包含 SERVER=DEDICATED 子句。
注:对于大多数平台来说,如果您的机器有足够的内存支持专用服务器,则应使用专用服
务器。这样性能可能更好些。
但也有例外,例如 Windows NT,在该系统中,由于共享服务器体系结构的异步特性,使
用 Oracle Shared Server 配置性能可能会有所提高。

Oracle9i 数据库管理基础 II 5-8


连接

调度程序进程 调度程序进程
D001 D002

监听程序 数据库服务器
3
2 客户机

1
用户进程 用户进程

Copyright © Oracle Corporation, 2001. All rights reserved.

连接到 Oracle Shared Server


1. 监听程序进程等待来自用户进程的任何连接请求。某一进程请求连接时,监听程序确
定是将该用户进程与调度程序连接(取决于调度程序的负载),还是为该用户进程分
配一个专用服务器进程。
2. 如果配置允许该用户进程与调度程序连接,监听程序会为该用户进程提供调度程序进程
的地址。如果该用户进程请求使用专用服务器,监听程序会创建一个专用服务器进程并
使该用户进程与之连接。
3. 通过调度程序或专用服务器进程建立连接之后,在整个会话期间都将保持该连接。
注:如果用户通过网络发出请求,监听程序选择的调度程序进程必须与正在使用的网络的
协议匹配。

Oracle9i 数据库管理基础 II 5-9


处理请求

共享服务器进程 例程
SGA
Snnn 4
D001 的响应队列
Snnn 请求队列
3 D002 的响应队列
Snnn
2 5 D003 的响应队列

SMON DBWn PMON CKPT LGWR ARCn

调度程序 调度程序 调度程序


D001 D002 D003

监听程序 6 数据库服务器
1
客户机
用户进程 用户进程

Copyright © Oracle Corporation, 2001. All rights reserved.

处理请求的过程
1. 用户将请求发送给调度程序。
2. 调度程序将请求置入 “系统全局区” (System Global Area, SGA) 中的请求队列。
3. 共享服务器从请求队列选择该请求,然后处理该请求。
4. 共享服务器将响应放入请求调度程序的响应队列。
5. 该响应被传送给调度程序。
6. 调度程序将该响应返回给用户。
用户请求完成后,将释放共享服务器进程,于是该进程可为请求队列中的另一个用户请求
服务。
请求队列
• 所有调度程序共享一个请求队列。
• 共享服务器监视请求队列以查看是否有新的请求。
• 请求的处理采取先进先出 (FIFO) 的原则。

Oracle9i 数据库管理基础 II 5-10


请求队列(续)
• 共享服务器将完成的所有请求放入请求调度程序的响应队列。
• 每个调度程序在 SGA 中都有自己的响应队列。
• 每个调度程序都负责将完成的请求发送回相应的用户进程。
• 在整个会话期间,用户始终与同一个调度程序相连。

Oracle9i 数据库管理基础 II 5-11


SGA 和 PGA

专用服务器:用户会话数据保存在 PGA 中
PGA
SGA

堆栈 用户会
用户会 游标
共享池和其它内存结构 话数据
空间 话数据 状态

Oracle Shared Server: 用户会话数据保存在 SGA 中


SGA PGA

用户会 游标 共享池和其 堆栈
话数据 状态 它内存结构 空间

Copyright © Oracle Corporation, 2001. All rights reserved.

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 影响的各种资源。

Oracle9i 数据库管理基础 II 5-12


配置 Oracle Shared Server

• 必需的初始化参数
– DISPATCHERS
– SHARED_SERVERS

• 可选初始化参数
– MAX_DISPATCHERS
– MAX_SHARED_SERVERS
– CIRCUITS
– SHARED_SERVER_SESSIONS

Copyright © Oracle Corporation, 2001. All rights reserved.

配置 Oracle Shared Server


要配置 Oracle Shared Server,必须为例程设置初始化参数。Oracle Shared Server 体系结构
要求 Oracle Net Services,即使客户机和共享服务器进程都与 Oracle 例程驻留在同一台机
器上也是如此。
注:大多数可选参数都有合理的缺省值。在许多系统上,唯一应配置的参数是
DISPATCHERS。

Oracle9i 数据库管理基础 II 5-13


DISPATCHERS

指定最初为某一给定协议启动的调度程序的数目

DISPATCHERS = “(PROTOCOL=TCP)(DISPATCHERS=2)\
(PROTOCOL=IPC)(DISPATCHERS=1)”

调度程序 调度程序 调度程序


D001 D002 D003
TCP/IP TCP/IP IPC

Copyright © Oracle Corporation, 2001. All rights reserved.

DISPATCHERS 参数
数据库管理员使用 DISPATCHERS 参数为每个调度程序启用各种属性。
Oracle9i 支持名称-值语法(与 Oracle Net Services 使用的语法类似)来指定现有的和附加
的属性,该指定方式不受位置约束且不区分大小写。
例如:
DISPATCHERS = “(PROTOCOL=TCP)(DISPATCHERS=3)”

参数类型 字符串(指定为引用字符串)
参数类 动态(可使用 ALTER SYSTEM 修改)
缺省值 空
Oracle Database Configuration Assistant 允许您配置该参数
注:有关 DISPATCHERS 参数的其它详细信息,请参考 Oracle9i Reference Manual 中的
“Initialization Parameters” 部分。

Oracle9i 数据库管理基础 II 5-14


DISPATCHERS 参数(续)
只需要下列属性之一: ADDRESS、DESCRIPTION 或 PROTOCOL。

属性 说明
PROTOCOL 指定调度程序为其生成监听端点的网络协议
(PRO 或 PROT)
ADDRESS
(ADD 或 ADDR)
指定调度程序所监听的端点的网络协议地址

DESCRIPTION 指定调度程序所监听的端点的网络说明,包括网络协议
(DES 或 DESC) 地址。例如:(DESCRIPTION=(ADDRESS=...))

DISPATCHERS 要启动的调度程序的初始数目(缺省值是 1)
(DIS 或 DISP)

SESSIONS 每个调度程序的网络会话的最大数目。该缺省值是操作
(SES 或 SESS) 系统特定的。大多数操作系统的缺省值都是 16K

LISTENER 指定 PMON 进程向其注册调度程序信息的监听程序的


(LIS 或 LIST) 别名。将该别名设置为可通过命名方法解析的名称
只有在以下情况下才需要指定该参数:监听程序是本地
监听程序并使用非缺省端口(非 1521)、且不是使用
LOCAL_LISTENER 参数指定的,或者 监听程序位于另一
个节点上

CONNECTIONS 指定允许每个调度程序进行的网络连接的最大数目。该
(CON 或 CONN) 缺省值是操作系统特定的。例如,1024 是 Sun Solaris 和
Windows NT 系统的缺省值

计算调度程序进程的初始数目
一旦知道您的操作系统的每个进程的可能连接数目,就可以使用下面的公式来计算例程启
动期间将为每个网络协议创建的调度程序进程的初始数目:
调度程序的初始数目 =
CEIL(并发会话平均数/每个调度程序的连接数)
注:每个调度程序的连接数与操作系统有关。
例如,假定您的系统通常通过 TCP/IP 方式并发连接 900 个用户,每个进程支持 255 个连接。
在这种情况下,应按如下所示设置 DISPATCHERS 参数:
DISPATCHERS = "(PROTOCOL=TCP) (DISPATCHERS=4)"

Oracle9i 数据库管理基础 II 5-15


MAX_DISPATCHERS

• 指定可同时运行的调度程序进程的最大数目
• 发出 ALTER SYSTEM 命令可添加超过初始启动数目的
调度程序

MAX_DISPATCHERS = 5

调度程序
D004
调度程序 调度程序 调度程序 调度程序
D001 D002 D003 D005
TCP/IP TCP/IP IPC

Copyright © Oracle Corporation, 2001. All rights reserved.

MAX_DISPATCHERS 参数
MAX_DISPATCHERS 指定可同时运行的调度程序进程的最大数目。例程启动后,如果需
要,可启动更多调度程序进程。但是,只能启动那些使用数据库参数文件中所述协议的
调度程序。
例如,如果参数文件指定启动调度程序时使用 TCP 和 IPC 协议,之后如果不更改参数文件
并重新启动例程,就不能启动使用 DECnet 协议的调度程序。
参数类型 整数
参数类 静态
缺省值 5
取值范围 视操作系统而定

Oracle9i 数据库管理基础 II 5-16


估计调度程序的最大数目
要估计某例程需要的调度程序进程的最大数目,应使用下面的公式:
调度程序最大数目 =
CEIL(并发会话最大数/每个调度程序的连接数)
添加或删除调度程序
• 如果调度程序进程上的负载一直较高,则可启动附加调度程序进程来发送用户请求以
免等待。在调度程序的数目达到 MAX_DISPATCHER 之前,可以启动新的调度程序。
• 可使用数据字典视图 V$CIRCUIT 和 V$DISPATCHER 监视调度程序上的负载。
• 相反,如果调度程序上的负载一直较低,则可减少调度程序的数目。
下面的示例中添加了一个调度程序进程,原来是两个调度程序:
ALTER SYSTEM SET
DISPATCHERS=’(PROTOCOL=TCP)(DISPATCHERS=3)’;
也可使用 ALTER SYSTEM 命令删除调度程序,使其数目达到在 DISPATCHERS 中指定的
数目。如果想让调度程序数少于指定数目,可更改初始化参数,然后停止并重新启动数据
库。

Oracle9i 数据库管理基础 II 5-17


SHARED_SERVERS

指定启动例程时创建的服务器进程的数目

SHARED_SERVERS = 6

S001 S003 S005

S002 S004 S006

Copyright © Oracle Corporation, 2001. All rights reserved.

SHARED_SERVERS 参数
SHARED_SERVERS 指定启动例程时要创建的服务器进程的数目。

参数类型 整数
参数类 动态(可使用 ALTER SYSTEM 修改)
缺省值 0
取值范围 视操作系统而定

Oracle9i 数据库管理基础 II 5-18


设置共享服务器进程的初始数目
数据库系统的初始共享服务器进程的适当数目取决于通常与该系统连接的用户的数目以及
每个用户需要的处理量。
• 如果每个用户在一段时间内发出的请求数相对很少,则有很大一部分时间内每个关联的
用户进程都处于空闲状态。在这种情况下,一个共享服务器进程可为 10 到 20 个用户服
务。
• 如果每个用户需要的处理量很大,则必须提高服务器进程数与用户进程数的比率才能处
理这些请求。
如果要使用共享服务器,则必须将 SHARED_SERVERS 参数至少设为 1。如果省略该参数
或将其设为 0,Oracle 将不启动任何共享服务器。
之后可以在例程运行时将 SHARED_SERVERS 设为一个大于 0 的数。
估计初始共享服务器进程的数目时,最好保守一些。需要时,附加共享服务器会自动启
动,而如果附加共享服务器空闲太久,又会被自动回收。
• 注:初始服务器始终保持已分配状态,即使它们处于空闲状态。
• 如果将服务器的初始数目设置得过高,可能会造成不必要的系统开销。
• 使用初始共享服务器进程数进行试验并监视共享服务器,直到找到适合于典型数据库活
动的理想系统性能。
修改共享服务器进程的最小数目
启动例程后,可通过使用 ALTER SYSTEM 命令更改共享服务器进程的最小数目。
• 如果共享服务器的数目超过您指定的最小限制,Oracle 最终会终止处于空闲状态的服务
器。
• 如果将 SHARED_SERVERS 设为 0,Oracle 会在服务器处于空闲状态时终止所有当前服
务器,而且在增大 SHARED_SERVERS 的值之前不会启动任何新的服务器。
• 将 SHARED_SERVERS 设为 0 可有效地临时禁用共享服务器。
要控制共享服务器进程的最小数目,必须具有 ALTER SYSTEM 权限。
下面的语句将共享服务器进程的数目设为 2:
ALTER SYSTEM SET SHARED_SERVERS = 2

Oracle9i 数据库管理基础 II 5-19


MAX_SHARED_SERVERS

• 指定可启动的共享服务器的最大数目
• 允许根据请求队列的长度动态分配共享服务器

MAX_SHARED_SERVERS = 10

S001 S003 S005 S007 S009


S002 S004 S006 S008 S010

Copyright © Oracle Corporation, 2001. All rights reserved.

MAX_SHARED_SERVERS 参数
MAX_SHARED_SERVERS 指定将允许同时运行的共享服务器进程的最大数目。
参数类型 整数
参数类 静态
缺省值 从 SHARED_SVEERRS 得出(20 或
2*SHARED_SERVERS)
取值范围 视操作系统而定

估计共享服务器的最大数目
一般说来,设置该参数的目的是为了在活动高峰时使共享服务器进程的数目适中。使用该
限制进行试验并监视共享服务器,以确定该参数的理想设置。
要获取所启动的服务器的最大数目,可查询数据字典视图
V$SHARED_SERVER_MONITOR。
注:在 Windows NT 上,将 MAX_SHARED_SERVERS 设为一个较高的值时应慎重,因为
每个服务器都是公共进程中的一个线程。

Oracle9i 数据库管理基础 II 5-20


CIRCUITS

• 指定可供入站和出站网络会话使用的虚拟线路总数
• 影响总的 SGA 大小

CIRCUITS = 100

Copyright © Oracle Corporation, 2001. All rights reserved.

CIRCUITS 参数
虚拟线路是用户通过调度程序和服务器与数据库的连接。CIRCUITS 参数指定可供入站和
出站网络会话使用的虚拟线路总数。该参数非常重要,因为它是影响例程的 SGA 总需求
的参数之一。

参数类型 整数
参数类 静态
缺省值 如果已配置 Oracle Shared Server,CIRCUITS 的值应与
SESSIONS 的值一致;否则,该值为 0

Oracle9i 数据库管理基础 II 5-21


SHARED_SERVER_SESSIONS

• 指定允许的 Oracle Shared Server 用户会话的总数。


• 设置该参数使您能为专用服务器保留用户会话。

SHARED_SERVER_SESSIONS = 100

Copyright © Oracle Corporation, 2001. All rights reserved.

SHARED_SERVER_SESSIONS 参数
该参数控制在任何时刻同时打开的共享服务器会话的总数。使用该参数可以为专用用户会
话保留资源。

参数类型 整数
参数类 静态
缺省值 衍生值:CIRCUITS 和 SESSIONS - 5 两者中较小的值
取值范围 0 到 SESSIONS - 5

Oracle9i 数据库管理基础 II 5-22


相关参数

其它受 Oracle Shared Server 影响、可能需要调整的


初始化参数:
• LARGE_POOL_SIZE
• SESSIONS

Copyright © Oracle Corporation, 2001. All rights reserved.

相关参数
其它受 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 用户会话内存。

Oracle9i 数据库管理基础 II 5-23


相关参数(续)
即使已经配置了大型共享池,Oracle 也会为每个配置的会话从共享池分配一定的内存量
(大约 10K)。CIRCUITS 初始化参数指定数据库允许的并发共享服务器连接的最大数。

Oracle9i 数据库管理基础 II 5-24


验证设置

• 发出下列命令以验证启动例程时是否已向监听程序注册
调度程序:

$ lsnrctl services

• 通过建立一次连接验证您是否已通过共享服务器连接,
然后查询 V$CIRCUIT 视图以显示每个共享服务器连接
的一个条目。

Copyright © Oracle Corporation, 2001. All rights reserved.

验证 Oracle Shared Server 设置


使用 Oracle Shared Server 时,应该首先启动监听程序,然后启动例程,这样调度程序就可
立即向监听程序注册。要验证是否已进行注册,可发出以下命令:
$ lsnrctl services listener01
Service "TEST" has 1 instance(s).
Instance "TEST", status READY, has 4 handler(s) for this service...
Handler(s):
"DISPATCHER" established:1 refused:0 current:1 max:1022 state:ready
D002 <machine: stc-sun02.us.oracle.com, pid: 8707>
(ADDRESS=(PROTOCOL=tcp)(HOST=stc-sun02.us.oracle.com)(PORT=35231))
"DISPATCHER" established:1 refused:0 current:0 max:1022 state:ready
D001 <machine: stc-sun02.us.oracle.com, pid: 8705>
(ADDRESS=(PROTOCOL=tcp)(HOST=stc-sun02.us.oracle.com)(PORT=35230))
"DISPATCHER" established:1 refused:0 current:0 max:1022 state:ready
D000 <machine: stc-sun02.us.oracle.com, pid: 8703>
(ADDRESS=(PROTOCOL=tcp)(HOST=stc-sun02.us.oracle.com)(PORT=35229))
"DEDICATED" established:0 refused:0

Oracle9i 数据库管理基础 II 5-25


验证 Oracle Shared Server 设置(续)
进行几次连接以验证您的连接是否正在使用共享服务器。然后查询 V$CIRCUIT 视图以查
看共享服务器连接。这也验证了监听程序是否在为传入的连接执行负载平衡。
SQL>select dispatcher, circuit, server, status from v$circuit;
DISPATCH CIRCUIT SERVER STATUS
-------- -------- -------- ----------------
82890064 8257BA64 8288F6A4 NORMAL
8288F9E4 8257BBB0 00 NORMAL
8288FD24 8257BCFC 00 NORMAL

Oracle9i 数据库管理基础 II 5-26


动态视图

• V$CIRCUIT
• V$SHARED_SERVER
• V$DISPATCHER
• V$SHARED_SERVER_MONITOR
• V$QUEUE
• V$SESSION

Copyright © Oracle Corporation, 2001. All rights reserved.

动态视图小结
V$CIRCUIT 该视图包含有关虚拟线路的信息,这些线路是用户与
数据库之间通过调度程序和服务器进行的连接
V$SHARED_SERVER 该视图包含有关共享服务器进程的信息。
V$DISPATCHER 该视图提供有关调度程序进程的信息。
V$SHARED_SERVER_
该视图包含有关调整共享服务器进程的信息。
MONITOR
V$QUEUE
该视图包含有关请求和响应队列的信息。

V$SESSION 该视图列出每个当前会话的会话信息。

Oracle9i 数据库管理基础 II 5-27


小结

在这一课中,您应该能够掌握:
• 识别 Oracle Shared Server 的各个组件
• 描述 Oracle Shared Server 的体系结构
• 配置 Oracle Shared Server
• 了解和说明相关数据字典视图的用处

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 5-28


练习 5 概览

此练习涉及以下主题:
• 配置 Oracle Shared Server
• 为例程注册定义 LOCAL_LISTENER
• 使用监听程序控制实用程序 (Listener Control Utility)
来验证服务
• 使用 V$ 视图验证共享服务器配置和性能
• 验证例程注册

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 5-29


练习 5
1. 启动一个 Telnet 会话,连接到您的数据库所在的服务器。为您的数据库配置并启动
Oracle Shared Server,以便使一个调度程序监听 TCP/IP 连接,一个共享服务器为请求
提供服务。指定调度程序的最大数目是 2,共享服务器的最大数目是 6。
注:因为您使用的监听程序不在缺省端口 1521 上进行监听,所以,您必须在初始化
参数文件中定义 local_listener 参数,同时必须在 tnsnames.ora 文件中包含
监听程序别名和地址。如果该参数未正确定义,例程就无法启动,因为调度程序进程
不知道如何向监听程序进行注册。
2. 使用监听程序控制实用程序 (Listener Control Utility) 来验证调度程序是否已与您的监
听程序关联。
3. 进行网络连接前,应在 telnet 会话中调用 SQL*Plus 并以 system/manager 身份进行连
接。查询 V$CIRCUIT 以查看它是否包含任何行。该视图对每一个当前使用共享服务
器的连接都有一个条目。
4. 使用您的 PC 客户机上的 SQL*Plus 并以 system/manager 身份进行连接,然后再
次查询 V$CIRCUIT 视图。验证连接之后,退出 SQL*Plus。
5. 从您的 telnet 会话查询 V$SHARED_SERVER 视图,以查看已启动的共享服务器的数
目。
6. 从您的 telnet 会话查询 V$DISPATCHER 视图,以查看已启动的调度程序的数目。
7. 在您的 PC 客户机上使用 SQL*Plus、以 system/manager 身份并使用共享服务器进行两
次连接。共享服务器的数目是否有所增加?如果是,为什么?如果不是,为什么?
8. 再添加一个调度程序以处理 TCP 请求,并验证是否已添加了这个附加的调度程序。

Oracle9i 数据库管理基础 II 5-30


备份和恢复概览

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 描述数据库备份、还原和恢复的基本原理
• 列出 Oracle 环境中可能发生的故障类型
• 定义备份和恢复策略

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 6-2


备份和恢复问题

• 保护数据库以防止发生多种类型的故障
• 延长平均故障间隔时间 (MTBF)
• 缩短平均恢复时间 (MTTR)
• 尽可能减少数据损失

Copyright © Oracle Corporation, 2001. All rights reserved.

概览
数据库管理员 (DBA) 的主要职责之一就是确保数据库可用。DBA 可以采取预防措施来尽
量减少系统故障。
尽管有预防措施,但期望永远不出现故障只能是一种幼稚的想法。数据库出现故障后,
DBA 必须尽快使之恢复运行,尽量减少数据损失。
为了保护数据免受各种可能发生的故障的影响,DBA 必须定期备份数据库。如果没有最
新的备份,一旦发生文件损失,DBA 就不可能在不损失数据的情况下使数据库恢复运行。
备份对从各种类型的故障中进行恢复至关重要。无论如何强调验证备份都不为过。以为备
份存在而没有实际检查它是否存在,则一旦备份无效,代价可能会极其惨重。

Oracle9i 数据库管理基础 II 6-3


故障类别

• 语句故障
• 用户进程故障
• 用户错误
• 网络故障
• 例程故障
• 介质故障

Copyright © Oracle Corporation, 2001. All rights reserved.

故障类别
在 Oracle 数据库环境中可出现不同类型的故障,包括:
• 语句故障
• 用户进程故障
• 用户错误
• 例程故障
• 介质故障
• 网络故障
每种类型的故障都要求 DBA 不同程度地介入以便从中有效地进行恢复。在某些情况下,
恢复取决于已实施的备份策略的类型。例如,语句故障几乎不需要 DBA 干预,而介质故
障则要求 DBA 使用经过测试的恢复策略。

Oracle9i 数据库管理基础 II 6-4


本页特意保留为空白。

Oracle9i 数据库管理基础 II 6-5


语句故障的原因

• 应用程序中出现逻辑错误
• 试图向表中输入无效数据
• 权限不足却试图执行某操作
• 试图创建表却已超出所分配的限额限制
• 试图对表执行 INSERT 或 UPDATE 操作,导致分配了一
个区,但是表空间中的可用空间不足

Copyright © Oracle Corporation, 2001. All rights reserved.

语句故障
在 Oracle 程序中处理语句时如果出现逻辑故障就会导致语句故障。语句故障的类型包括:
• 应用程序中出现逻辑错误。
• 用户试图向表中输入无效数据,可能破坏完整性约束。
• 用户权限不足却试图执行某个操作,例如只有 SELECT 权限却在表中执行插入操作。
• 用户试图创建表,但超出了分配给该用户的限额限制。
• 用户试图对表执行 INSERT 或 UPDATE 操作,导致分配了一个区,但是表空间中的可
用空间不足。
注:如果遇到语句故障,Oracle 服务器或操作系统将返回错误代码和错误消息。失败的
SQL 语句将自动回退,然后控制权将返回给用户程序。应用程序开发人员或 DBA 可使用
Oracle 错误代码来诊断和帮助解决故障。

Oracle9i 数据库管理基础 II 6-6


语句故障的解决方法

• 更正程序的逻辑流。
• 修改并重新发出 SQL 语句。
• 提供必要的数据库权限。
• 使用 ALTER USER 命令更改用户的限额限制。
• 向表空间中添加文件空间。
• 启用可恢复的空间分配。

Copyright © Oracle Corporation, 2001. All rights reserved.

语句故障解决方法
出现语句故障后,DBA 进行干预的程度各不相同,这取决于故障的类型,可能包括以下
内容:
• 修复应用程序以使逻辑流正确无误。根据您的环境,这可能是应用程序开发人员的任
务,而不是 DBA 的任务。
• 修改并重新发出 SQL 语句。这可能也是应用程序开发人员的任务,而不是 DBA 的任
务。
• 为用户提供成功完成该语句所必需的最低数据库权限。
• 发出 ALTER USER 命令以更改限额限制。
• 向表空间中添加文件空间。从技术角度讲,DBA 应确保不发生此类情况;但是在某些
情况下可能需要添加文件空间。DBA 还可以对数据文件使用 RESIZE 和
AUTOEXTEND 选项。
• Oracle9i 提供了一种在出现空间分配故障时先挂起、然后恢复执行大型数据库操作的
方法。这使得管理员可以采取更正措施,而不是由 Oracle 数据库服务器向用户返回错
误。在错误条件得到更正之后,挂起的操作将自动恢复。此功能称为可恢复的空间分
配,受影响的语句称为可恢复语句。

Oracle9i 数据库管理基础 II 6-7


用户进程故障的原因

• 用户在会话中执行了异常断开操作。
• 用户会话被异常终止。
• 用户的程序引起地址异常,从而终止了会话。

Copyright © Oracle Corporation, 2001. All rights reserved.

用户进程故障的原因
用户进程失败的原因可能有多种;但最常见的原因如下:
• 用户在会话中执行了异常断开操作。例如,用户在连接到客户机-服务器配置环境中的
数据库的情况下,关闭了 SQL*Plus 窗口。
• 用户会话被异常终止。一种可能的情况是用户在连接到客户机-服务器配置环境中的数
据库时重新引导了客户机。
• 用户程序导致地址异常,从而终止会话。如果在发生异常时,应用程序未对这些异常
进行正确处理,则通常会发生这种情况。

Oracle9i 数据库管理基础 II 6-8


用户进程故障的解决方法

• PMON 进程检测异常终止的用户进程。
• PMON 回退事务处理并释放它所持有的任何资源和锁。

Copyright © Oracle Corporation, 2001. All rights reserved.

用户进程故障和 DBA 操作
DBA 很少需要执行操作来解决用户进程错误。该用户进程不能继续工作,尽管 Oracle 服
务器和其它用户进程会继续正常运行。
PMON 后台进程
出现异常终止的用户进程后,PMON 后台进程通常足以清理该用户进程。
PMON 进程检测到异常终止的服务器进程时,它将回退该异常终止进程的事务处理,并
释放它所获得的任何资源和锁。

Oracle9i 数据库管理基础 II 6-9


可能的用户错误

SQL> DROP TABLE employees;

SQL> TRUNCATE TABLE employees;

SQL> DELETE FROM employees;


SQL> COMMIT;

SQL> UPDATE employees


2> SET salary = salary * 1.5;
SQL> COMMIT;

Copyright © Oracle Corporation, 2001. All rights reserved.

用户错误
从用户错误中恢复时通常需要 DBA 干预。
用户错误的常见类型
• 用户意外地删除或截断表。
• 用户删除表中的所有行。
• 用户提交了数据,但在其中发现一个错误。

Oracle9i 数据库管理基础 II 6-10


用户错误的解决方法

• 培训数据库用户。
• 从有效的备份中恢复。
• 从导出文件中导入表。
• 使用 LogMiner 确定错误发生的时间。
• 使用时间点恢复进行恢复。
• 使用 LogMiner 执行对象级恢复。
• 使用 FlashBack 查看和修复历史数据。

Copyright © Oracle Corporation, 2001. All rights reserved.

尽可能减少用户错误
在任何数据库和应用程序环境中,一个关键的问题就是确保用户已经过适当培训,并且知
道数据库可用性和完整性的含义。
DBA 应该了解应用程序和商业运作的类型,这可避免由于用户错误而导致数据丢失;
DBA 还应该了解在这些情况下如何采取恢复措施。
某些恢复情况涉及的范围可能很广,例如将数据库还原到出现错误之前的时间点、导出丢
失的数据,然后将数据导入到丢失了该数据的数据库。
LogMiner 是一种关系工具,通过它,您可以使用 SQL 来阅读、分析、解释联机和归档日
志文件。使用 LogMiner 分析日志文件可用来查明何时对数据库进行了错误的修改。这
样,就可以在应用程序级(而不是在数据库级)执行逻辑恢复了。
Oracle9i 提供一种称为 FlashBack 的新功能,您可以用它来查看和修复历史数据。
FlashBack 提供对截止某一特定时间或用户指定的系统提交号 (SCN) 的数据库执行查询的
功能。

Oracle9i 数据库管理基础 II 6-11


例程故障的原因
例程
用户进程 服务器
SGA
进程 共享池
PGA 共享 SQL
锁 大型共享池 和 PL/SQL

数据缓冲区 重做日志 数据字典


缓冲区 高速缓冲区
用户进程 服务器
进程 SMON DBWn PMON CKPT LGWR ARCn
PGA

146 146 146


数据文件 1 控制文件 重做日志
文件 1
146 145
参数文件 数据文件 2 重做日志
文件 2
146
数据文件 3
口令文件
数据库

Copyright © Oracle Corporation, 2001. All rights reserved.

例程故障
例程故障的原因可能有多种:
• 由于断电,导致服务器不可用。
• 由于硬件问题(如 CPU 故障或内存损坏)或操作系统崩溃而导致服务器不可用。
• 某个 Oracle 服务器后台进程(DBWn、LGWR、PMON、SMON 或 CKPT)出现故障。
要从例程故障中恢复,DBA 可以:
• 使用 “startup” 命令启动例程。Oracle 服务器将自动恢复,并执行前滚和回退阶段。
• 通过阅读警报日志和在例程故障期间生成的其它所有跟踪文件来调查故障原因。

Oracle9i 数据库管理基础 II 6-12


从例程故障进行恢复

• DBA 不需要执行任何特殊的恢复操作。
• 启动例程。
• 等待出现 “数据库已打开” (database opened) 通知。
• 通知用户。
• 检查警报日志以确定故障原因。

Copyright © Oracle Corporation, 2001. All rights reserved.

崩溃恢复
崩溃恢复和例程恢复将数据库恢复到发生例程故障之前的事务处理一致状态。根据定义,
崩溃恢复是对单例程配置中的数据库或 Oracle Real Application Clusters 配置(其中的所有
例程都已崩溃)中的数据库执行的恢复;而例程恢复是通过 Oracle Real Application
Clusters 配置中的一个活动例程来恢复一个失败的例程。如果需要,可以在数据库打开
时,由 Oracle 服务器自动执行崩溃恢复。
您不必执行任何恢复操作。所有必需的重做信息都由 SMON 来读取。要从这种类型的故
障中进行恢复,请启动例程:
SQL> CONNECT / AS sysdba
Connected.
SQL> STARTUP
. . .
Database opened.
数据库打开后,通知用户必须重新输入未提交的所有数据。

Oracle9i 数据库管理基础 II 6-13


崩溃恢复(续)

• 在启动数据库和出现 “数据库已打开” (Database opened) 通知之间可能有一个时间延
迟,这是数据库装载时发生的前滚阶段。
– SMON 通过应用联机重做日志文件(来自最后一个检查点)中记录的更改来执行
前滚进程。
– 前滚可恢复尚未记录到数据库文件中、但已记录到联机重做日志中的数据,包括还
原段的内容。
• 打开数据库时可能发生回退,原因是无论 SMON 或是服务器进程都可以执行回退操作。
这使数据库可以更快地供用户使用。

Oracle9i 数据库管理基础 II 6-14


介质故障的原因

• 磁盘驱动器上的磁头损坏
• 读取或写入数据库文件时存在物理问题
• 文件被意外删除

Copyright © Oracle Corporation, 2001. All rights reserved.

介质故障
介质故障包含对操作数据库所需的文件进行读写操作时产生的物理问题。介质故障是最严
重的故障类型,原因是它通常需要 DBA 的干预。
与介质有关的问题的常见类型
• 包含某一数据库文件的磁盘驱动器出现磁头损坏。
• 对实现正常数据库操作所需的文件进行读写操作时存在物理问题。
• 文件被意外删除。

Oracle9i 数据库管理基础 II 6-15


介质故障的解决方法

• 恢复策略取决于选择的备份方法以及受到影响的文件。
• 如果归档重做日志文件可用,可应用它们来恢复自上次
备份以来所提交的数据。

Copyright © Oracle Corporation, 2001. All rights reserved.

介质故障解决方法
经过测试的恢复策略是解决介质故障问题的关键要素。DBA 能够在多大程度上尽量减少
由介质故障引起的停机时间和数据损失取决于可用备份的类型。因此,恢复策略取决于以
下因素:
• 选择的备份方法以及受到影响的文件。
• 数据库操作的 ARCHIVELOG 模式。如果采用归档,可以应用已归档的重做日志文件来
恢复自上次备份以来所提交的数据;如果使用 RMAN,还可以应用增量备份。

Oracle9i 数据库管理基础 II 6-16


定义备份和恢复策略

• 业务要求
• 操作要求
• 技术方面的考虑因素
• 管理上的协作

Copyright © Oracle Corporation, 2001. All rights reserved.

DBA 要考虑的问题
不管您选择什么样的备份策略,获得相应管理层的认同是很重要的。例如,如果贵公司不
希望制作文件的物理映像副本,以尽量减少对磁盘空间的占用,那么管理层必须清楚这个
决定可能引起的后果。
在选择备份策略时,应考虑以下一些问题:
• 根据对系统可用性的期望,管理层是否权衡了所选备份策略的利弊?
• 是否有专门的资源来确保成功实施备份和恢复策略?
• 是否已明确了解进行备份和准备恢复的步骤的重要性?
对业务要求、操作要求和技术要求进行一次全面的分析,向管理层提供支持有效备份和恢
复策略所需的信息。

Oracle9i 数据库管理基础 II 6-17


业务要求

• 平均恢复时间
• 平均故障间隔时间
• 演变过程

Copyright © Oracle Corporation, 2001. All rights reserved.

业务影响
您应该了解停机时间将对业务产生的影响。管理层必须量化停机时间及数据损失的代价,
并将其与减少停机时间及尽量减少数据损失所需的成本进行比较。
MTTR:数据库的可用性是 DBA 要考虑的一个主要问题。出现故障后,DBA 应努力缩短
平均恢复时间 (MTTR)。此策略可确保数据库的不可用时间尽可能地最短。通过预测可能
发生的故障的类型并采取有效的恢复策略,DBA 可以最终达到缩短 MTTR 的目的。
MTBF:保护数据库以防止出现各种类型的故障也是 DBA 的一个重要任务。要做到这一
点,DBA 必须延长平均故障间隔时间 (MTBF)。DBA 必须了解 Oracle 数据库环境中备份
和恢复的结构,并对数据库进行相应配置,才不会经常发生故障。
演变过程:备份及恢复策略随着业务要求、操作要求和技术要求的变化而逐渐发展。
DBA 和相应的管理层都应定期对备份和恢复策略的有效性进行检查,这一点至关重要。

Oracle9i 数据库管理基础 II 6-18


操作要求

• 24 小时操作
• 测试和验证备份
• 数据库易变性

Copyright © Oracle Corporation, 2001. All rights reserved.

24 小时操作
备份和恢复总是受到您所提供的业务操作类型的影响,在数据库必须一周 7 天、一天 24
小时连续运行的情况下更是如此。正确的数据库配置对于支持这样的操作要求是必需的,
因为它们直接影响数据库环境的技术层面。
测试备份
DBA 可以通过制定计划定期测试备份的有效性,来确保他们的策略可以缩短 MTTR 并延
长 MTBF。有效的恢复取决于有效的备份。在选择备份策略时,应考虑以下一些问题:
• 当您需要帮助时,是否可以求助于系统管理员、供应商、后备 DBA 以及其他关键人
员?
• 您是否可以按安排的时间间隔经常测试备份和恢复策略?
• 备份副本是否存储在其它地方?
• 计划是否被详细记录并得到良好的维护?

Oracle9i 数据库管理基础 II 6-19


数据库易变性
影响操作要求的其它问题包括数据的易变性和数据库的结构。在选择备份策略时,应考虑
以下一些问题:
• 表是否要经常更新?
• 数据是否频繁变更?如果是这样,您就必须比那些数据相对稳定的业务更频繁地进行备
份。
• 数据库结构是否经常改变?
• 您添加数据文件的频率如何?

Oracle9i 数据库管理基础 II 6-20


技术方面的考虑因素

• 资源:硬件、软件、人力和时间
• 操作系统文件的物理映像副本
• 数据库中各对象的逻辑副本
• 数据库配置
• 事务处理量,这将影响需要备份的频率

Copyright © Oracle Corporation, 2001. All rights reserved.

物理映像副本
某些技术要求由所要求的备份类型决定。例如,如果需要数据文件的物理映像副本,这将
显著影响可用存储空间。
逻辑副本
创建数据库中对象的逻辑副本对存储要求的影响没有物理映像副本那么显著;然而,由于
用户访问数据库时执行逻辑副本,系统资源可能会受到影响。
数据库配置
数据库的配置影响执行备份的方式和数据库的可用性。根据数据库配置,系统资源(如支
持备份及恢复策略所需的磁盘空间)可能会受到限制。

Oracle9i 数据库管理基础 II 6-21


事务处理量
事务处理量也会影响系统资源。如果 24 小时(全天候)操作要求定期备份,则会增加系统
资源的负担。
技术要求
在选择备份策略时,应考虑以下一些问题:
• 您有多少数据?
• 您的计算机的能力及容量是否足以支持备份?
• 数据是否易于重新创建?
• 您是否可以将数据从纯数据文件重新加载到数据库?
• 数据库配置是否能支持从不同类型故障中复原?

Oracle9i 数据库管理基础 II 6-22


灾难恢复问题

• 在出现严重灾难的情况下,您的业务会受到什么样的影
响?
– 地震、水灾或火灾
– 完全丢失计算机
– 存储硬件或软件故障
– 失去重要人员,如数据库管理员

• 是否已制定定期测试策略的计划?

Copyright © Oracle Corporation, 2001. All rights reserved.

自然灾害
您的数据可能非常重要,以至于您必须确保甚至在系统完全瘫痪的情况下也能够复原。自
然灾害和其它问题可能影响您的数据的可用性,因此在创建灾难恢复计划时应考虑这些问
题。在选择备份和恢复策略时,应考虑以下一些问题:
• 在发生以下严重灾难时,您的业务会受到什么样的影响:
– 水灾、火灾、地震或飓风
– 存储硬件或软件故障
• 如果您的数据库服务器发生故障,那么在更换新硬件系统可能需要的数小时、数天或
者甚至数周内,您的业务是否可以继续运转?
• 备份是否存储在其它地方?

Oracle9i 数据库管理基础 II 6-23


解决方法
• 异地备份
• 使用 Oracle9i Data Guard,它通过自动创建、管理和监视备用数据库环境的各个方面来
保护关键性数据。
• 地理镜像
• 消息传送
• TP 监视器
失去重要人员
关于重要人员,应考虑以下问题:
• 失去这样的人员对您的业务会有多大影响?
• 如果您的 DBA 离开公司或无法工作,您的数据库系统是否还能继续运行?
• 如果没有 DBA,将由谁负责恢复工作?

Oracle9i 数据库管理基础 II 6-24


小结

在这一课中,您应该能够掌握:
• 评估您的环境中可能发生的故障
• 根据业务要求、操作要求和技术要求开发一套策略
• 为备份和恢复策略制定测试计划

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 6-25


Oracle9i 数据库管理基础 II 6-26
例程和介质恢复结构

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 描述与恢复相关的 Oracle 进程、内存结构和文件
• 认识检查点、重做日志文件和归档日志文件的重要性
• 描述优化例程恢复的方法

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 7-2


概览
例程
SGA 共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL

用户 服务器 数据库缓冲 重做日志 数据字典


进程 进程 区高速缓存 缓冲区 高速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn

数据文件 1 控制文件 重做日志


文件 1
参数文件 重做日志
数据文件 2
文件 2

口令文件
数据文件 3 归档日
志文件
数据库

Copyright © Oracle Corporation, 2001. All rights reserved.

概览
Oracle 服务器将许多内存组件、后台进程和文件结构用于其备份和恢复机制。本课回顾了
“Oracle9i 数据库管理基础 I” 课程中提出的概念,重点介绍备份和恢复要求。
Oracle 例程
Oracle 例程由内存区(主要是系统全局区 [System Global Area, SGA])和后台进程(即
PMON、SMON、DBWn、LGWR 和 CKPT)组成。例程是在数据库启动过程中,读取参
数文件之后的 nomount(未装载)阶段创建的。如果其中的任何进程终止,则例程将关闭。

Oracle9i 数据库管理基础 II 7-3


内存结构
类型 说明
数据库缓冲区高速 用来存储从数据文件中读取的块的内存区。数据由
缓存 服务器进程读入块,然后由 DBWn 异步写出。
包含要写入重做日志的数据在更改前和更改后的映
日志缓冲区
像副本的内存区
SGA 中的一块可选区域,它为备份和还原操作、
大型共享池 I/O 服务器进程分配大量的内存区域,也为共享服
务器和 Oracle XA 分配用于会话的内存。
存储 SQL 语句、PL/SQL 过程和数据字典信息的已
共享池
分析版本
在服务器内存中使用,存储 Java 虚拟机 (Java virtual
Java 池 machine, JVM) 中所有针对特定会话的 Java 代码和
数据。

后台进程

类型 说明
数据库写入器 将灰缓冲区从数据缓冲区高速缓存写入数据文件。
(DBWn) 此操作是异步的。
日志写入器
将数据从重做日志缓冲区写入重做日志文件
(LGWR)
执行自动例程恢复。当不再使用临时段时就恢复这
系统监视器
些段中的空间。根据所设置的参数,合并可用空间
(SMON)
的相邻区域。
进程监视器 清理专用于异常终止的用户进程的连接/服务器进
(PMON) 程。执行回退并释放失败进程所占用的资源。
用当前的重做日志和检查点号同步数据文件头和控
检查点 (CKPT)
制文件头。
归档程序 (ARCn)
一个自动复制已标记为归档的重做日志的进程。
(可选)

用户进程
用户进程是在用户启动 SQL*Plus、Oracle Forms Developer、Oracle Reports Developer、
Oracle Enterprise Manager 等工具时创建的。该进程可能位于客户机或服务器上,它提供了
一个界面,用户可在其中输入命令,与数据库进行交互。

Oracle9i 数据库管理基础 II 7-4


服务器进程
服务器进程接受来自用户进程的命令并执行步骤来完成用户请求。如果数据库不处在共
享服务器配置中,则在建立有效连接后,会在该例程所在的计算机上创建服务器进程。
Oracle 数据库
Oracle 数据库由以下物理文件组成:
文件类型 说明 类型
数据的物理存储。每个数据库需要至少
数据文件 二进制
一个文件。该文件存储系统表空间。
包含数据更改之前和之后的映像副本,
重做日志 二进制
用于恢复。需要至少两个重做日志组。
记录数据库的状态、物理结构和 RMAN
控制文件 二进制
元数据。
联机重做日志文件的物理副本。数据库
归档日志
设置为 Archivelog 模式时就会创建该日 二进制
(可选)
志。可用该日志进行恢复。

其它文件:
文件类型 说明 类型
初始化参数
存储启动例程所需的参数 文本
文件
服务器初始
存储启动例程所需的永久参数 二进制
化参数文件
口令文件 存储有关可启动、停止和恢复数据库的用
二进制
(可选) 户的信息

动态视图
Oracle 服务器提供许多标准视图以获取有关数据库和例程的信息。这些视图包括:
• V$SGA:查询有关例程的以下各项的大小:共享池、日志缓冲区、数据缓冲区高速
缓存以及固定内存大小(取决于操作系统)
• V$INSTANCE:查询例程的状态,如例程模式、例程名、启动时间和主机名
• V$PROCESS:查询为例程创建的后台进程和服务器进程
• V$BGPROCESS:查询为例程创建的后台进程
• V$DATABASE:列出数据库的状态和恢复信息。其中包括有关数据库名、数据库唯一
标识符、创建日期、控制文件创建的日期和时间、最后一个数据库检查点的信息,以
及其它信息。
• V$DATAFILE:列出数据库中包含的数据文件的位置和名称。其中包括文件编号和名
称、创建日期、状态(联机/脱机)、启用状态(只读、读写)、最后一个数据文件检
查点及文件大小等相关信息。

Oracle9i 数据库管理基础 II 7-5


大型共享池

• 可以配置为 SGA 中的单独内存区,用于:


– Oracle 备份和还原操作
– I/O 服务器进程
– 共享服务器的会话内存
• 通过 LARGE_POOL_SIZE 参数设置大小

Copyright © Oracle Corporation, 2001. All rights reserved.

大型共享池
大型共享池用于从共享内存分配顺序 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 进行备份。

Oracle9i 数据库管理基础 II 7-6


大型共享池参数
• LARGE_POOL_SIZE:如果未设置该参数,则没有大型共享池。指定的内存大小是从
SGA 分配的。
– 说明:大型共享池的大小,以字节计(可用 K 或 M 指定其值)
– 最小值:300 K
– 最大值:至少 2 GB(最大值取决于操作系统)
– 要确定大型共享池的使用方法,请查询 V$SGASTAT:
SQL> SELECT *
2> FROM v$sgastat
3> WHERE pool = 'large pool';
POOL NAME BYTES
----------- --------------- --------
large pool free memory 4194304*
注:只有 Oracle 在 alert.log 中报告了错误,表明无法分配足够的内存且不能启
动 I/O 从属的情况下,才应该设置该初始化参数。
• DBWR_IO_SLAVES:该参数指定 DBWn 进程使用的 I/O 从属的数量。DBWn 进程及其
从属总是写入磁盘。缺省情况下,该值为 0,即不使用 I/O 从属。
– 如果 DBWR_IO_SLAVES 设置为非零值,则由 ARCn 进程、LGWR 进程和恢复管
理器使用的 I/O 从属的数量设置为 4。
– 在不支持或不能有效实施异步 I/O 的平台上,通常使用 I/O 从属来模拟异步 I/O。
不过,即使在使用异步 I/O 时也可以使用 I/O 从属。在这种情况下,I/O 从属将
使用异步 I/O。
• BACKUP_TAPE_IO_SLAVES:它指定恢复管理器是否使用 I/O 从属将数据备份、复制
或还原到磁带上。
– 当 BACKUP_TAPE_IO_SLAVES 设置为 TRUE 时,I/O 从属进程用于对磁带设备
进行读写操作。
– 当该参数设置为 FALSE(缺省值)时,I/O 从属不用于备份;相反,参与备份的
影子进程将访问磁带设备。
注:由于在任一特定时刻只能有一个进程访问磁带设备,因此该参数值是一个布
尔值,它控制对 I/O 从属进程的部署,允许或禁止该进程访问磁带设备。
– 要执行双重备份,则需要启用该参数,否则将发出一个错误。启用该参数后,恢
复管理器将根据所请求的备份副本数来配置所需的从属进程的数量。

Oracle9i 数据库管理基础 II 7-7


数据库缓冲区高速缓存、DBWn 和数据文件

例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBW0 PMON CKPT LGWR ARCn
DBW1

数据文件 1 控制文件 重做日志


文件 1

参数文件 数据文件 2 重做日志


文件 2

数据文件 3
口令文件 归档日
数据库 志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

数据库缓冲区高速缓存的功能
• 数据缓冲区高速缓存是 SGA 中的一个区域,用于存储最近使用过的数据块。
• 服务器进程将表、索引和还原段从数据文件读入缓冲区高速缓存,在缓冲区高速缓存
中根据需要对数据块进行相应的更改。
• Oracle 服务器使用最近最少使用 (LRU) 算法确定哪个缓冲区可被覆盖以容纳缓冲区高
速缓存中的新块。
DBWn 后台进程的功能
• 数据库写入器进程 (DBWn) 将数据库缓冲区高速缓存中的灰缓冲区数据写入数据文件。
它确保在数据库缓冲区高速缓存中有足够的空闲缓冲区(即服务器进程需要读取数据
文件中的数据块时可以覆盖的缓冲区)。
• 数据库写入器定期同步数据库缓冲区高速缓存和数据文件,这就是在各种情况下触发
的检查点事件。
• 尽管一个数据库写入器进程对于大多数系统已足够,但如果系统需要修改大量数据,
您还可以配置附加的进程(从 DBW1 到 DBW9)以提高写入性能。这些附加的数据库
写入器进程对单处理器系统不起作用。

Oracle9i 数据库管理基础 II 7-8


DBWn 后台进程的功能(续)
数据文件
数据文件将系统数据和用户数据都存储在磁盘上。这些数据既可以是已提交的,也可以是
未提交的。
仅包含已提交数据的数据文件
这对于已关闭的数据库是正常情况,但发生故障或使用 “关闭中止” (shutdown abort) 选项
的情况除外。如果使用正常、立即或事务处理选项关闭例程,那么数据文件只包含已提交
的数据。这是因为所有未提交的数据都被回退,同时还执行检查点操作以强制将所有已提
交的数据存储到磁盘。
包含未提交数据的数据文件
例程启动后,数据文件可能会包含未提交的数据。这种情况发生在数据已更改但尚未提交
时(已更改的数据正处在高速缓存中),此时高速缓存中需要更多空间,从而强制未提交
的数据转存入磁盘。只有在所有用户最终提交后,数据文件才只包含已提交的数据。如果
发生故障,则在随后的恢复过程中,可以使用重做日志和回退段来同步数据文件。
配置表空间
表空间包含一个或多个数据文件。认真创建表空间对于提供灵活且易管理的备份和恢复策
略非常重要。以下是一种典型的表空间配置,其中考虑了备份和恢复操作的要求:
• 系统:如果将系统数据和用户数据分放在不同的表空间中,则可以更灵活地进行备份
和恢复操作。
• 临时:如果含有临时段(用于排序等)的表空间丢失,可以重建它,而不是恢复它。
• 还原:备份还原表空间的过程与备份其它任何读/写表空间的过程完全相同。由于自动
还原表空间对于恢复和读一致性至关重要,您应该经常对它进行备份。
• 只读数据:可以缩短备份时间,因为只有当表空间设为只读时,才必须对它进行备份。
• 频繁变更的数据:应该频繁地备份这种表空间,这样也可以缩短恢复时间。
• 索引数据:应当创建仅用来存储索引段的表空间。可以经常重建而不是恢复这些表空
间。

Oracle9i 数据库管理基础 II 7-9


重做日志缓冲区、LGWR 和重做日志文件

例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn

数据文件 1 控制文件 重做日志


文件 1

参数文件 数据文件 2 重做日志


文件 2

数据文件 3
口令文件 归档日
数据库 志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

重做日志缓冲区的功能
• 重做日志缓冲区是容纳数据库更改信息的循环缓冲区。这些信息存储在重做条目中。
• 重做条目包含重建或重做由 INSERT、UPDATE、DELETE、CREATE、ALTER 或
DROP 操作对数据库的更改所必需的信息。必要时重做条目可用于数据库恢复。
• Oracle 服务器进程将重做条目从用户的内存空间复制到重做日志缓冲区。

Oracle9i 数据库管理基础 II 7-10


LGWR 后台进程的功能
日志写入器 (LGWR) 在以下情况下将重做条目从重做日志缓冲区写入重做日志文件:
• 当重做日志缓冲区的三分之一被占用时
• 当发生超时时(每三秒钟)
• 有 1 MB 的重做数据时
• 在 DBWn 将数据库缓冲区高速缓存中已修改的数据块写入数据文件之前
• 当提交事务处理时
重做日志文件
重做日志文件存储对数据库所做的所有更改。如果要将数据库恢复到以前某个正常运行的
时间点,则可以利用重做日志来确保所有已提交的事务处理都被提交到磁盘,而且所有未
提交的事务处理都被回退。有关重做日志文件的要点如下:
• LGWR 以循环方式写入重做日志文件。该行为导致日志文件组中的所有成员均被覆盖。
• 尽管它至少必须拥有两个日志组以支持循环特性,在大多数情况下,您可能需要两个以
上的重做日志组。
– 您可以使用以下 SQL 命令创建附加的日志文件组:
ALTER DATABASE [database]
ADD LOGFILE [GROUP integer] filespec
[, [GROUP integer] filespec]...]
– 要删除整个联机重做日志组,可使用以下 SQL 命令:
ALTER DATABASE [database]
DROP LOGFILE
{GROUP integer|('filename'[,'filename']...)}
[,{GROUP integer|('filename'[,'filename']...)}]...
• 为了避免单点介质故障,建议对重做日志进行多元备份。

Oracle9i 数据库管理基础 II 7-11


重做日志切换
在日志切换时,当前的重做日志组会被分配一个日志序列号,以识别存储在该重做日志组
中的信息并用来进行同步。
• 当 LGWR 停止向一个重做日志组写入并开始向另一个重做日志组写入时,即发生日志
切换。
• 当 LGWR 填满一个日志文件组时,即发生日志切换。
• DBA 可以使用 ALTER SYSTEM SWITCH LOGFILE 命令强制进行日志切换。
• 在日志切换时会自动执行检查点操作。
• 只要组中至少有一个成员可用,处理就能继续。如果某个成员遭到破坏或不可用,就
会向 LGWR 跟踪文件和警报日志写入消息。
动态视图
• V$LOG:列出每个组中成员的数量。它包含:
– 组号
– 当前日志序列号
– 组大小
– 成员数
– 状态(ACTIVE、CLEARING、CLEARING_CURRENT、CURRENT、INACTIVE 或
UNUSED)
– 检查点更改号
• V$LOGFILE:列出每个日志文件成员的名称、状态(STALE 或 INVALID)和组别。
• V$LOG_HISTORY:包含有关控制文件中的日志历史记录的信息。

Oracle9i 数据库管理基础 II 7-12


多元备份的重做日志文件

第1组 第2组 第3组

磁盘 1
(成员 a)
log1a.rdo log2a.rdo log3a.rdo

磁盘 2
(成员 b)
log1b.rdo log2b.rdo log3b.rdo

Copyright © Oracle Corporation, 2001. All rights reserved.

多元备份的原则
重做日志文件配置要求每组至少有两个重做日志成员,各成员位于不同的磁盘上以防出现
故障。
谨记以下要点:
• 组中的所有成员包含相同的信息且大小相同。
• 组成员同时进行更新。
• 每组应当含有同样数量的等大小成员。
通过重命名联机重做日志文件,可以更改联机重做日志文件的位置。在重命名联机重做日
志文件之前,请确保新的联机重做日志文件存在。Oracle 服务器仅更改控制文件内的指
针,并不从物理上重命名或创建任何操作系统文件。如果旧文件是 Oracle 管理文件并且
它确实存在,则它会被删除。

Oracle9i 数据库管理基础 II 7-13


多元备份的原则(续)
如何重新定位重做日志文件
1. 如果日志文件是当前日志,通过以下命令进行日志切换:
ALTER SYSTEM SWITCH LOGFILE;
2. 使用操作系统的复制实用程序(Unix 中的 cp 或 Windows NT 中的 COPY)将
重做日志文件从先前位置复制到新位置
3. 使用 ALTER DATABASE RENAME FILE 命令在控制文件中进行更改:
ALTER DATABASE [database]
RENAME FILE 'filename'[, 'filename']...
TO 'filename'[, 'filename']...
注:您也可以向组中添加新成员,然后删除旧成员。
如何向组中添加成员
您可以使用下面的 SQL 命令向现有的重做日志文件组中添加新成员:
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ 'filename' [REUSE]
[, 'filename' [REUSE]]...
TO {GROUP integer
|('filename'[, 'filename']...)
}
]...
如何从组中删除成员
如果一个联机重做日志成员处于 INVALID 状态,您也许希望删除该成员。请使用下列
命令:
ALTER DATABASE [database]
DROP LOGFILE MEMBER 'filename'[, 'filename']...
注:您不能从当前或活动的重做日志文件组中删除成员。

Oracle9i 数据库管理基础 II 7-14


Enterprise Manager 中的重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


使用 “重做日志组” (Redo Log Groups) 文件夹,您可以切换当前的重做日志组、对重做日
志组触发检查点操作、创建新的重做日志组,并可以重命名、删除或添加新的重做日志组
成员。
1. 在导航树中选择您的节点和数据库。
2. 选择 “存储” (Storage) > “重做日志组” (Redo Log Groups)。
3. 单击鼠标右键,从弹出的菜单中选择适当的操作。

Oracle9i 数据库管理基础 II 7-15


检查点

• 检查点用来确定应从何处开始恢复。
• 检查点位置 – 恢复开始的位置
• 检查点队列 – 灰数据块的链接列表

Copyright © Oracle Corporation, 2001. All rights reserved.

数据库检查点
检查点位置
重做日志中开始恢复的位置称为检查点位置。在该检查点之前的所有引用数据块都已由
DBWn 写入磁盘。该位置定义为它与重做日志末尾之间的 “距离”。还可以将它看成是检
查点队列中第一个条目的 “年龄”,该队列是按照数据块最初变灰时的顺序排列的灰数据
块链接列表。
检查点队列
检查点队列中的每个条目包含对应数据块的标识符(即文件编号与块编号),以及该数据
块最初变灰时在重做日志中所处的位置(称为重做字节地址或 RBA)。它还包括上一次
更改该数据块时在重做日志中所处的位置。检查点队列中的第一个条目标识数据库缓冲区
高速缓存中最早的灰数据块。DBWn 按检查点队列中的顺序从缓冲区高速缓存中写入块,
随着数据块的写入,对应的每个条目将被删除。

Oracle9i 数据库管理基础 II 7-16


检查点类型

• 完全检查点
– 写入所有灰缓冲区
– SHUTDOWN NORMAL、IMMEDIATE、或 TRANSACTIONAL
– ALTER SYSTEM CHECKPOINT
• 增量检查点(快速启动检查点)
– 定期写入
– 仅写入最旧的块
• 部分检查点
– 属于表空间的灰缓冲区
– ALTER TABLESPACE BEGIN BACKUP
– ALTER TABLESPACE tablespace OFFLINE NORMAL

Copyright © Oracle Corporation, 2001. All rights reserved.

检查点类型
当关闭数据库(异常关闭除外)或通过 ALTER SYSTEM CHECKPOINTA 命令手动启动检
查点操作时,将执行称为完全检查点的过程。在完全检查点操作中,DBWn 将数据库缓冲
区高速缓存中的所有灰缓冲区数据写入数据文件。
增量检查点(也称为快速启动检查点)是持续活动的检查点。DBWn 定期从检查点队列写
出缓冲区数据,从而不断推进内存中的增量检查点操作。增量检查点操作使 DBWn 写入
缓冲区高速缓存中的块,这样,最早变灰的缓冲区会被最先写入。增量检查点不更新数据
文件头。增量检查点记录在控制文件中。
ALTER TABLESPACE BEGIN BACKUP 命令仅对缓冲区高速缓存中属于该表空间的灰缓
冲区启动部分检查点操作。
ALTER TABLESPACE tablespace OFFLINE NORMAL 命令也可用于启动部分检查点
操作。

Oracle9i 数据库管理基础 II 7-17


CKPT 进程

例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn

数据文件 1 控制文件 重做日志


文件 1

参数文件 数据文件 2 重做日志


文件 2

数据文件 3
口令文件 归档日
数据库 志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

检查点进程 (CKPT)
检查点进程 (CKPT) 负责在执行各个检查点操作时向 DBWn 发出通知,并更新数据库
的数据文件和控制文件以指明最新的检查点。
每隔三秒,CKPT 就会在控制文件中记录检查点队列中最旧条目的 RBA。出现例程故
障后,通过该 RBA 可以在重做日志中找到例程恢复操作的起点。之所以能够做到这一
点,是因为系统能够保证通过 DBWn 将先前重做记录中表示的所有数据块都写入磁盘。
只有在出现日志切换的情况下,CKPT 才另外将该信息写入数据文件头。要提高性能,
不要一次写入所有文件头,而是按照所谓的 “惰性写入” (Lazy Write) 的方式进行分组更
新。日志切换并不强制将所有灰缓冲区都写入磁盘。

Oracle9i 数据库管理基础 II 7-18


多元备份的控制文件

例程
SGA
共享池
共享 SQL
Java 池 大型共享池 和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典高
进程 进程 区高速缓存 缓冲区 速缓存
PGA
SMON DBWn PMON CKPT LGWR ARCn

数据文件 1 重做日志
控制 文件 1
文件
参数文件 数据文件 2 重做日志
文件 2

数据文件 3
口令文件 归档日
数据库 志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

控制文件的功能
控制文件是一个描述数据库结构的二进制文件。只要装载或打开数据库,控制文件就必须
随时可供 Oracle 服务器写入。它的缺省名称取决于操作系统。如果没有该文件,就无法
装载数据库,系统会要求您恢复或重建控制文件。建议至少要配置两个控制文件,并将它
们分放在不同的磁盘上,以尽量减少丢失一个控制文件所带来的影响。
控制文件的内容
• 数据库名
• 创建数据库的时间戳
• 恢复操作所需的同步信息(检查点和日志序列信息)
• 数据文件和重做日志文件的名称和位置
• 数据库的归档模式
• 当前日志序列号
• 恢复管理器备份元数据

Oracle9i 数据库管理基础 II 7-19


动态视图
若要获得控制文件的位置和名称,请使用动态性能视图 V$PARAMETER 或
V$CONTROLFILE。
SQL> SELECT name
2> FROM v$controlfile;
NAME
-----------------------
/ORADATA/u01/ctrl01.ctl
/ORADATA/u02/ctrl02.ctl
2 rows selected.
如何对控制文件进行多元备份
若要添加新的控制文件或更改控制文件的号码或位置,请遵循以下步骤:
1. 关闭数据库。
2. 使用操作系统命令将现有的控制文件复制到一个不同的设备。
3. 编辑或添加 CONTROL_FILES 参数,并为所有控制文件指定名称。
4. 启动数据库。

Oracle9i 数据库管理基础 II 7-20


Enterprise Manager 中的控制文件

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


通过从 “存储管理” (Storage Management) 文件夹中选择 “控制文件” (Controlfile) 图标,可
以在属性工作表中查看为数据库创建的各个控制文件的名称及其它统计信息。

Oracle9i 数据库管理基础 II 7-21


ARCn 进程和归档日志文件
例程
SGA
共享池
Java 池 大型共享池 共享 SQL
和 PL/SQL
用户 服务器 数据库缓冲 重做日志 数据字典
进程 进程 区高速缓存 缓冲区 高速缓存
PGA
SMON DBWn PMON CKPT LGWR ARC0
ARC1

数据文件 1 控制文件 重做日志


文件 1
参数文件 数据文件 2 重做日志 归档日志
文件 2 文件目标 2
数据文件 3
Password
口令文件
file 归档日志
数据库 文件目标 1

Copyright © Oracle Corporation, 2001. All rights reserved.

归档后台进程的功能
ARCn 进程是一个可选进程。启用后,该进程会将重做日志文件归档到指定的存储区。该
进程对于设置为 ARCHIVELOG 模式,且每天 24 小时、每周 7 天运行的数据库的备份、
还原和恢复来说至关重要。
ARCn 进程在发生日志切换时启动,并将最近一个未归档的重做日志组中的一个成员复制
到至少一个目标(目标由一个或多个初始化参数指定)。
归档日志文件
当数据库设置为 ARCHIVELOG 模式时,LGWR 进程会等待联机重做日志文件被归档
(可手动,也可通过 ARCn 进程),然后才重新使用这些文件。
如果某个联机重做日志文件损坏,则使用同一组中的另一个成员。归档日志有益于备份和
恢复进程,这是因为:
• 数据库备份与归档重做日志文件结合使用时,可保证所有已提交数据可以被恢复到故
障点。
• 数据库联机时可进行有效的数据库备份。

Oracle9i 数据库管理基础 II 7-22


归档后台进程的功能(续)
归档注意事项
是否启用归档取决于每个数据库的可用性和可靠性要求。归档日志可存储在多个位置(两
个或多个目标位置),这是因为它们对于恢复至关重要。对于生产数据库来说,建议您在
使用归档日志功能时指定多个存储目标。

Oracle9i 数据库管理基础 II 7-23


数据库同步

• 所有数据文件(脱机或只读文件除外)必须首先同步,
数据库才能打开。
• 同步基于当前的检查点号。
• 应用重做日志文件中所记录的更改将同步数据文件。
• Oracle 服务器会自动请求重做日志文件。

Copyright © Oracle Corporation, 2001. All rights reserved.

数据库同步
只有当所有数据文件、重做日志和控制文件都已同步后,才能打开 Oracle 数据库。在这
种情况下需要进行恢复。
数据库文件同步
• 要打开数据库,所有数据文件必须具有相同的检查点号,除非它们处于脱机状态或者
是只读表空间的一部分。
• 所有 Oracle 文件的同步是基于当前的重做日志检查点和序列号来进行的。
• 归档和联机重做日志文件恢复已提交的事务处理并回退未提交的事务处理,以便同步
数据库文件。
• 归档和联机重做日志文件由 Oracle 服务器在恢复阶段自动请求。确保日志存在于请求
的位置。

Oracle9i 数据库管理基础 II 7-24


例程恢复的各个阶段

1. 未同步的数据文件
2. 前滚(重做) 例程
SGA
3. 文件中提交和未提交 共享池
的数据 共享 SQL
Java 池 大型共享池 和 PL/SQL
4. 回退(还原) 数据库缓冲 重做日志 数据字典
5. 文件中已提交的数据 区高速缓存 缓冲区 高速缓存

SQL*Plus 服务器 SMON DBWn PMON CKPT LGWR ARCn


进程
PGA
146.5 146.5 146.5
数据文件 1 控制文件 重做日志
文件 1
146.5 145 检查点
还原 重做日志
数据文件 文件 2
146.5
还原 数据文件 3

数据库

Copyright © Oracle Corporation, 2001. All rights reserved.

崩溃恢复阶段
与介质恢复不同,在出现例程故障后,Oracle 自动执行崩溃恢复和例程恢复。崩溃恢复和
例程恢复将数据库恢复到刚发生例程故障前的事务处理一致状态。根据定义,崩溃恢复是
对单例程配置中的数据库或 Oracle Real Application Clusters 配置(其中的所有例程都已崩
溃)中的数据库执行的恢复;相对而言,例程恢复是通过 Oracle Real Application Clusters
配置中的一个活动例程来恢复一个失败的例程。
崩溃恢复阶段
1. 数据文件未同步。
2. 在高速缓存恢复期间或前滚阶段,重做日志文件中自上一个检查点之后记录的所有
更改都将重新应用于这些数据文件。此阶段还重新生成还原或回退数据。
3. 现在,数据文件中包含了已提交的更改,还可能包含未提交的更改。数据库已打开。
4. 在事务处理恢复期间或回退阶段,尚未实际提交的任何更改都将被回退。
5. 现在,数据文件中只包含已提交的对数据库所做的更改。

Oracle9i 数据库管理基础 II 7-25


例程恢复阶段
阶段 说明
1 未同步文件:一旦发现未同步的文件,Oracle 服务器会确定是否需
要恢复数据库。例程故障,如关闭中止,就会导致不同步。在这种
情况下,未提交的数据都将丢失,原因是在关闭之前内存中的数据
尚未写入磁盘,因而文件未得到同步。
2 前滚阶段:DBWR 将已提交和未提交的数据都写入数据文件。前
滚阶段的目的是将日志文件中记录的所有更改应用到数据块中。
注:
- 在前滚阶段中将向还原段置入条目。由于重做日志存储数据更改
之前和之后的映像,因此如果在数据文件中发现未提交的块,且
没有回退条目,则会添加还原段条目。
- 使用日志缓冲区来应用重做日志。已用缓冲区被标记为用于恢
复,而不参与正常事务处理,直到它们被恢复进程放弃。
- 如果发生状态冲突(即,文件头声明该文件是只读的,但是控制
文件将其识别为可读写,或是相反情况),重做日志将应用于只
读数据文件。
3 数据文件中的已提交和未提交数据:前滚阶段成功结束后,所有已
提交数据都将驻留在数据文件中,尽管未提交数据仍有可能存在。
此时数据库即可打开。
4 回退阶段:要从文件中删除未提交数据,需要使用在前滚阶段或崩
溃之前就已置入数据的还原段。当 Oracle 服务器或用户请求块
时,将向先请求的一方回退相应的块。
因此,即使处在回退过程中,数据库也仍然可用。只有参与回退的
那些数据块不可用。
5 数据文件中的已提交数据:当前滚和回退阶段都结束后,只有已提
交的数据才驻留在磁盘上。

Oracle9i 数据库管理基础 II 7-26


优化崩溃恢复和例程
恢复的性能

• 优化例程恢复和崩溃恢复的持续时间
• 优化例程恢复的阶段

Copyright © Oracle Corporation, 2001. All rights reserved.

优化崩溃恢复和例程恢复的性能
在出现例程故障后,例程恢复和崩溃恢复自动将重做日志记录应用于 Oracle 数据块。
要在例程恢复的持续时间与日常性能之间取得平衡,采用的主要手段就是影响 Oracle 执
行检查点操作的频率。您可以尽量减少恢复过程中所处理的块的数量,方法是让检查点处
于最新重做日志记录之后的若干块处。但是,频繁地执行检查点操作将会给正常操作带来
更大的性能开销。

Oracle9i 数据库管理基础 II 7-27


优化例程恢复和崩溃恢复的持续时间

要将例程恢复和崩溃恢复的持续时间保持在用户指定的范围
内,可以采用以下方法:
• 设置初始化参数以影响恢复过程中所涉及的重做日志记
录和数据块的数量。
• 调整重做日志文件的大小以影响检查点操作的频率。
• 发出 SQL 语句以启动检查点操作。
• 并行执行例程恢复操作。

Copyright © Oracle Corporation, 2001. All rights reserved.

优化崩溃恢复和例程恢复的性能(续)
要将例程恢复和崩溃恢复的持续时间保持在用户指定的范围内,可以采用多种方法:
快速启动故障恢复功能可用来控制例程恢复。该功能通过设定前滚时间的范围并使其可以
预知,从而缩短前滚时间,同时还节省了执行回退所需的时间。快速启动故障恢复的基础
是快速启动检查点体系结构。通过初始化参数可指定完成恢复操作的前滚阶段的目标时间。
重做日志文件的大小直接影响检查点操作。最小日志的大小越小,Oracle 服务器越可以频
繁地将灰缓冲区写入磁盘,以确保在当前日志完全填满之前,使检查点的位置前进到该当
前日志;这样,就可以重新使用该日志。

Oracle9i 数据库管理基础 II 7-28


影响检查点的初始化参数

参数 定义

FAST_START_MTTR_TARGET 预计的 MTTR(以秒计)

自增量检查点(该检查点位于上次写入
LOG_CHECKPOINT_TIMEOUT
重做日志的位置处)起经过的时间

在增量检查点与写入重做日志的上一个
LOG_CHECKPOINT_INTERVAL 块之间,可以存在的重做日志文件块的

数量

Copyright © Oracle Corporation, 2001. All rights reserved.

使用初始化参数影响恢复过程
您可以使用这三个初始化参数来影响 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 提供了当前的恢复参数设置。

Oracle9i 数据库管理基础 II 7-29


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 由检查点写入操作所写入的块的数量。

Oracle9i 数据库管理基础 II 7-30


控制例程崩溃恢复时间

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager 来控制例程崩溃恢复时间


可以使用 “配置” (Configuration) 属性工作表的 “恢复” (Recovery) 页来设置
FAST_START_MTTR_TARGET。

Oracle9i 数据库管理基础 II 7-31


V$INSTANCE_RECOVERY

• 用来监视可用于限制恢复 I/O 的机制


• 本视图中的统计信息用来计算哪一个参数对检查点影响
最大。

Copyright © Oracle Corporation, 2001. All rights reserved.

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:要保证在检查点操作完成之前不进行日志切换而需要的
重做块的最大数量。

Oracle9i 数据库管理基础 II 7-32


V$INSTANCE_RECOVERY (续)
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(平均恢复时间)目标值,以秒计。TARGET_MTTR 值是
根据 FAST_START_MTTR_TARGET 参数的值计算出来的(TARGET_MTTR 值只在内部
使用),它通常是 FAST_START_MTTR_TARGET 参数值的近似值。
但是,如果 FAST_START_MTTR_TARGET 参数的值非常小(如 1 秒)或非常大(如
3600 秒),则计算过程将生成一个由系统限制决定的目标值。在这种情况下,
TARGET_MTTR 值则成为恢复操作要采用的最短计算时间或最长计算时间。如果未指定
FAST_START_MTTR_TARGET,则该字段 (TARGET_MTTR) 的值就是当前估计的
MTTR 值。
ESTIMATED_MTTR:根据灰缓冲区和日志块的数量而给定的当前估计平均恢复时间
(MTTR)(如果未指定 FAST_START_MTTR_TARGET,则该值为 0)。
通常,根据您的系统当前处理的工作量,该值能够估计出恢复操作需要多长时间。
CKPT_BLOCK_WRITES:由检查点写入操作写入的块数

Oracle9i 数据库管理基础 II 7-33


优化崩溃恢复和例程
恢复的阶段

• 优化前滚阶段
• 优化回退阶段

Copyright © Oracle Corporation, 2001. All rights reserved.

优化例程恢复的阶段
您可以使用参数来控制例程恢复的前滚和回退阶段,以提高恢复操作的效率。所需的总恢
复时间为前滚和回退各自所需时间的总和。

Oracle9i 数据库管理基础 II 7-34


优化前滚阶段

• 并行块恢复
• RECOVERY_PARALLELISM 可指定并发恢复进程的数量

Copyright © Oracle Corporation, 2001. All rights reserved.

优化前滚阶段
RECOVERY_PARALLELISM 初始化参数用来指定例程或崩溃恢复操作中并发进程的数量。
使用多个进程实际上相当于提供并行块恢复。在前滚阶段,不同的进程分配给不同的块。
RECOVERY_PARALLELISM 初始化参数仅指定例程或崩溃恢复中并发恢复进程的数量。
介质恢复不受此参数影响。对于介质恢复,可在 RECOVER DATABASE 语句中使用
PARALLEL 子句。

Oracle9i 数据库管理基础 II 7-35


优化回退阶段

• 快速启动按需回退
• 快速启动并行回退

Copyright © Oracle Corporation, 2001. All rights reserved.

优化回退阶段
快速启动按需回退是一种自动功能,借助此功能,恢复操作的前滚阶段一结束,就可以立
即开始新的事务处理。如果用户试图访问被死事务处理锁定的行,则仅回退完成该事务处
理所需的更改。回退是根据需要进行的。

Oracle9i 数据库管理基础 II 7-36


快速启动按需回退

服务器进程遇到要回退的数据时将执行以下操作:
• 回退包含所需行的块
• 将其余的恢复工作(可能是并行的)转交给 SMON

响应
增强

Copyright © Oracle Corporation, 2001. All rights reserved.

快速启动按需回退
用户事务处理仅对该事务处理试图访问的块启动回退。剩余的块由 SMON 在后台恢复
(可能是并行的)。这样做的优势在于:不必等到一个较长事务的处理工作被全部回退即
可完成另一个事务处理。

Oracle9i 数据库管理基础 II 7-37


快速启动并行回退

SMON

P000

P001

P002

P003
还原段

Copyright © Oracle Corporation, 2001. All rights reserved.

快速启动并行回退
快速启动并行回退使 SMON 可以充当协调程序并使用多个服务器进程来完成回退操作。
当 SMON 确定死事务处理已生成大量的还原块时,它会自动启动并行回退。
对于长时间运行事务处理的系统,特别是对执行并行的 INSERT、UPDATE 和 DELETE 操
作的系统,该功能非常有用。

Oracle9i 数据库管理基础 II 7-38


控制快速启动并行回退

FAST_START_PARALLEL_ROLLBACK 参数

值 并行恢复服务器的最大数量

FALSE 无

LOW (缺省值) 2 * CPU_COUNT

HIGH 4 * CPU_COUNT

Copyright © Oracle Corporation, 2001. All rights reserved.

控制快速启动并行回退
事务处理恢复中所涉及的进程数量由动态初始化参数
FAST_START_PARALLEL_ROLLBACK 设置。上表显示了该参数的有效值及其对快速启
动并行回退的影响。

Oracle9i 数据库管理基础 II 7-39


监视并行回退

• V$FAST_START_SERVERS
• V$FAST_START_TRANSACTIONS

Copyright © Oracle Corporation, 2001. All rights reserved.

监视并行回退
使用以下查询可以监视将并行查询从属用于快速启动并行回退的情况:
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 则分别指
定已完成的工作量和总工作量。

Oracle9i 数据库管理基础 II 7-40


小结

在这一课中,您应该能够掌握:
• 了解对恢复操作十分关键的例程和数据库的组件
• 优化崩溃恢复和例程恢复

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 7-41


练习 7 概览

此练习涉及以下主题:
• 查询动态性能视图以确定数据库的当前状态和结构
• 说明如何使用特定的初始化参数
• 设置控制文件和重做日志文件的镜像

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 7-42


练习 7
1. 查询可用来查找数据库中所有数据文件的名称的 V$ 视图。
2. 查询可用来查找数据库中的当前联机重做日志以及所有重做日志的名称的 V$ 视图。
3. 查询可用来查找数据库中所有控制文件的名称的 V$ 视图。
4. 查询可用来查找数据库名称的 V$ 视图。
5. 查询可用来查找关闭数据库之前仍与例程连接的进程的 V$ 视图。
6. 哪一个初始化参数可以在 SGA 中配置一块内存区域,在将恢复信息写入磁盘之前可
以当作这些信息的缓冲区?
7. 什么是大型共享池?何时使用?配置它需要使用什么初始化参数?
8. 说明 FAST_START_MTTR_TARGET 参数在例程恢复过程中的重要性。
9. 在准备使用 Oracle Enterprise Manager 时,执行目标发现并设置您的 “首选身份证明”
(Preferred Credentials)。

仅用于 Oracle Classroom


如果您处在 Oracle Classroom 环境中,则必须执行以下专用于 Oracle Classroom 启动
的四个步骤:
a. 单击桌面上的 omsconfig 文件更新图标,并输入您的班级所使用的 Unix 服务器的
名称。教师负责提供该服务器名称。请完全按原样输入。此名称需要区分大小写。
b. 打开一个 MSDOS 窗口。
c. 在命令提示符处输入:oemctl start oms
等待出现以下消息:“Oracleoracle901_homeManagementServer 服务已成功启动。”
d. 关闭该 MSDOS 窗口。

启动 Oracle Enterprise Manager 控制台,将 “管理员” (Administrator) 设置为 sysman


并将口令设置为 oem_temp。出现提示后,将口令更改为 oracle。从 “导航器”
(Navigator) 中选择 “发现节点” (Discover Nodes),然后输入正在使用的数据库所在的
服务器主机名。

为您的数据库和服务器(节点)设置 “首选身份证明” (Preferred Credentials),以便在


“首选身份证明” 页上运行作业。选择数据库,然后提供用户名 sys 和口令
change_on_install,或使用教师提供的用户名和口令。在列表中向下滚动到节点
所在的位置。突出显示您的数据库服务器节点并输入您在该服务器上的帐户所使用的
用户名和口令。
10. 设置控制文件的镜像,这样您可拥有两个控制文件。将第二个控制文件放入
$HOME/ORADATA/u02 目录。
11. 设置联机重做日志文件的镜像以便每组具有两个成员。将每组的第二个成员放入
$HOME/ORADATA/u04 目录。
12. 查询 V$LOGFILE 以验证您所做的更改。

Oracle9i 数据库管理基础 II 7-43


Oracle9i 数据库管理基础 II 7-44
配置数据库归档模式

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 说明 ARCHIVELOG 与 NOARCHIVELOG 模式之间
的区别
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档说明 ARCHIVELOG 与
NOARCHIVELOG 模式之间的区别
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 8-2


重做日志历史记录

LGWR 无重做历史记录

052

054 053
重做历史记录
051
052
联机重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

重做日志历史记录
所有事务处理都记录在联机重做日志文件中。这样在数据库发生故障时就可以自动恢复
事务处理了。
如果数据库配置为 NOARCHIVELOG 模式,则没有重做历史记录保存到归档日志文件
中,恢复操作将受到限制,并且可能会导致事务处理工作丢失。这是日志文件自动循环
的结果,在该循环过程中,恢复操作所需的较旧的日志文件被覆盖,只有该事务历史记
录的最新部分可用。
您可以将数据库配置为 ARCHIVELOG 模式,以便重做信息的历史记录可以保留在归档
文件中。归档重做日志文件可以用于介质恢复。
数据库最初可以在 ARCHIVELOG 模式下创建,但缺省情况下配置为 NOARCHIVELOG
模式。

Oracle9i 数据库管理基础 II 8-3


NOARCHIVELOG 模式

LGWR

无重做历
史记录
联机重做日志文件
052 053
053
054

052
052 053
053
054

Copyright © Oracle Corporation, 2001. All rights reserved.

NOARCHIVELOG 模式
缺省情况下,数据库是以 NOARCHIVELOG 模式创建的。在 NOARCHIVELOG 模式下操
作数据库时有以下特性:
• 重做日志文件以循环的方式使用。
• 重做日志文件可以在检查点发生之后立即重新使用。
• 重做日志被覆盖后,介质恢复将只能恢复到上一次完全备份。
NOARCHIVELOG 模式的含义
• 如果某个表空间由于故障而不可用,您将无法继续对数据库进行操作,除非删除了该
表空间或从备份还原了整个数据库。
• 您只能在数据库关闭时对数据库执行操作系统备份。而且,必须使用 NORMAL、
IMMEDIATE 或 TRANSACTIONAL 选项关闭数据库。
• 您必须在每次备份时完整备份所有的数据文件和控制文件。尽管也可以备份联机重做
日志文件,但这是不必要的。由于此类备份中日志文件是一致的,无需恢复,因此,
不需要备份联机日志。
• 如果联机重做日志文件已被覆盖,则将丢失上次完全备份后的所有数据。

Oracle9i 数据库管理基础 II 8-4


NOARCHIVELOG 模式(续)
NOARCHIVELOG 模式下的介质恢复选项
您必须从数据库的完全备份中还原数据文件和控制文件。如果使用导出实用程序来备份数
据库,则可使用导入实用程序还原丢失的数据。但是,通过这种方法恢复的数据并不完
整,在导出后执行的事务处理工作将丢失。

Oracle9i 数据库管理基础 II 8-5


ARCHIVELOG 模式

LGWR

重做
历史记录
联机重做日志文件
052 053
051
054 053 051

052

052 051
053
054 053 053

归档日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

ARCHIVELOG 模式
在发生检查点并且已经通过 ARCn 后台进程备份重做日志文件之前,不能重新使用填满的
重做日志文件。控制文件中将有一个条目记录归档日志文件的日志序列号。
对数据库的最新更改在任何时候均可用于例程恢复,而归档重做日志文件可以用于介质恢
复。
归档要求
数据库必须处于 ARCHIVELOG 模式。通过发出命令将数据库置于 ARCHIVELOG 模式可
以更新控制文件。可以启用 ARCn 后台进程来实现自动归档。
应该有足够的资源来存放生成的归档重做日志文件。

Oracle9i 数据库管理基础 II 8-6


ARCHIVELOG 模式(续)
将数据库设置为 ARCHIVELOG 模式的含义

• 出现介质故障时,可以防止数据库丢失数据。
• 可以在数据库联机时对其进行备份。
• 由于介质故障导致表空间(非 SYSTEM)脱机时,数据库的其余部分仍可用,因为表
空间(非 SYSTEM)可以在数据库打开时恢复。
介质恢复选项
• 无论数据库处于联机或脱机状态,您都可以还原损坏文件的备份副本,并使用归档日
志文件将数据文件更新为当前的版本。
• 可以将数据库恢复至特定的时间点。
• 可以将数据库恢复至指定归档日志文件的末尾。
• 可以将数据库恢复至特定的系统更改号 (SCN)。

Oracle9i 数据库管理基础 II 8-7


更改归档模式

1 SHUTDOWN NORMAL/IMMEDIATE/TRANSACTIONAL

2 STARTUP MOUNT 4 ALTER DATABASE OPEN

初始化参数 控制文件

3 ALTER DATABASE ARCHIVELOG 5 完全数据库备份

Copyright © Oracle Corporation, 2001. All rights reserved.

更改归档模式
初始归档模式在 CREATE DATABASE 语句中进行设置。缺省值为 NOARCHIVELOG 模
式,在该模式下,不对创建数据库过程中生成的重做信息进行归档。
您可在数据库处于装载状态时使用 ALTER DATABASE 命令更改 ARCHIVELOG 模式。
SQL> ALTER DATABASE [ archivelog | noarchivelog ]
其中:
• archivelog 将重做日志文件组设置为 ARCHIVELOG 模式
• noarchivelog 将重做日志文件组设置为 NOARCHIVELOG 模式

Oracle9i 数据库管理基础 II 8-8


更改归档模式(续)
要更改数据库的 ARCHIVELOG 模式,用户必须具有 ALTER SYSTEM 权限。

步骤 说明
1 关闭数据库:SQL> SHUTDOWN IMMEDIATE
2 在装载状态下启动数据库,以更改数据库的 Archivelog
模式:SQL> STARTUP MOUNT
3 使用 ALTER DATABASE 命令将数据库设置为 Archivelog
模式:
SQL> ALTER DATABASE ARCHIVELOG;
4 打开数据库:
SQL> ALTER DATABASE OPEN;
5 对数据库进行完全备份。

注:将数据库模式从 NOARCHIVELOG 模式更改为 ARCHIVELOG 模式后,您必须备份所


有数据库文件和控制文件。您上一次的备份不再有用,因为它是在数据库处于
NOARCHIVELOG 模式下备份的。
将数据库置于 ARCHIVELOG 模式之后进行的新备份,将由所有以后的归档重做日志文件
应用。
将数据库设置为 ARCHIVELOG 模式并不 启用归档程序 (ARCn) 进程。

Oracle9i 数据库管理基础 II 8-9


设置归档模式

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


可使用 “配置” (Configuration) 属性工作表中的 “恢复” (Recovery) 页来设置
ARCHIVELOG 模式。另外,通过 “对象” (Object) 菜单,您可打开或关闭联机重做日志
文件的自动归档。

Oracle9i 数据库管理基础 II 8-10


自动和手动归档

• 自动归档:LOG_ARCHIVE_START=TRUE

053 ARC0 053

• 手动归档:LOG_ARCHIVE_START=FALSE

053 053

DBA

Copyright © Oracle Corporation, 2001. All rights reserved.

自动和手动归档
归档进程
将数据库设置为 ARCHIVELOG 模式后,您必须决定是自动还是手动归档联机重做日志文
件。这是创建归档重做日志文件以便用于恢复时的第二步。
自动和手动归档
• 在自动归档过程中,将启用 ARCn 后台进程,该进程在重做日志文件填满后复制这些
文件。
• 在手动归档过程中,必须使用 SQL*Plus 或 Oracle Enterprise Manager 复制文件。
• 建议您启用日志文件的自动归档。

Oracle9i 数据库管理基础 II 8-11


自动和手动归档(续)
原则
• 在决定归档模式(自动或手动)之前,必须将数据库设置为 ARCHIVELOG 模式。
• 如果未切换到 ARCHIVELOG 模式,将导致 ARCn 无法复制重做日志文件。
• 启用归档进程之前,应彻底关闭数据库(使用正常、立即或事务处理选项)。
注:如果由于某种原因导致归档进程 (ARCn) 失败,一旦事务处理活动填满了所有重做日
志,Oracle 服务器就会停止。将数据库设置为 ARCHIVELOG 模式将通知 Oracle 服务器不
要覆盖联机重做日志,除非这些日志已经归档。因此,联机重做日志的归档必须与系统中
的事务处理活动(生成重做日志)保持同步。

Oracle9i 数据库管理基础 II 8-12


启用自动归档

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


使用 “配置” (Configuration) 属性工作表中的 “恢复” (Recovery) 页可以启用自动归档。

Oracle9i 数据库管理基础 II 8-13


指定多个 ARCn 进程

• 动态参数 LOG_ARCHIVE_MAX_PROCESSES 用于控制在


例程启动时启动的归档进程数。
• 最多可指定十个 ARCn 进程。
• ARCn 进程数可通过 ALTER SYSTEM 命令进行更改。

Copyright © Oracle Corporation, 2001. All rights reserved.

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 设置的值,也可随时终止归档进程。

Oracle9i 数据库管理基础 II 8-14


停止或启动附加归档进程

LOG_ARCHIVE_MAX_PROCESSES=2

ARC0ARC1
053
053 053

联机重做日志 归档重做日志
ARC2

ALTER SYSTEM SET


LOG_ARCHIVE_MAX_PROCESSES = 3;

Copyright © Oracle Corporation, 2001. All rights reserved.

ARCn 进程的动态数目
在事务处理负载较重或活动较多的时期,可临时启动更多归档进程以避免归档瓶颈。事务
处理活动恢复到正常水平后,可停止部分 ARCn 进程。
例如,在一个月中的每一天,可以启动有两个归档进程的例程。在每个月的最后一天,活
动量总是增多,因此可以启动更多进程:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;
这一天过后,如果例程未关闭,则可发出下面的 SQL 命令来停止附加的归档进程:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=2;

Oracle9i 数据库管理基础 II 8-15


在例程启动时启用自动归档

已归档
已归档
当前 归档日志文件
051
051
052
053
051
051
联机重做日志
ARC0

LOG_ARCHIVE_START=TRUE 052
052
LOG_ARCHIVE_MAX_PROCESSES=n

Copyright © Oracle Corporation, 2001. All rights reserved.

在例程启动时启用自动归档
如果数据库处于 ARCHIVELOG 模式,通过设置以下参数,可以在每次启动数据库例程时
启动归档程序进程:
LOG_ARCHIVE_START = boolean
其中:
• 如果 Boolean 为 TRUE,将在例程启动时自动启动 n 个 ARCn 进程,其中 n 是由
LOG_ARCHIVE_MAX_PROCESSES 确定的值。
• 如果 Boolean 为 FALSE,将禁止在例程启动时启动 ARCn。
设置初始化参数后,ARCn 进程将在例程启动时自动启动,而无需您手动启动自动归档。

Oracle9i 数据库管理基础 II 8-16


在例程启动后启用自动归档

ALTER SYSTEM ARCHIVE LOG


051 052 START;
051 052
联机重做日志

ARC0 051
3

Copyright © Oracle Corporation, 2001. All rights reserved.

在例程启动后启用自动归档
您可使用 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 进程将在日志文件填满时自动将其归档。

您还可以选择使用带有 TO 选项的 ALTER SYSTEM ARCHIVE LOG START 命令指定归


档目标。

Oracle9i 数据库管理基础 II 8-17


禁用自动归档

2
初始化
参数
LOG_ARCHIVE_START
1

ALTER SYSTEM ARCHIVE LOG STOP;

051 052

联机重做日志
051
ARC0
052

Copyright © Oracle Corporation, 2001. All rights reserved.

禁用自动归档
您可随时使用 SQL*Plus 中的 ALTER SYSTEM 命令或通过 Oracle Enterprise Manager 停止
归档进程,无论这些进程是如何启动的。
步骤 说明
1 如果已启用 ARCn 进程,则执行以下命令以停止
ARCn 进程:
SQL> ALTER SYSTEM ARCHIVE LOG STOP;
2 通过设置以下初始化参数,确保未在例程启动时启
用自动归档:
LOG_ARCHIVE_START=FALSE

注:停止 ARCn 进程并不会将数据库设置为 NOARCHIVELOG 模式。如果所有重做日志


组都已使用但未归档,处于 ARCHIVELOG 模式的数据库将会停止。

Oracle9i 数据库管理基础 II 8-18


手动归档联机重做日志文件

ALTER SYSTEM ARCHIVE LOG CURRENT;

051 052 053

联机重做日志
服务器 051
进程
2 052

Copyright © Oracle Corporation, 2001. All rights reserved.

手动归档重做日志文件
如果数据库处于 ARCHIVELOG 模式,且未启用自动归档,则必须手动归档联机重做日志
文件。
步骤 说明
1 执行 ALTER SYSTEM SQL 命令:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
2 用户执行命令的服务器进程会执行联机重做日志文件
的归档。

此外,您可在启用自动归档的情况下使用手动归档,将非活动的组重新归档到另一个目标。
您必须使用管理员权限进行连接,才能使用 ALTER SYSTEM ARCHIVE LOG 命令。

Oracle9i 数据库管理基础 II 8-19


手动归档重做日志文件(续)
手动归档联机重做日志文件时,可以在 ALTER SYSTEM ARCHIVE LOG 命令中使用以下
选项:

选项 说明

THREAD 指定包含要归档的重做日志文件组的线程(用于 Oracle


Parallel Server)
SEQUENCE 归档由日志序列号标识的联机重做日志文件组

CHANGE 基于 SCN 进行归档

GROUP 归档联机重做日志文件组

CURRENT 归档指定线程的当前重做日志文件组

LOGFILE 归档包含有由文件名标识的成员的重做日志文件组

NEXT 将尚未归档的最旧的联机重做日志文件组进行归档

ALL 对指定线程的已满但尚未归档的所有联机重做日志文件组
进行归档
START 启用重做日志文件组的自动归档

TO 指定重做日志文件组归档的目标位置

STOP 禁用重做日志文件组的自动归档

Oracle9i 数据库管理基础 II 8-20


手动归档重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


通过 “对象” (Object) 菜单可以手动归档联机重做日志文件。

Oracle9i 数据库管理基础 II 8-21


指定归档日志目标

• 使用 LOG_ARCHIVE_DEST_n 最多可指定十个归档目标。
• 使用 LOG_ARCHIVE_FORMAT 可在文件名中包括日志序
列号和线程号。

Copyright © Oracle Corporation, 2001. All rights reserved.

指定归档日志目标
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 可在文件名中包括日志序列号和线程号。

Oracle9i 数据库管理基础 II 8-22


指定多个归档日志目标

使用 LOG_ARCHIVE_DEST_n 最多可指定十个归档目标,
这些目标可位于:
• 本地磁盘
• 远程备用数据库

log_archive_dest_1 = "LOCATION=/archive1"
log_archive_dest_2 = "SERVICE=standby_db1"

Copyright © Oracle Corporation, 2001. All rights reserved.

指定多个归档位置
LOG_ARCHIVE_DEST_n 是动态参数,可以在系统级或会话级对其进行修改。通过添加
后缀 1 到 10,最多可以指定十个目标。
目标可以是:
• 本地文件系统位置,由关键字 LOCATION 定义。指定的位置必须是有效的,并且不能
是一个 NFS 装载的目录。
• 远程目标的 Oracle Net 别名,由关键字 SERVICE 指定。指定的服务名通过使用本地
的 tnsnames.ora 文件进行解析,以标识远程数据库。Oracle9i 支持使用 IPC 或
TCP/IP 协议将归档日志文件发送到远程节点。只能为每个远程数据库指定一个归档目
标。
注:配置归档日志目标时,确保根据所用的操作系统环境来设置路径名。
您必须为至少一个目标指定 LOCATION 参数。

Oracle9i 数据库管理基础 II 8-23


LOG_ARCHIVE_DEST_n 选项

• 将归档位置设置为 MANDATORY 或 OPTIONAL。


• 在出现故障之后、重试之前定义时间。

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"

Copyright © Oracle Corporation, 2001. All rights reserved.

LOG_ARCHIVE_DEST_n 的附加选项
MANDATORY 与 OPTIONAL
使用 LOG_ARCHIVE_DEST_n 参数时,可以将目标指定为强制 (mandatory) 或可选
(optional),如下所示:
• MANDATORY 表示必须成功完成归档到该目标的操作才可以覆盖联机重做日志文件。
• OPTIONAL 表示即使联机重做日志文件尚未成功地归档到该目标,也可以重新使用。
这是缺省设置。
REOPEN 属性
• REOPEN 属性定义发生故障时是否必须重新尝试归档到目标。如果为关键字 REOPEN
指定了值,如 REOPEN=600,则若发生故障,在经过指定时间(以秒计)后,归档程
序将尝试写入该目标。缺省值为 300 秒。归档到目标的尝试次数没有限制。归档中的
所有错误将在主站点的警报文件中报告。
• 如果未指定 REOPEN,则可选目标上的错误将被记录并忽略。不再将重做日志发送到
这些目标。在归档成功之前,强制目标上的错误将导致无法重新使用联机重做日志。
只要归档不成功,归档目标的状态就设置为 ERROR。

Oracle9i 数据库管理基础 II 8-24


指定本地目标的最小数量

• LOG_ARCHIVE_MIN_SUCCEED_DEST 参数

LOG_ARCHIVE_MIN_SUCCEED_DEST = 2

• 只有在下列情况下才能重新使用联机重做日志组:
– 已归档到所有强制位置
– 已归档的本地位置数大于或等于
LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值

Copyright © Oracle Corporation, 2001. All rights reserved.

指定成功归档位置的最小数量
可以使用联机重做日志文件之前需要成功归档的目标数量是根据以下设置决定的:
• 定义为 MANDATORY 的目标的数量
• LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值。该参数用于为需要归档的本地目标数
指定一个下限值。如果该值小于强制本地目标的数量,则它对归档行为没有影响。如
果该值大于强制本地目标的数量,则本地归档目标的数量必须至少等于该值,才可以
重新使用联机重做日志文件。

Oracle9i 数据库管理基础 II 8-25


指定成功归档位置的最小数量(续)
示例:假定 LOG_ARCHIVE_MIN_SUCCEED_DEST 设置为 2 。如果强制本地目标的数量为
3,则必须归档这 3 个位置,才可以重新使用联机重做日志文件。相反,如果强制本地归档
目标的数量为 1,则必须至少归档 1 个可选本地归档目标,才可以重新使用联机重做日志
文件。也就是说,LOG_ARCHIVE_MIN_SUCCEED_DEST 可以用于归档到一个或多个可选
强制目标,但反过来不行。

Oracle9i 数据库管理基础 II 8-26


控制归档到目标

• 可以使用动态初始化参数
LOG_ARCHIVE_DEST_STATE_n 禁用归档目标。

LOG_ARCHIVE_DEST_STATE_2 = DEFER

ALTER SYSTEM SET log_archive_dest_state_3 = DEFER;

• 可以重新启用归档到某一目标的操作。
LOG_ARCHIVE_DEST_STATE_2 = ENABLE

ALTER SYSTEM SET log_archive_dest_state_3 =


ENABLE;

Copyright © Oracle Corporation, 2001. All rights reserved.

LOG_ARCHIVE_DEST_STATE_n 参数
• 归档目标的状态可以动态地进行更改。缺省情况下,归档目标是 ENABLE 状态,表明
Oracle 服务器可以使用该目标。
• 归档目标的状态可以通过设置相应的 LOG_ARCHIVE_DEST_STATE_n 参数来进行修
改。例如,要在发生错误时暂时停止归档到强制位置,可以将该目标的状态设置为
DEFER。在参数文件中可能定义了一个目标,但它设置为 DEFER。当另一目标出现错
误或需要维护时,可以启用该目标。
注:如果一个目标的状态设置为 DEFER,则不会执行归档到该目标的操作。如果该目标
的状态更改为 ENABLE,则必须手动将所有缺失的日志归档到该目标。

Oracle9i 数据库管理基础 II 8-27


指定文件名格式

联机重做日志文件

组1 组2
已归档的日志文件
053 053
052
052
ARC0
ARC0 052

053 053
052 /ORADATA/archive/arch%s.arc

LOG_ARCHIVE_DEST_n

LOG_ARCHIVE_FORMAT

Copyright © Oracle Corporation, 2001. All rights reserved.

指定 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 来填补空位使该值长度保持固定。

Oracle9i 数据库管理基础 II 8-28


获取归档日志信息

动态视图

V$ARCHIVED_LOG
V$ARCHIVE_DEST
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
命令行

ARCHIVE LOG LIST

Copyright © Oracle Corporation, 2001. All rights reserved.

动态视图
您可使用下列视图查看有关归档日志文件的信息:
• 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

Oracle9i 数据库管理基础 II 8-29


动态视图(续)
注:该查询显示 5 行,每一行列出一个可能的目标的信息。INACTIVE 状态表示该目标未
定义。VALID 状态表示该目标已启用且没有错误。
要检查每个目标的错误和发生错误的日志序列号,可使用以下查询:
SELECT destination,fail_sequence,error
FROM v$archive_dest
WHERE status='ERROR';
DESTINATION FAIL_SEQ ERROR
------------ -------- -------------------------------
standbyDEMO 2010 ORA-12154: TNS:could not
resolve service name
1 row selected.
• V$LOG_HISTORY:包含控制文件中的日志文件信息。
• V$DATABASE:归档的当前状态。
• V$ARCHIVE_PROCESSES:提供有关例程的各种 ARCH 进程的状态的信息。
SELECT * FROM v$archive_processes;
PROCESS STATUS LOG_SEQUENCE STAT
------- ---------- ------------- -----
0 ACTIVE 2014 BUSY
1 ACTIVE 0 IDLE
2 ACTIVE 0 IDLE
3 STOPPED 0 IDLE
4 STOPPED 0 IDLE
5 STOPPED 0 IDLE
6 STOPPED 0 IDLE
7 STOPPED 0 IDLE
8 STOPPED 0 IDLE
9 STOPPED 0 IDLE
10 rows selected.
10 个可能的归档程序进程中的每一个进程都显示为一行。ACTIVE 状态表明进程已启动并
正在运行。当前正在归档的进程的状态为 BUSY。正忙的进程的 LOG_SEQUENCE 列显示该
进程正在归档的当前日志序列号。
注:您也可使用 RMAN LIST 命令获取有关记录在资料档案库中的归档重做日志文件的信
息。

Oracle9i 数据库管理基础 II 8-30


归档日志信息
ARCHIVE LOG LIST 命令向 DBA 提供数据库的日志模式和归档状态的信息:
SQL> ARCHIVE LOG LIST
Database log mode Archive mode
Automatic archival Enabled
Archive destination /ORADATA/ARCHIVE1/
Oldest online log sequence 1304
Next log sequence to archive 1305
Current log sequence 1305

归档列表显示 说明
Database log mode 归档的当前模式
Automatic archival 可选归档程序进程的状态
Archive destination 日志文件将要复制(按照手册说明或通过
单独的进程)到的目标;即使这些目标都
是强制性的,也只显示它们中的一个
Oldest online log sequence 最旧的联机日志的序列号
Next log sequence to archive 下一个要归档的重做日志(仅在 Archivelog
模式下显示)
Current log sequence 当前日志文件的序列号

Oracle9i 数据库管理基础 II 8-31


小结

在这一课中,您应该能够掌握:
• 将数据库配置为 ARCHIVELOG 模式
• 启用自动归档
• 执行手动日志归档
• 配置多个归档进程
• 配置多个目标

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 8-32


练习 8 概览

此练习涉及以下主题:
• 启用和禁用自动归档
• 配置多个归档程序进程
• 配置多个归档目标
• 执行重做日志文件的手动归档

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 8-33


练习 8
1. 对初始化参数进行如下更改:
– 启用归档
– 将日志文件归档到两个目标:$HOME/ORADATA/ARCHIVE1 和
$HOME/ORADATA/ ARCHIVE2 目录。$HOME/ORADATA/ARCHIVE1 是强制
的,$HOME/ORADATA/ARCHIVE2 是可选的。
– 使用 arch_%s.arc 归档格式
– 在例程启动时衍生两个归档进程
2. 调用 SQL*Plus,以 sysdba 用户身份连接,使用 Immediate 选项关闭例程。
3. 以 MOUNT 模式启动数据库。
4. 列出 LOG_ARCHIVE_DEST、LOG_ARCHIVE_START 和 LOG_ARCHIVE_FORMAT 参
数,并记下它们的值。
5. 执行 ARCHIVE LOG LIST 命令。注意数据库的 ARCHIVELOG 模式以及是否启用了
自动归档。
6. 将数据库设置为 ARCHIVELOG 模式。
7. 打开数据库。
8. 执行 ARCHIVE LOG LIST 命令。同时验证两个归档程序进程是否正在运行。
9. 将 ALTER SYSTEM SWITCH LOGFILE 命令执行两次,然后显示 ARCHIVE 参数的
值。看到归档日志文件了吗?文件名的格式是什么?
10. 执行 ALTER SYSTEM ARCHIVE LOG STOP 命令,停止自动归档。
11. 多次执行 ALTER SYSTEM SWITCH LOGFILE 命令以循环使用所有联机重做日志
组。发生什么现象?为什么?
12. 建立第二个 telnet 会话并调用 SQL*Plus。以 sysdba 用户身份连接。
13. 使用 ALTER SYSTEM ARCHIVE LOG START 命令启用自动归档。
14. 返回到第一个会话。发生什么现象?为什么?

Oracle9i 数据库管理基础 II 8-34


Oracle Recovery Manager
概览和配置

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 了解 RMAN 的功能和组件
• 说明 RMAN 资料档案库和控制文件的用法
• 说明通道分配
• 说明介质管理库界面
• 不使用恢复目录连接到 RMAN
• 配置 RMAN 环境

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 9-2


恢复管理器功能

RMAN 提供了一种灵活的方式来执行下列操作:
• 备份数据库、表空间、数据文件、控制文件和归档日志
• 存储频繁执行的备份和恢复操作
• 执行增量块级别备份
• 跳过未使用的块
• 指定备份限制

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器功能
恢复管理器 (Recovery Manager, RMAN) 是一个 Oracle 实用程序,用于管理 Oracle 数据库
上的备份、还原和恢复操作。RMAN 具有功能强大且独立于操作系统的命令语言。
恢复管理器具有命令行界面。Oracle Enterprise Manager 也为恢复管理器提供图形用户界
面。在 Oracle8 或更高版本的数据库上都可以使用恢复管理器。
RMAN 提供的几种功能是在使用操作系统命令执行用户管理的备份时所不具备的。
• 您可以将频繁执行的操作作为脚本存储在数据库中。
• 使用增量块级别备份功能,您可只备份自上次备份后发生更改的块。这还可以减少在
ARCHIVELOG 模式下执行恢复操作所需的时间。
• 您可以使用 RMAN 来管理备份片的大小,并通过并行化备份操作来节省时间。
• RMAN 操作可以和操作系统的日程安排集成在一起,以实现自动备份操作。

Oracle9i 数据库管理基础 II 9-3


恢复管理器功能

RMAN 为执行下列操作提供了一种灵活的方式:
• 检测备份过程中损坏的块
• 通过下列方式提高性能:
– 自动并行化
– 生成较少的重做日志
– 限制备份的 I/O 操作
– 磁带流式处理

• 管理备份和恢复任务

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器功能(续)
• 您可以检测块的损坏情况。可以使用 V$BACKUP_CORRUPTION 和
V$COPY_CORRUPTION 动态视图来获取有关在备份时检测到的块损坏的信息。
• RMAN 可以提高性能,例如:
– 自动并行化备份、还原和恢复操作
– 在联机数据库备份期间不生成额外的重做日志
– 为避免干扰 OLTP 工作,限制备份操作每一秒钟只对一个文件进行读取
– 应用多路复用技术,在保持磁带机流式处理的同时,防止任何一个文件读写溢流
• RMAN 包含一个介质管理 API,可以与第三方介质管理工具一起无缝工作,使得这些
工具可以与存储设备实现交互,从而提高速度和可靠性。
• 如果使用用户管理的方法,您需要跟踪所有数据库文件和备份。在执行恢复操作时,
您必须找到每个数据文件的备份、使用操作系统命令将它们复制到正确位置,然后选
择要应用的日志。而 RMAN 能够自动管理这些任务。RMAN 的这一优点在使用
“Oracle 管理文件” (Oracle Managed Files) 时尤其有用。

Oracle9i 数据库管理基础 II 9-4


恢复管理器组件

服务器会话
(轮询)
Enterprise
恢复管理器
目标数据库 (RMAN) Manager

服务器会话
(rcvcat)

服务器会话 服务器会话 服务器会话


(通道) (通道) (通道) 服务器会话
MML (缺省)

恢复目录数据库
磁盘 磁盘

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器组件
恢复管理器可执行文件:恢复管理器命令行界面可以通过可执行文件 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 调用的服务器会话
将使用这些信息。

Oracle9i 数据库管理基础 II 9-5


恢复管理器组件(续)
RMAN 资料档案库:RMAN 在执行备份、还原和恢复操作时使用的数据称为 RMAN 元数
据。这些元数据存储在目标数据库的控制文件和可选的恢复目录数据库中。
尽管不是必须创建恢复目录才可以使用 RMAN,但使用恢复目录却是有益的。恢复目录应
放在目标数据库之外的另一数据库中。恢复目录的创建和维护将在另一课中论述。
通道:要执行并记录备份和恢复操作,RMAN 需要链接至目标数据库。该链接称为通道。
您可手动分配通道,也可以使用自动通道分配功能预先配置通道。
介质管理库:介质管理库 (MML) 由 RMAN 在写入磁带或从磁带读取时使用。使用磁带介
质所需的附加介质管理软件由介质和存储系统供应商提供。

Oracle9i 数据库管理基础 II 9-6


使用 “备份管理” 向导

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


您可使用下列方法之一访问 “备份管理” 向导和属性工作表:
• 从 “控制台导航器” (Console Navigator) 树中,选择要管理的数据库;然后,从环境相
关的 “备份管理” (Backup Management) 菜单选择工具。
• 从 “控制台导航器” (Console Navigator) 树的 “存储管理” (Storage Management) 树枝
中,选择要管理的表空间或数据文件;然后,从环境相关的 “备份管理” (Backup
Management) 菜单选择工具。
• 从 “控制台” (Console) 上,选择 “对象” (Object) > “备份管理” (Backup Management) 菜
单。
• 从 “控制台” (Console) 上,选择 “工具” (Tools) > “数据库向导” (Database Wizards) >
“备份管理” (Backup Management) 菜单。

Oracle9i 数据库管理基础 II 9-7


RMAN 资料档案库:使用控制文件

• RMAN 资料档案库包含的是有关目标数据库和备份及恢
复操作的元数据。
• RMAN 资料档案库始终存储在目标数据库的控制文件中。
• CONTROL_FILE_RECORD_KEEP_TIME 用于确定一个记
录至少要保留多少天才可被覆盖。
• 控制文件可能增大。

Copyright © Oracle Corporation, 2001. All rights reserved.

使用控制文件作为 RMAN 资料档案库


RMAN 在 RMAN 资料档案库中存储有关目标数据库及其备份和恢复操作的信息。目标数据
库控制文件可用作专门存储该信息的位置。存储的信息量会根据备份频率、生成的归档重
做日志文件的数量以及 RMAN 记录的保留时间而增长。
设置 CONTROL_FILE_RECORD_KEEP_TIME
CONTROL_FILE_RECORD_KEEP_TIME 参数指定 RMAN 信息至少要在控制文件中存储多
少天后才会被覆盖。该值越小,信息就会越频繁地被覆盖,从而尽可能减少控制文件的增
长。如果使用恢复目录,则应选择较小的数值。缺省值为 7 天。
如果控制文件太小,不能存储由 CONTROL_FILE_RECORD_KEEP_TIME 指定的时间段内
的所有信息,那么控制文件将会增长。在控制文件增长之前,将执行以下的特定步骤:
1. 使用控制文件中的空闲空间。
2. 覆盖早于 CONTROL_FILE_RECORD_KEEP_TIME 的条目。
3. 如果没有更多空间可用,控制文件将按需增长,直到达到操作文件大小的系统限制。

Oracle9i 数据库管理基础 II 9-8


通道分配

磁盘

服务器
通道(磁盘)
会话
目标 RMAN
数据库 服务器 通道 (sbt)
会话

Copyright © Oracle Corporation, 2001. All rights reserved.

通道分配
每个通道代表通向某一类型设备的一个数据流。在执行备份和恢复命令前,必须先分配通
道。每个已分配的通道建立从 RMAN 可执行文件到目标或辅助数据库(通过复制命令建
立的数据库或 TSPITR 中使用的临时数据库)例程的连接,方法是在例程上启动服务器会
话。该服务器会话执行备份和恢复操作。只有一个 RMAN 会话可与已分配的服务器会话
通信。
每个通道通常对应一个输出设备,除非您的 MML 具有硬件多路复用功能。
您可以手动分配通道,也可以使用自动通道分配功能预先配置要在所有 RMAN 会话中使
用的通道。
手动分配通道
手动分配通道时,可在 RMAN 提示符下,将 ALLOCATE CHANNEL 作为 RUN 命令的子命
令发出,也可使用 ALLOCATE CHANNEL FOR MAINTENANCE 命令。手动通道分配将覆
盖自动通道分配。

Oracle9i 数据库管理基础 II 9-9


分配通道(续)
自动分配通道
在 Oracle9i 中,您可使用自动通道分配功能预先配置要在所有 RMAN 会话中使用的通道。
RMAN 提供一个预先配置的 DISK 通道,您可将该通道用于备份数据和将数据复制到磁盘。
此外,您还可以配置一组永久的自动通道。可通过 CONFIGURE CHANNEL 命令将自动通
道指定给磁盘或磁带。

Oracle9i 数据库管理基础 II 9-10


自动分配通道

• 更改缺省设备类型:
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> CONFIGURE CHANNEL DEVICE TYPE DISK


2> MAXPIECESIZE 2G;

Copyright © Oracle Corporation, 2001. All rights reserved.

配置自动通道
您可在 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 已预先配置了一个磁盘通道,这样您可以备份到磁盘而无需进行任
何手动配置。因此,如果要备份到磁盘而不是介质管理器,现在就可以开始备份到磁盘。

Oracle9i 数据库管理基础 II 9-11


使用 OEM 分配通道

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 “创建备份配置” 向导分配通道
使用 “创建备份配置” 向导,您可使用备份和恢复的一组缺省值来定义配置。在 “常规”
(General) 页上,提供用于备份、恢复和目录维护操作的一组缺省值的名称和说明。在 “通
道” (Channels) 页上,指定要将该配置用于使用映像副本的备份还是使用备份集的备份。

Oracle9i 数据库管理基础 II 9-12


手动分配通道

• BACKUP、COPY、RESTORE 和 RECOVER 命令至少需要


一个通道。
• 分配一个通道会在目标数据库上启动一个服务器进程。
• 通道会影响并行性程度。
• 通道可写入不同的介质类型。
• 通道可用于施加限制。
RMAN> RUN {
2> ALLOCATE CHANNEL c1 TYPE disk
3> FORMAT = '/db01/BACKUP/usr0520.bak';
4> BACKUP DATAFILE '/db01/ORADATA/users01.dbf';}

Copyright © Oracle Corporation, 2001. All rights reserved.

手动分配通道
恢复管理器使用通道进程在 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

Oracle9i 数据库管理基础 II 9-13


手动分配通道(续)
• MAXOPENFILE:限制大型备份时同时打开的文件数(缺省值为 16)。该参数可以防止
打开的文件过多。
ALLOCATE CHANNEL … MAXOPENFILE = 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。

Oracle9i 数据库管理基础 II 9-14


介质管理

Oracle 服务器
恢复管理器 介质管理库
会话

介质管理
服务器
软件

磁带库或单一
磁带

Copyright © Oracle Corporation, 2001. All rights reserved.

介质管理
要使用磁带存储数据库备份,RMAN 需要使用介质管理器。介质管理器是加载、标记和
卸载顺序介质的实用程序,如用于备份、还原和恢复数据的磁带机。Oracle 服务器调用
MML 软件例行程序将数据文件备份到由介质管理器控制的介质或从介质中还原数据文件。
有些介质管理产品可以管理 Oracle 数据文件与备份设备之间的整个数据移动。有些产品
在存储设备与介质子系统之间使用高速连接,从而大大降低主数据库服务器的备份负载。
注:如果是备份到磁盘,Oracle 服务器无需连接到介质管理库 (MML) 软件。
Oracle 备份解决方案 (Oracle Backup Solutions Program, BSP) 提供一系列符合 Oracle 的
MML 规范的介质管理产品。使用与 MML 界面相兼容的软件,Oracle 服务器会话可备份
到介质管理器并请求介质管理器还原备份。请与介质供应商联系以确定其是否为 Oracle
BSP 的成员。

Oracle9i 数据库管理基础 II 9-15


介质管理(续)
在开始将 RMAN 用于介质管理器之前,必须先安装介质管理器并确保 RMAN 可与其进
行通信。有关该过程的具体说明,请参见介质管理器供应商的软件文档。
根据要安装的产品,相应执行以下基本步骤:
1. 在目标主机或产品网络上安装并配置介质管理软件。此阶段无需集成 RMAN。
2. 确保可在目标数据库主机上创建操作系统文件的非 RMAN 备份。此步骤将使以后排
除故障更为容易。请参阅介质管理文档以了解如何将文件备份到介质管理器。
3. 获取并安装要与 Oracle 服务器集成的第三方介质管理模块。该模块必须包含 Oracle
要在访问介质管理器时加载的库。
安装介质管理软件后,介质管理库应已与 Oracle 服务器集成在一起。
使用介质管理器进行备份和还原操作
下面的恢复管理器脚本可以将数据文件备份到由介质管理器控制的磁带机上:
run {
# Allocating a channel of type 'sbt' for serial device
ALLOCATE CHANNEL ch1 DEVICE TYPE 'sbt';
BACKUP DATAFILE 3;
}

恢复管理器执行该命令时,将向执行该备份操作的 Oracle 服务器会话发送备份请求。


Oracle 服务器会话将输出通道标识为介质管理设备,然后请求介质管理器装载磁带并将
输出写入磁带。
介质管理器会标记并记录磁带以及磁带上每个文件的名称。
介质管理器可处理还原和备份操作。还原文件时,将执行以下步骤:
1. Oracle 服务器请求还原某一特定文件。
2. 介质管理器标识包含该文件的磁带,并读取磁带。
3. 介质管理器将信息传回到 Oracle 服务器会话。
4. Oracle 会话将文件写入磁盘。

Oracle9i 数据库管理基础 II 9-16


与 RMAN 连接的类型

• 目标数据库
• 恢复目录数据库
• 辅助数据库
– 备用数据库
– 重复数据库
– TSPITR 例程

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 RMAN 连接的数据库类型
使用恢复管理器,可连接到下列类型的数据库:
• 目标数据库:使用 SYSDBA 权限连接到目标数据库。您必须具有该权限才能连接成功。
• 恢复目录数据库:这是一种为 RMAN 资料档案库配置的可选数据库。
• 辅助数据库:辅助数据库是使用 RMAN DUPLICATE 命令创建的数据库。它也可能是
在表空间时间点恢复 (TSPITR) 过程中使用的临时数据库。备用数据库是生产数据库的
副本,可用于灾难恢复。

Oracle9i 数据库管理基础 II 9-17


不使用恢复目录进行连接
服务器 服务器
进程 进程 恢复管理器
目标 (RMAN)
(轮询) (缺省)
数据库

• 从本地启动 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

Copyright © Oracle Corporation, 2001. All rights reserved.

不使用恢复目录连接到目标数据库
本地连接
对于本地 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

Oracle9i 数据库管理基础 II 9-18


不使用恢复目录连接到目标数据库(续)
连接进程
键入 RMAN 连接命令后,将发生如下事件:
• 为恢复管理器创建一个用户进程。
• 该用户进程创建两个 Oracle 服务器进程:
– 一个是连接到目标数据库的缺省进程,用于执行 SQL 命令、重新同步控制文件和
恢复前滚
– 一个是连接到目标数据库的轮询进程,用于确定远程过程调用 (RPC) 的完成情况
(每个例程仅限一个)。
• 备份和恢复信息是从控制文件中检索的。

Oracle9i 数据库管理基础 II 9-19


其它 RMAN 命令行参数

• 将 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’

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 命令行参数
LOG = 'filename' 参数指定用于记录 RMAN 输出的文件。如果未指定该参数,
RMAN 将把其消息日志文件写入到标准输出。如果无法打开指定的文件,RMAN 不会中
止,而是将输出内容写入到标准输出设备。
APPEND 关键字指定新的输出应附加在消息日志文件的末尾。如果未指定该参数,一旦存
在与消息日志文件同名的文件,RMAN 将覆盖该文件。
您可使用 CMDFILE = 'filename' 运行包含 RMAN 命令的文件。如果文件名的第一个
字符是字母,则可不必将文件名放在引号内。RMAN 将在运行命令文件后终止。

Oracle9i 数据库管理基础 II 9-20


恢复管理器模式

• 交互模式
– 在执行分析操作时使用
– 尽量减少常规使用量
– 避免与日志选项一起使用

• 批处理模式
– 目的是自动处理作业
– 尽量减少操作者错误
– 设置日志文件以获取信息

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器
恢复管理器是一个具有自己的命令语言的命令行解释程序 (CLI)。RMAN 有两种操作模式:
交互模式和批处理模式。
交互模式:要交互运行 RMAN 命令,请启动 RMAN,然后在命令行界面中键入命令。例
如,您可以从 UNIX 命令 shell 启动 RMAN,然后执行以下交互命令:
$ rman target sys/sys_pwd@db1
RMAN> BACKUP DATABASE;
批处理模式:您可以将 RMAN 命令输入到一个文件中,然后通过在命令行中指定该文件
的名称来运行该命令文件。命令文件的内容应与命令行中输入的命令完全相同。
以批处理模式运行时,RMAN 从命令文件中读取输入内容,然后将输出消息写入日志文
件(如果已指定)。

Oracle9i 数据库管理基础 II 9-21


恢复管理器(续)
RMAN 在编译或执行任何命令前先对整个命令文件进行语法分析。无需在文件中添加退出
命令,因为 RMAN 将在到达文件末尾时终止执行。
批处理模式最适合于通过操作系统作业控制设备来执行安排好的定期备份操作。
$ rman target / @tbsbk.rcv log tbs.log
在该示例中,用户已经创建了文件 tbsbk.rcv,该文件包含用户本要交互使用的命令。
RMAN 会将消息输出到文件 tbs.log。
使用 Oracle Enterprise Manager
使用 “运行 RMAN 脚本” 任务,所有可从 RMAN 命令行调用的命令或脚本都可以通过
Oracle Enterprise Manager 发出。在 “参数” (Parameters) 页上,指定 “运行 RMAN 脚本” 任
务的参数设置。

Oracle9i 数据库管理基础 II 9-22


RMAN 命令

RMAN 命令有下列类型:
• 独立命令
– 仅在 RMAN 提示符下执行
– 分别执行
– 不能作为 RUN 命令的子命令
• 作业命令
– 必须位于 RUN 命令的括号中
– 成组执行
• 独立命令或作业命令

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 命令
RMAN 具有两种基本类型的命令:独立命令和作业命令。
独立命令在 RMAN 提示符下执行,通常是自包含的。下列是部分独立命令:
• CHANGE
• CONNECT
• CREATE CATALOG, RESYNC CATALOG
• CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT
作业命令通常被分成几组,由 RMAN 在 RUN 命令块内按顺序执行。如果块内任何一个命
令失败,RMAN 将停止处理;而不再继续执行块内的其它命令。
有一些命令既可在提示符下发出也可在 RUN 命令中发出。如果在 RMAN 提示符下执行独
立命令,可利用自动分配通道的功能。
可以按交互模式或批处理模式执行命令。

Oracle9i 数据库管理基础 II 9-23


命令示例
装载目标数据库
发出启动命令,如下所示:
RMAN> STARTUP MOUNT
关闭目标数据库
发出关闭命令,如下所示:
RMAN> SHUTDOWN IMMEDIATE
列出目标数据库的当前配置
使用 REPORT 命令获取数据库的配置信息,如下所示:
RMAN> REPORT SCHEMA;
RMAN-03022: compiling command: report
Report of database schema
File K-bytes Tablespace RB Name
---- -------- ---------- --- -----------------
1 117760 SYSTEM *** …/ORADATA/u01/system_01.dbf
2 30720 UNDO1 *** …/ORADATA/u02/undotbs.dbf
3 5120 USERS *** …/ORADATA/u04/users_01.dbf
4 5120 INDX *** …/ORADATA/u03/indx_01.dbf
5 5120 SAMPLE *** …/ORADATA/u02/sample_01.dbf
6 1024 QUERY_DATA *** …/ORADATA/u01/query_01.dbf

Oracle9i 数据库管理基础 II 9-24


作业命令示例

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’;
}

Copyright © Oracle Corporation, 2001. All rights reserved.

作业命令
与独立命令不同,作业命令必须包含在 RUN 命令的括号中。下面是作业命令的示例:
• ALLOCATE CHANNEL
• SWITCH
RMAN 按顺序执行 RUN 命令块内的作业命令。如果块内的任何命令失败,RMAN 将停止
处理;不再继续执行块内的其它命令。实际上,RUN 命令定义了一个命令执行单位。当
RUN 命令块内的最后一个命令执行完毕后,Oracle 将释放为该命令块分配的所有服务器端
资源,如 I/O 缓冲区或 I/O 从属进程。

Oracle9i 数据库管理基础 II 9-25


RMAN 配置设置

• RMAN 预设为使用缺省配置设置
• 使用 CONFIGURE 命令可以:
– 配置自动通道
– 指定备份保留策略
– 指定要创建的备份副本数
– 限制备份集的大小
– 使表空间从备份中脱离
– 启用和禁用备份优化

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 配置设置
RMAN 预设为使用适用于所有 RMAN 会话的缺省配置设置。
您可使用 CONFIGURE 命令配置 RMAN 备份、还原、复制和维护作业的永久设置。这些
设置将对所有 RMAN 会话有效,除非清除或更改该配置。
使用 Oracle Enterprise Manager
您可使用 “创建备份配置” 向导来设置备份和恢复的缺省值。可通过 “Oracle Enterprise
Manager 控制台” (Oracle Enterprise Manager Console) 来访问该向导。在 “常规” (General)
页上,指定用于备份、恢复和目录维护操作的一组缺省值的名称和说明。在 “通道”
(Channels) 页上,指定是要将该配置用于映像副本还是备份集,并提供该通道的附加说明。
在 “备份参数” (Backup Parameters) 页上,设置备份集的存储参数。

Oracle9i 数据库管理基础 II 9-26


CONFIGURE 命令

• 配置自动通道:
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;

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 CONFIGURE 命令
配置自动通道
使用 CONFIGURE CHANNEL 命令可指定缺省备份位置和文件命名约定。
配置备份保留策略
使用 CONFIGURE RETENTION POLICY 命令可创建永久和自动的备份保留策略。
RMAN 将根据您用 CONFIGURE 命令指定的标准来确定数据文件和控制文件的备份和副
本何时过期;即,何时介质恢复不再需要使用这些备份和副本。您可发出 REPORT
OBSOLETE 命令查看已过期的文件,并使用 DELETE OBSOLETE 命令将它们删除。发出
CONFIGURE RETENTION POLICY CLEAR 命令可将该设置恢复为缺省值。
可以使用以下两种互斥方法中的任意一种来实施保留策略:
• 指定一个恢复期,该恢复期是从当前时间回溯到可恢复时间点的时间段。在以上示例
中,使用 CONFIGURE 命令可确保对每个数据文件都保留一份早于可恢复点(七天)
的备份。
• 指定一个冗余值,该值指示备份或副本一旦超过某一指定数目,将不再予以保留。
缺省情况下,RETENTION POLICY 配置为 REDUNDANCY 1。

Oracle9i 数据库管理基础 II 9-27


CONFIGURE 命令

• 配置双重备份集:
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;

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 CONFIGURE 命令(续)
配置双重备份集
对于使用自动通道的所有备份命令,可在一个备份集中为每个备份片最多创建四个副本。
这仅适用于数据文件和归档重做日志文件。
配置备份优化
设置备份优化的目的是:如果相同的文件已备份到某一设备类型,BACKUP 命令不再将文
件备份到该设备类型。两个文件相同,指的是其内容必须完全相同。备份优化的缺省值是
OFF。
您可通过使用 BACKUP 命令的 FORCE 选项覆盖备份优化设置。

Oracle9i 数据库管理基础 II 9-28


SHOW 命令

• 显示永久配置设置
• 使用 SHOW 命令可显示:
– 自动通道配置设置
– 备份保留策略设置
– 要创建的备份副本数
– 备份集大小限制
– 不包括在备份中的表空间
– 备份优化状态
• 使用 SHOW ALL 命令显示所有设置:
RMAN> SHOW ALL;

Copyright © Oracle Corporation, 2001. All rights reserved.

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;

Oracle9i 数据库管理基础 II 9-29


LIST 命令操作

• 列出备份集和数据文件副本
• 列出指定表空间的备份集和所有数据文件的副本
• 列出指定范围的备份集和包含归档日志的副本

Copyright © Oracle Corporation, 2001. All rights reserved.

LIST 命令
LIST 命令用于生成详细报告,列出下各项的所有信息:
• 包含指定的一系列数据文件的备份的备份集
• 指定的一系列数据文件的副本
• 包含属于指定表空间列表的任何数据文件的备份的备份集
• 属于指定表空间列表的任何数据文件的副本
• 包含任何具有指定名称或范围的归档日志的备份的备份集
• 任何具有指定名称或范围的归档日志的副本

Oracle9i 数据库管理基础 II 9-30


LIST 命令

• 列出数据库中的所有文件的备份:
RMAN> LIST BACKUP OF DATABASE;

• 列出包含 users01.dbf 数据文件的所有备份集:


RMAN> LIST BACKUP OF DATAFILE
2> “/db01/ORADATA/u03/users01.dbf”;

• 列出 SYSTEM 表空间中的数据文件的所有副本:
RMAN> LIST COPY OF TABLESPACE “SYSTEM”;

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 LIST 命令
使用此命令时必须连接至目标数据库。如果在 NOCATALOG 模式下进行连接,则必须装
载数据库。如果使用恢复目录进行连接,则必须启动目标例程(但无需装载)。
列出数据库备份
您可使用此命令生成数据库中所有文件的备份的列表。
列出备份集
上面的示例使用 LIST 命令列出数据文件
“/db01/ORADATA/u03/users01.dbf” 的所有已知备份。
列出数据文件副本
上面的示例使用 LIST 命令列出 SYSTEM 表空间的数据文件副本。

Oracle9i 数据库管理基础 II 9-31


REPORT 命令

• 生成资料档案库的详细分析
• 生成的报告可以回答以下问题:
– 哪些文件需要备份?
– 哪些备份可以删除?
– 哪些文件不可恢复?

Copyright © Oracle Corporation, 2001. All rights reserved.

REPORT 命令
该命令有助于更详细地分析 RMAN 资料档案库中的信息。
可以针对各种问题生成报告,例如:
• 该数据库的结构是怎样的?
RMAN> REPORT SCHEMA;
• 哪些文件需要备份?
RMAN> REPORT NEED BACKUP ...;
• 哪些备份可以删除(即已过期)?
RMAN> REPORT OBSOLETE;
• 哪些文件由于不可恢复的操作而不可恢复?
RMAN> REPORT UNRECOVERABLE ...;

Oracle9i 数据库管理基础 II 9-32


REPORT NEED BACKUP 命令

• 列出需要备份的所有数据文件
• 假定在还原过程中使用最新的备份
• 提供三个选项
– 增量 (Incremental) REPORT NEED BACKUP incremental 3;
REPORT NEED BACKUP days 3;
– 天数 (Days) REPORT NEED BACKUP redundancy 3;
– 冗余 (Redundancy)

• 如果不使用任何选项,则考虑已配置的保留策略

Copyright © Oracle Corporation, 2001. All rights reserved.

REPORT NEED BACKUP 命令


REPORT NEED BACKUP 命令用于标识所有需要备份的数据文件。该报告假定在还原时
使用最新的备份。
该命令有三个选项:
• 增量 (Incremental):是一个整数值,指定应在恢复过程中还原的增量备份的最大数目。
如果需要该数目或更多的增量备份,则需要对数据文件执行新的完全备份。
例如,要报告需要三个或更多增量备份才能进行恢复的文件:
RMAN > REPORT NEED BACKUP incremental 3 database;
• 天数 (Days):是一个整数值,指定距文件上一次完全或增量备份操作的最大天数。如
果最近一次备份到当前的天数等于或超过该数字,则需要对该文件进行备份。
例如,报告三天未备份的系统文件:
RMAN > REPORT NEED BACKUP days 3 tablespace system;
• 冗余 (Redundancy):一个整数值,指定必要的最低冗余级别。例如,如果没有两个或
更多备份,则冗余级别 2 将要求进行备份。

Oracle9i 数据库管理基础 II 9-33


恢复管理器程序包

恢复管理器使用 PL/SQL 程序包作为与以下各项的接口:


• 目标数据库 目标
数据库
• 恢复目录

dbms_backup_restore
dbms_rcvcat dbms_rcvman
恢复
dbms_rcvcat 管理器
dbms_rcvman dbms_rcvman dbms_rcvman
PL/SQL

恢复目录
目标
控制文件

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器程序包
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 和操作系统的接口,以便创建、还原和恢复数据文
件备份以及归档重做日志文件。

Oracle9i 数据库管理基础 II 9-34


使用 RMAN 的注意事项

• 资源:共享内存、更多进程
• 为用户提供的权限
– 数据库:SYSDBA
– 操作系统:对设备的访问权限

• 远程操作
– 设置口令文件
– 确保口令文件已备份

• 全球化环境变量
• 在 RMAN 命令中使用的时间参数的格式

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 RMAN 的注意事项
在使用恢复管理器之前,请考虑以下几点:
• 系统的共享资源:RMAN 的大多数工作是通过 Oracle 服务器进程执行的。这些操作也
可以并行进行,以提高吞吐量。这意味着 PROCESSES 参数必须足够高。从 OS 的角
度看,这就意味着应该把共享内存和信号量设置得足够多。
• 执行授权操作的用户组:您必须确定执行授权操作的用户组。您可以相应地设置用户
帐户,使之具备必要的操作系统和 Oracle 数据库权限。
• 要启动和关闭数据库,用户应具有 SYSDBA 权限。

Oracle9i 数据库管理基础 II 9-35


使用 RMAN 的注意事项(续)
• 远程操作:您需要使用口令文件通过 Oracle Net 连接到目标数据库,以执行授权的操作。
例如,从远程计算机执行关闭、启动、备份和恢复操作。这样您就需要设置口令文
件,还应确保具有备份该口令文件的策略。
• 全球化环境变量:调用 RMAN 之前,设置 NLS_DATE_FORMAT 和 NLS_LANG 环境变
量。这些变量确定 RMAN 命令(如 RESTORE、RECOVER 和 REPORT)中的时间参数
的格式。
• 使用恢复目录:如果使用恢复目录,RMAN 可以执行更多种类的自动备份和恢复功能。
使用恢复目录会涉及存储空间和维护方面的工作。
您还应确定是否将一个数据库专用于维护多个目标数据库的恢复目录。另外,还要考
虑备份该恢复目录的策略。

Oracle9i 数据库管理基础 II 9-36


小结

在这一课中,您应该能够掌握:
• 配置 RMAN 环境
• 使用自动通道分配
• 手动分配通道
• 不使用恢复目录连接到 RMAN
• 从 RMAN 资料档案库检索信息

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 9-37


练习 9 概览

此练习涉及以下主题:
• 在缺省的 NOCATALOG 模式中使用恢复管理器连接到
目标数据库。
• 从目标数据库控制文件获取信息。
• 配置保留策略
• 使用 SHOW 命令显示 RMAN 环境设置

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 9-38


练习 9
1. 列出使用 RMAN 而不使用用户管理的备份和恢复过程的部分优点。
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
2. 描述 RMAN 使用目标数据库的控制文件的一些方式。
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
3. 在缺省的 NOCATALOG 模式下连接到您的目标数据库。
4. 使用 RMAN REPORT 命令生成数据库结构的列表。
5. 使用 RMAN SHOW 命令生成 RMAN 配置设置的列表。
6. 使用 RMAN CONFIGURE 命令将备份保留策略设置成恢复期为 14 天。
7. 验证备份保留策略的设置。
8. 将备份保留策略重新设置为缺省值。

Oracle9i 数据库管理基础 II 9-39


Oracle9i 数据库管理基础 II 9-40
用户管理的备份

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 描述用户管理的备份和恢复操作
• 论述与只读表空间相关的备份问题
• 执行关闭的数据库的备份
• 执行打开的数据库的备份
• 备份控制文件
• 在联机备份失败后执行清除
• 使用 DBVERIFY 实用程序检测损坏

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 10-2


术语

• 整体数据库备份
– 目标数据库可能是打开的,也可能是关闭的
– 备份所有数据文件和控制文件

• 部分数据库备份
– 表空间
– 数据文件
– 控制文件

• 一致备份
• 不一致备份

Copyright © Oracle Corporation, 2001. All rights reserved.

备份术语
整体数据库备份
整体数据库备份(也称为整体备份)是指对数据库的所有数据文件和控制文件
进行备份。无论数据库是打开的还是关闭的,都可以执行整体备份。这是最常
见的备份方法。
在数据库关闭(使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 选项关
闭数据库)后进行的整体备份称为一致备份。在这种备份中,所有数据库文件
的标头均与控制文件一致,完全还原后,数据库不需任何恢复即可打开。数据
库以 NOARCHIVELOG 模式进行操作时,只有一致的整体数据库备份才可以
用来还原和恢复。
如果数据库打开并且可操作,数据文件的标头将与控制文件不一致,除非数据
库是以只读模式打开的。如果使用 ABORT 选项关闭数据库,这种不一致性将
一直存在。这种状态下的数据库备份称为不一致备份。不一致备份需要通过恢
复才能使数据库进入一致状态。如果数据库需要每周 7 天、每天 24 小时都可
用,则只能使用不一致备份,并且只能对以 ARCHIVELOG 模式运行的数据库
执行不一致备份。
Oracle9i 数据库管理基础 II 10-3
备份术语(续)
表空间备份
表空间备份 是对组成表空间的数据文件进行的备份。只有当数据库处在
ARCHIVELOG 模式下时表空间备份才有效,因为要使数据文件与数据库的其
它部分保持一致,需要使用重做条目。在 NOARCHIVELOG 模式下,如果数据
库为只读的或脱机正常的,您可以进行表空间备份。
数据文件备份
如果数据库处在 ARCHIVELOG 模式下,您可以对单个数据文件进行备份。在
NOARCHIVELOG 模式下,您可以对只读或脱机正常的数据文件进行备份。
控制文件备份
您可以对 RMAN 进行配置,使之在发出 BACKUP 或 COPY 命令后自动备份控
制文件。还可以通过 SQL 命令备份控制文件。

Oracle9i 数据库管理基础 II 10-4


用户管理的备份和恢复

• 文件是使用操作系统命令进行备份的
• 备份是使用操作系统命令进行还原的
• 恢复是使用 SQL 和 SQL*Plus 命令完成的

Copyright © Oracle Corporation, 2001. All rights reserved.

用户管理的备份和恢复
用户管理的备份和恢复不使用恢复管理器 (Recovery Manager),而是使用操作
系统命令来进行数据库文件的备份并在恢复时还原这些备份。恢复命令在
SQL*Plus 会话中发出。
Oracle 建议将 RMAN 用于所有备份和恢复操作,但也支持用户管理的备份和
恢复方法。

Oracle9i 数据库管理基础 II 10-5


查询视图以获得
数据库文件信息

V$DATAFILE
V$CONTROLFILE
V$LOGFILE
DBA_DATA_FILES

Copyright © Oracle Corporation, 2001. All rights reserved.

查询动态视图
在开始备份之前,您应该通过查询 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

Oracle9i 数据库管理基础 II 10-6


查询动态视图(续)
使用 V$CONTROLFILE 视图显示所有控制文件的名称。
SQL> SELECT name FROM v$controlfile;
NAME
--------------------------------------------
/databases/db01/ORADATA/u01/ctrl01.ctl
/databases/db01/ORADATA/u01/ctrl02.ctl
使用 V$LOGFILE 视图显示所有重做日志文件的名称。
SQL> SELECT member FROM v$logfile;
MEMBER
----------------------------------------------
/databases/db01/ORADATA/u03/log01a.rdo
/databases/db01/ORADATA/u03/log02a.rdo
/databases/db01/ORADATA/u04/log01b.rdo
/databases/db01/ORADATA/u04/log02b.rdo
使用 V$TABLESPACE 和 V$DATAFILE 数据字典视图获得所有数据文件及其各
自表空间的列表。在设置用以执行打开的数据库的备份的脚本时,这一点非常
有用,这样,您就可以确保在操作系统级别复制所有文件。
SQL> SELECT t.name tablespace, f.name datafile
2> FROM v$tablespace t, v$datafile f
3> WHERE t.ts# = f.ts#
4> ORDER BY t.name;
TABLESPACE DATAFILE
---------- --------------------------------------------
INDX /databases/db01/ORADATA/u03/indx01.dbf
QUERY_DATA /databases/db01/ORADATA/u01/querydata01.dbf
SAMPLE /databases/db01/ORADATA/u02/sample01.dbf
SYSTEM /databases/db01/ORADATA/u01/system01.dbf
UNDOTBS /databases/db01/ORADATA/u02/undotbs.dbf
USERS /databases/db01/ORADATA/u04/users01.dbf

Oracle9i 数据库管理基础 II 10-7


获得数据库文件信息

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


在 “导航器” (Navigator) 中,您可以使用 “存储管理” (Storage Management) 功
能来获得有关控制文件、表空间、数据文件以及重做日志文件的信息。

Oracle9i 数据库管理基础 II 10-8


备份方法

关闭的数据库 关闭或打开的数据库

NOARCHIVELOG ARCHIVELOG
模式 模式

物理备份

Copyright © Oracle Corporation, 2001. All rights reserved.

评估备份方法
通过选择最恰当的备份方法以最大限度地进行数据恢复,可以保护数据不因介
质故障而丢失。用户管理的数据库备份是在数据库打开或关闭时对数据库文件
进行的操作系统备份。
物理备份方法
• 不归档的操作系统备份,用于在发生介质故障后恢复到上次备份的点。
• 归档的操作系统备份,用于在发生介质故障后恢复到故障点。

Oracle9i 数据库管理基础 II 10-9


一致的整体数据库备份
(关闭的数据库的备份)

数据文件 控制文件 重做日志 参数文件 口令文件


文件

联机或脱机存储

Copyright © Oracle Corporation, 2001. All rights reserved.

一致的整体数据库备份
一致的整体数据库备份(也称为关闭的数据库的备份)是在数据库关闭的情况
下对构成 Oracle 数据库的所有数据文件和控制文件进行的备份。它还可以包
括对联机重做日志文件、参数文件和口令文件的备份。
采用用户管理的备份操作时,您应该定义一个操作系统备份过程,然后一直用
它来备份 Oracle 数据文件、控制文件、参数文件和口令文件,这是为了防止
潜在的介质故障破坏这些文件而采取的策略的一部分。
确保记下这些文件的完整路径名并在备份时正确使用。在多个数据库的环境
中,由于参数文件和口令文件的名称并不记录在字典中,所以必须小心地通过
某一命名约定将这些文件与相应的数据库关联起来。
注:如果使用 “正常”、“事务处理” 或 “立即” 选项彻底地关闭了数据库,则不
必在整体数据库备份中包含联机重做日志文件。但是,在需要还原整个数据库
的情况下,如果已备份了联机重做日志文件,还原过程将得以简化。

Oracle9i 数据库管理基础 II 10-10


进行一致的整体数
据库备份的优点

• 概念上简明易懂
• 易于执行
• 几乎不需要交互操作

Copyright © Oracle Corporation, 2001. All rights reserved.

进行一致的整体数据库备份的优点
• 一致的整体数据库备份在概念上简明易懂,您只需:
– 关闭数据库
– 将所有需要的文件复制到备份位置
– 打开数据库
• 要执行关闭的数据库的备份,只需使用数量极少的几个命令。
• 只要执行一个简单的脚本,而且只需很少的交互操作,就可以自动执行关
闭的数据库的备份,步骤如下:
– 关闭数据库
– 复制控制文件和数据文件
– 打开数据库
• 所有在关闭的数据库的备份过程中复制的文件都具有一致的时间点。在备
份过程中,由于数据库不可用,因此不发生任何事务处理。

Oracle9i 数据库管理基础 II 10-11


进行一致的整体数据库备份的缺点
• 对于数据库必须处于连续可用状态的那些业务经营活动,由于在一致的整
体数据库备份期间数据库会关闭且不可用,所以不能采用这种备份方式。
• 数据库不可用的时间长短受数据库大小、数据文件的数量以及复制数据文
件的速度的影响。如果这一时间超过了允许的关机时间,您必须选择其它
备份类型。
• 只能恢复到上一次完全一致的整体数据库备份时的状态,丢失的事务处理
必须在执行恢复操作之后手动输入。

Oracle9i 数据库管理基础 II 10-12


进行一致的整
体数据库备份

2
SHUTDOWN IMMEDIATE
3
HOST cp <files> /backup/
1

数据文件 控制文件 重做日志 口令文件 参数文件


文件

STARTUP OPEN
4

Copyright © Oracle Corporation, 2001. All rights reserved.

执行一致的整体数据库备份
在 Oracle 服务器例程关闭时执行一致的整体数据库备份。
1. 编译要备份的所有相关文件的最新列表。
2. 使用 SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE 或 SHUTDOWN
TRANSACTIONAL 命令关闭 Oracle 例程。
3. 使用操作系统备份实用程序备份所有数据文件和控制文件。您还可以备
份重做日志文件,尽管这不是必需的。您还应该备份参数文件和口令文
件。
4. 重新启动 Oracle 例程。

Oracle9i 数据库管理基础 II 10-13


执行一致的整体数据库备份
原则
• 关闭命令的缺省选项是 “正常” (normal)。如果事务处理或进程有可能仍在访
问数据库,则使用 “事务处理” (transactional) 或 “立即” (immediate) 选项。
• 可以考虑对此操作使用可靠的自动执行过程,以确保每个文件都能正确备
份。
• 在执行关闭的数据库的完全备份时,备份初始化参数文件和口令文件。
• 不必将与只读表空间相关联的文件包含在完全备份中。
• 如果在执行脱机备份或冷备份时打开了数据库,备份将无效,不能保证在
恢复时可以使用。

Oracle9i 数据库管理基础 II 10-14


打开的数据库的备份

数据文件 控制文件

联机重做
归档重做日志文件 日志文件
口令文件 参数文件

Copyright © Oracle Corporation, 2001. All rights reserved.

打开的数据库的备份
如果业务性质不允许关闭数据库来执行备份,您可以使用以下方法在使用数据
库的同时对数据库执行备份:
• 执行所有表空间或各个数据文件的备份(无论它们处在联机状态还是脱机
状态)。
• 将控制文件备份为一个二进制文件,或创建一个脚本以重新创建控制文件。
联机重做日志文件不需要备份。

Oracle9i 数据库管理基础 II 10-15


进行打开的数据
库的备份的优点

• 保持较高的数据库可用性
• 可以在表空间级或数据文件级进行备份
• 支持业务活动不中断

Copyright © Oracle Corporation, 2001. All rights reserved.

进行打开的数据库的备份的优点
• 在备份过程中数据库可以正常使用。
• 可以在表空间级(通过 RMAN)或数据文件级执行备份。
• 支持每天都全天候运作的业务。
进行打开的数据库的备份的注意事项
• 需要对 DBA 进行更多的培训。
• 如果执行打开的数据库的备份,推荐使用经测试的自动执行脚本。

Oracle9i 数据库管理基础 II 10-16


对打开的数据库执行备份的条件

LGWR

ARCHIVELOG 模式
052 051 ARC0
054 053

051
052 051 051
054 053 052
052
053
053
联机重做日志文件 归档重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

对打开的数据库执行备份的条件
只要符合以下两个标准,您就可以在使用数据库的同时,执行表空间或各个数
据文件的备份:
• 数据库设置为 ARCHIVELOG 模式。
• 通过启用 Oracle 自动归档 (ARCn) 进程或手动归档重做日志文件,确保联
机重做日志得到归档。

Oracle9i 数据库管理基础 II 10-17


对打开的数据库执行备份时的选项

表空间备份 数据文件备份

表空间 USERS 表空间 USERS

users01.dbf users02.dbf users01.dbf users02.dbf

Copyright © Oracle Corporation, 2001. All rights reserved.

对打开的数据库执行备份时的选项
使用 Oracle 服务器,您既可以备份某一特定表空间的所有数据文件,也可以
只备份某个表空间的一个数据文件。无论您选择哪个选项,在备份过程中,数
据库都可以保持正常使用(事务处理)。
如果一个数据文件处于备份模式,则可能会生成多个重做日志条目,因为日志
写入器将备份模式下的数据文件中已更改的块的块映像写入重做日志,而不仅
仅是写入行信息。
这会对重做日志的大小和日志写入器的性能产生重大影响。

Oracle9i 数据库管理基础 II 10-18


进行联机表空间的备份
145 145 144 143
数据文件 1 控制文件 重做日志 数据文件 1
文件 1
144 145 144
数据文件 2 重做日志 数据文件 2
文件 2
145
数据文件 3
数据库 数据库备份

SQL> ALTER TABLESPACE users


2> BEGIN BACKUP;

SQL> !cp /…/users01.dbf /BACKUP/users01.dbf

Copyright © Oracle Corporation, 2001. All rights reserved.

如何执行联机表空间备份
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

Oracle9i 数据库管理基础 II 10-19


结束联机表空间备份
145 145 144 143
数据文件 1 控制文件 重做日志 数据文件 1
文件 1
145 145 144
数据文件 2 重做日志 数据文件 2
文件 2
145
数据文件 3
数据库 数据库备份

SQL> ALTER TABLESPACE users


2> BEGIN BACKUP;

SQL> !cp /…/users01.dbf /BACKUP/users01.dbf

SQL> ALTER TABLESPACE users


2> END BACKUP;

Copyright © Oracle Corporation, 2001. All rights reserved.

如何执行联机表空间备份(续)
3. 备份表空间的各数据文件后,发出下面的命令将它们设置为正常模式:

SQL> ALTER TABLESPACE users END BACKUP;


4. 归档尚未归档的重做日志,以便归档恢复表空间备份所需的重做日志,
如下所示:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
对所有表空间重复这些步骤,包括 SYSTEM 和还原段表空间。
ALTER TABLESPACE BEGIN BACKUP 和 ALTER TABLESPACE END
BACKUP 命令之间的间隔时间应尽量缩短,因为修改后的块写入重做日志文件
将导致生成更多的重做信息。因此建议您每次执行一个表空间的联机备份。

Oracle9i 数据库管理基础 II 10-20


备份状态信息

动态视图

V$BACKUP
V$DATAFILE_HEADER

Copyright © Oracle Corporation, 2001. All rights reserved.

动态视图
通过查询 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

Oracle9i 数据库管理基础 II 10-21


动态视图(续)
备份文件后,“状态” (STATUS) 列的值将更改为 NOT ACTIVE。
SQL> SELECT * FROM v$backup;
FILE# STATUS CHANGE# TIME
----- ------------ ------- ---------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 312905 05-APR-01

V$DATAFILE_HEADER 视图
处于备份模式的数据文件的信息也可以通过查询 V$DATAFILE_HEADER 视图
获得。发出 ALTER TABLESPACE BEGIN BACKUP 命令后,表空间的数据文
件的 FUZZY 列中的值将更改为 YES,表明相应的文件处于备份模式。
SQL> SELECT name, status, fuzzy FROM v$datafile_header;
NAME STATUS FUZ
-------------------------------- ------ ---
/…/u01/system01.dbf ONLINE
/…/u02/undotbs.dbf ONLINE
/…/u03/users01.dbf ONLINE YES

发出 ALTER TABLESPACE END BACKUP 命令后,FUZZY 列的值将更改为
NULL。
SQL> SELECT name, status, fuzzy FROM v$datafile_header;
NAME STATUS FUZ
-------------------------------- ------ ---
/…/u01/system01.dbf ONLINE
/…/u02/undotbs.dbf ONLINE
/…/u03/users01.dbf ONLINE

Oracle9i 数据库管理基础 II 10-22


联机表空间备份过程中出现故障

ALTER TABLESPACE users 144 144 144


数据文件 1 控制文件 重做日志
BEGIN BACKUP; 文件 1
144 145
数据文件 2 重做日志
文件 2
cp /…/users01.dbf 144
数据文件 3
/BACKUP/users01.dbf
数据库

146 146 146


数据文件 1 控制文件 重做日志
文件 1
144 145
数据文件 2 重做日志
文件 2
146
数据文件 3

数据库

Copyright © Oracle Corporation, 2001. All rights reserved.

联机表空间备份过程中出现故障
在联机表空间备份的过程中,可能会发生系统崩溃、电源故障、数据库关闭等
故障。一旦发生任何这些故障:
• 如果操作系统未完成备份,则备份文件将不可用。您需要重新备份这些文
件。
• 处在联机备份模式下的数据库文件不会与数据库同步,原因是备份开始时
标头被冻结。
• 数据库将不会打开,因为 Oracle 服务器认为文件已从备份中还原。
您可以使用 ALTER DATABASE …END BACKUP 命令使数据文件脱离备份模
式。只有在您确定这些文件处于备份模式、且未从备份中还原的情况下,才可
使用此命令。

Oracle9i 数据库管理基础 II 10-23


结束联机备份

• 查询 V$BACKUP 以检查备份状态
• 发出 ALTER DATABASE 命令更改状态并取消冻结标头:
ALTER DATABASE DATAFILE ‘<filename>’ END
BACKUP;

• 或在 Oracle9i 中使用以下命令:
ALTER DATABASE END BACKUP;

Copyright © Oracle Corporation, 2001. All rights reserved.

联机表空间备份过程中出现故障(续)
如果您不能确定某一文件是否需要恢复,或者该文件是否仍处于联机备份模
式,可查询 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.

Oracle9i 数据库管理基础 II 10-24


联机表空间备份过程中出现故障(续)
或者,如果使用 Oracle9i 您可以发出以下命令:
SQL> ALTER DATABASE END BACKUP;
Database altered.
此命令使处在备份模式中的所有数据文件同时脱离该模式。
然后,您可以查询 V$BACKUP 以再次检查状态,如下所示:
SQL> SELECT * FROM v$backup;
FILE# STATUS CHANGE# TIME
-------- ------------------ ------- -------
1 NOT ACTIVE 0
2 NOT ACTIVE 228596 30-NOV-01
...
现在,您可以为用户打开数据库:
SQL> ALTER DATABASE OPEN;

Oracle9i 数据库管理基础 II 10-25


只读表空间备份

1 ALTER TABLESPACE query_data READ ONLY;

2
3
文件 1
备份副本 SCN 1 Query_Data
SCN 1 文件 1

用户文件 1
4 SCN 2
DBW0
用户文件 2
SCN 2

Copyright © Oracle Corporation, 2001. All rights reserved.

只读表空间操作

图例号 说明

1 使用 ALTER TABLESPACE SQL 命令将表空间的状态从读写


更改为只读:
SQL> ALTER TABLESPACE query_data READ ONLY;
2 发出 ALTER TABLESPACE 命令后,会对所有与表空间相关联
的数据文件执行检查点。然后使用当前 SCN 冻结文件头。

3 使表空间成为只读状态之后,您必须备份该表空间的所有数据
文件。

4 DBW0 进程只写入其表空间处于读写模式的数据文件,正常

检查点也只对这些文件执行。

Oracle9i 数据库管理基础 II 10-26


只读表空间备份问题

• 在将表空间更改为只读后,只需要一个备份。
• 在使表空间成为读写状态之后,应恢复按照正常备份
日程对该表空间进行备份。
• 控制文件必须能正确标识处在只读模式下的表空间;
否则,您必须恢复该表空间。

Copyright © Oracle Corporation, 2001. All rights reserved.

对只读表空间的说明
• 由于不对只读表空间的数据文件执行任何写操作,因此,只有在这些文件
损坏的情况下才必须进行恢复。
• 将表空间从只读状态更改为读写状态,其结果是导致 DBW0 写入表空间文
件,并象通常一样产生检查点。这样,您就必须对与该表空间相关联的所
有数据文件重新使用正常备份时间表。
• 使用 ALTER TABLESPACE 命令将表空间更改为只读状态,会导致控制文
件更新。执行恢复操作时,控制文件必须能够正确地标识只读表空间;否
则,您必须恢复该表空间。

Oracle9i 数据库管理基础 II 10-27


与记录和不记录选
项相关的备份问题

记录 不记录

所有更改记录到重做日志中 重做日志只记录最少量内容

可从上一次备份完全恢复 不可从上一次备份恢复

无其它备份 可能需要其它备份

Copyright © Oracle Corporation, 2001. All rights reserved.

与记录和不记录选项相关的备份问题
使用直接装载操作时,表空间、表、索引或分区可能被设置为 NOLOGGING
模式,以便更快地加载数据。为直接装载操作设置 “不记录” (Nologging) 选项
后,插入语句将不记录到重做日志文件中。
由于当表处在 NOLOGGING 模式时,重做日志不包含插入的值,因此,应在
直接装载操作完成后立即对与表或分区有关的数据文件进行备份。

Oracle9i 数据库管理基础 II 10-28


手动备份控制文件

• 创建二进制映像
ALTER DATABASE BACKUP CONTROLFILE TO
‘control1.bkp`;

• 创建文本跟踪文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Copyright © Oracle Corporation, 2001. All rights reserved.

手动备份控制文件
如果您不使用 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
注:发出上述任一命令后,都需要备份控制文件。

Oracle9i 数据库管理基础 II 10-30


备份初始化
参数文件

CREATE PFILE FROM SPFILE;

CREATE PFILE = ‘/backup/init.ora’


FROM SPFILE;

Copyright © Oracle Corporation, 2001. All rights reserved.

备份服务器初始化参数文件
您可以使用 CREATE PFILE 语句来创建服务器参数文件的备份。服务器参数
文件的内容以文本格式导出到一个初始化参数文件中。
CREATE PFILE 命令可以在缺省位置创建该文件,您也可以按本幻灯片中第
二个示例指定文件名。

Oracle9i 数据库管理基础 II 10-31


使用 DBVERIFY 实用
程序验证备份

4
DBVERIFY

错误报告
1 2 3

联机 脱机
联机

数据文件

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 DBVERIFY 实用程序验证备份
使用 DBVERIFY 实用程序可以验证数据文件,具体方法是检查指定数据文件
中的数据块结构的完整性。这是数据库之外的实用程序,因此它对数据库活动
的影响最小。
步骤 说明
1 该实用程序可用于验证联机数据文件。
2 您可以对数据文件的局部调用该实用程序。
3 该实用程序可用于验证脱机数据文件。
4 您可以将该实用程序的输出指向错误日志。

运行 DBVERIFY
DBVERIFY 实用程序的可执行程序名称在不同操作系统中是不同的。它位于
Oracle 主目录的 bin 目录中。在 UNIX 环境中,应执行 dbv 可执行程序。
Oracle9i 数据库管理基础 II 10-32
DBVERIFY 命令行界面

• 外部命令行实用程序
• 用于确保备份数据库或数据文件在还原之前是有效的
• 遇到数据损坏问题时可作为有用的诊断辅助工具

%dbv file=/ORADATA/u03/users01.dbf logfile=dbv.log

Copyright © Oracle Corporation, 2001. All rights reserved.

DBVERIFY 命令行界面
您可以使用命令行界面来调用 DBVERIFY 实用程序。该实用程序主要用于以
下两个目的:确保备份数据库(或数据文件)在还原之前是有效的;遇到数据
损坏问题时用作诊断辅助工具。
示例
要验证数据文件 users01.dbf 的完整性(从块 1 开始到块 500 结束),您可以
执行如下命令:
$ dbv file=/ORADATA/u03/users01.dbf start=1 end=500
注:DBVERIFY 的名称和位置取决于您的操作系统。有关您的系统的
DBVERIFY 位置的信息,请参阅针对特定操作系统的 Oracle 文档。

Oracle9i 数据库管理基础 II 10-33


DBVERIFY 命令行界面(续)
DBVERIFY 输出
上面命令的输出可能如下所示:
DBVERIFY - Verification starting : FILE =
/ORADATA/u03/users_01.dbf
DBVERIFY - Verification complete
Total Pages Examined : 500
Total Pages Processed (Data): 22
Total Pages Failing (Data): 0
Total Pages Processed(Index): 16
Total Pages Failing(Index): 0
Total Pages Empty : 0
Total Pages Marked Corrupt: 0
Total Pages Influx: 0
where: Pages is the number of Oracle blocks processed.
参数 说明
DBVERIFY
FILE 参数 要验证的数据库文件的名称
START 验证的块的起始地址。块地址在 Oracle 块中指
定。如果不指定 START,则假定起始地址为文
件中的第一个块。
END 要验证的块的结束地址。如果不指定 END,则
假定结束地址为文件中的最后一个块。
BLOCKSIZE 仅在文件中有大于 2KB 的块时才需要此参数
LOGFILE 指定事件记录信息写入的文件。缺省设置是将
输出发送到终端显示器。
FEEDBACK 使 DBVERIFY 为已验证的 n 页显示单个 ‘.’
HELP 提供屏上帮助
PARFILE 指定要使用的参数文件的名称

Oracle9i 数据库管理基础 II 10-34


小结

在这一课中,您应该能够掌握:
• 确定哪些文件需要备份以及应在何时进行备份
• 进行用户管理的备份
• 备份控制文件
• 备份服务器初始化参数文件
• 结束由于例程故障而未完成的联机备份
• 使用动态视图确定备份操作的状态
• 使用 DBVERIFY 验证备份

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 10-35


练习 10 概览

此练习涉及以下主题:
• 执行完全脱机数据库备份
• 执行表空间数据文件的联机备份
• 创建控制文件的跟踪文件

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 10-36


练习 10 用户管理的备份
1. 数据库打开后,以 sys 或 system 身份连接到数据库,并使用 V$ 和数
据字典视图,列出进行整体脱机数据库备份所必须备份的全部文件。
注:为方便 NOARCHIVELOG 模式下的还原和恢复,应复制重做日志。
2. 使用 IMMEDIATE 选项关闭数据库。使用操作系统命令在
$HOME/DONTTOUCH 目录下进行整体脱机数据库备份。
注:不要在 DONTTOUCH 目录下放置任何其它文件,也不要从该目录中
删除任何文件。专题讨论中会用到此副本。
3. 启动例程,装载并打开数据库。
4. 以 system/manager 身份连接,并对 SAMPLE 表空间执行打开的数据库的
备份。将该文件复制到 $HOME/BACKUP/UMAN 目录下。确保没有覆盖另
一个副本。
5. 使用 ALTER DATABASE 命令备份要跟踪的控制文件。执行
$HOME/STUDENT/LABS/lab10_05.sql 脚本以识别该跟踪文件。退
出到操作系统并将跟踪文件复制到 $HOME/BACKUP/UMAN/cntrl.sql。
使用编辑器,将跟踪文件中的注释行删除。
6.创建控制文件的二进制副本,并将其放到 $HOME/BACKUP/UMAN 目录下。
将备份副本命名为 cntrl1.bkp。

Oracle9i 数据库管理基础 II 10-37


Oracle9i 数据库管理基础 II 10-38
RMAN 备份

Copyright © Oracle Corporation, 2001. All rights reserved.


目标

完成这一课的学习后,您应该能达到下列目标:
• 确定 RMAN 特定的备份类型
• 使用 RMAN BACKUP 命令创建备份集
• 备份控制文件
• 备份归档重做日志文件
• 使用 RMAN COPY 命令创建映像副本

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 11-2


RMAN 备份概念

• 恢复管理器备份是由服务器管理的备份
• 恢复管理器使用 Oracle 服务器会话执行备份操作
• 可以备份整个数据库、表空间中的所有数据文件、选定
的数据文件、控制文件、归档重做日志文件
• 关闭的数据库的备份
– 目标数据库必须已装载(不得打开)
– 包括数据文件、控制文件、归档重做日志文件
• 打开的数据库的备份
– 不应将表空间置于备份模式
– 包括数据文件、控制文件、归档重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器备份的类型
恢复管理器提供对以下内容进行备份的功能:
• 整个数据库、表空间中的每个数据文件或单个数据文件
• 控制文件
• 所有归档日志或所选归档日志
注:使用恢复管理器时不备份联机重做日志文件。
关闭的数据库的备份
关闭的数据库的备份定义为在数据库关闭(脱机)时进行的备份。这与一致数据库备份相
同。如果执行关闭的数据库的备份,则不得打开目标数据库。如果使用恢复目录,则必须
打开恢复目录数据库。
打开的数据库的备份
打开的数据库的备份定义为在数据库打开(联机)时对数据库任意部分进行的备份。恢复
管理器使用服务器进程制作数据文件、控制文件或归档日志的副本。使用恢复管理器时,
不要使用 ALTER TABLESPACE ... BEGIN BACKUP 命令将表空间置于备份模式。
RMAN 读取块,直到获得一致读取为止。

Oracle9i 数据库管理基础 II 11-3


恢复管理器备份
映像副本
数据文件 数据文 数据文件 3 的副本
3 件3

控制文件 控制文件 控制文件的副本

归档日志 归档日志
文件 归档日志的副本
文件
备份集
数据文件 数据文件
1 4 数据文件 数据文件 控制文件
1 3
数据文件 控制文件
数据文件 数据文件
2
2 4
数据文件
3 备份集 1 备份集 2 备份集 3

Copyright © Oracle Corporation, 2001. All rights reserved.

恢复管理器备份
可以使用恢复管理器执行以下类型的备份:
• 映像副本是数据文件、控制文件或归档重做日志文件的副本。可以使用恢复管理器或
操作系统实用程序制作相应的副本。数据文件的映像副本包含所有的数据文件块,其
中包括未使用过的块。映像副本只能包含一个文件,而且不能对单个复制操作进行多
元备份。
• 备份集可以包含一个或多个数据文件、控制文件或归档重做日志文件。备份集可以包
含一个或多个文件。可以使用两种完全不同的方法制作备份集:
– 完全备份:在完全备份中,可以备份一个或多个文件。在完全备份中,所有包含
指定文件数据的数据块都会被备份。
– 增量备份:增量备份只对上次增量备份以后数据块有更改的数据文件进行备份。
增量备份需要一个基础级别(即增量级别 0)备份,该备份包含指定文件数据的
所有块。增量级别 0 和完全备份均复制数据文件中的所有块,但是在增量备份策
略中不能使用完全备份。
注:您可以配置自动备份控制文件,在执行 BACKUP 或 COPY 命令后即可自动备份控制文
件。

Oracle9i 数据库管理基础 II 11-4


备份集

数据文件 数据文件 数据文件 数据文件 控制文件


1 4 1 3

数据文件 控制文件 数据文件 数据文件


2 2 4

数据文件
3 备份集 1 备份集 2 备份集 3

Copyright © Oracle Corporation, 2001. All rights reserved.

备份集
备份集包含一个或多个物理文件(以 RMAN 特定的格式存储在磁盘或磁带上)。可以制
作包含数据文件、控制文件以及归档重做日志文件的备份集。也可以对备份集进行备份。
备份集有两种类型:
• 数据文件:可以包含数据文件和控制文件,但不包含归档日志
• 归档日志:仅包含归档日志,不能包含数据文件或控制文件
注: 在执行恢复之前,可能需要通过恢复管理器还原备份集,这与磁盘上的映像副本不
同。
数据文件备份集中的控制文件
备份集中的每个文件必须具有相同的 Oracle 块大小。如果包含控制文件,就会将它写入
到最后一个数据文件备份集中。可以使用以下两种方式将控制文件包含在备份集中:
• 使用 INCLUDE CONTROL FILE 语法显式包含
• 通过备份文件 1(系统数据文件)隐式包含
RMAN BACKUP 命令用于备份数据文件、归档重做日志文件以及控制文件。BACKUP 命令
将文件备份到磁盘或磁带上的一个或多个备份集中。在数据库打开或关闭时,都可以制作
备份。制作类型既可以是完全备份,也可以是增量备份。

Oracle9i 数据库管理基础 II 11-5


备份集的特性

• 可以使用 BACKUP 命令创建备份集。


• 备份集通常包含多个文件。
• 可以将备份集写入磁盘或磁带。
• 要从备份集中提取文件,必须使用还原操作。
• 数据文件备份集可以是增量备份或完全备份。
• 备份集不包含从未使用过的块。

Copyright © Oracle Corporation, 2001. All rights reserved.

备份集的特性
备份集是一种逻辑结构,它具有以下特性:
• 备份集包含一个或多个称作备份片的物理文件。
• 备份集是使用 BACKUP 命令创建的。FILESPERSET 参数可以控制备份集中包含的数
据文件个数。
• 可以将备份集写入磁盘或磁带。缺省情况下,Oracle 为大多数平台提供一个磁带输
出,称为 SBT(系统备份到磁带),当使用介质管理器时,备份将输出到磁带设备中。
• 在执行恢复之前必须通过还原操作从备份集中提取文件。
• 归档重做日志文件备份集不能是增量备份(缺省为完全备份)。
• 备份集不包含从未使用过的数据块。

Oracle9i 数据库管理基础 II 11-6


备份片

• 备份片是备份集中的一个文件。
• 备份片可以包含来自多个数据文件的数据块。

备份集 1(逻辑) 片1
片 1(文件) 片 2(文件) 服务器
进程
数据文件 数据文件 数据文件 (通道)
1 4 5 MML 片 2
集1
备份集 2(逻辑)
片 1(文件) 服务器
进程
数据文件 数据文件 数据文件 (通道)
2 3 9 MML 集2

Copyright © Oracle Corporation, 2001. All rights reserved.

备份片
逻辑备份集通常只包含一个备份片。备份片是一个包含一个或多个 Oracle 数据文件或归
档日志的物理文件。
对于大型数据库,一个备份集可能超出单个磁带盘、物理磁盘或操作系统文件的最大容量。
可以使用 CONFIGURE CHANNEL 或 ALLOCATE CHANNEL 命令及 MAXPIECESIZE 选项
来限制每个备份集片的大小。

Oracle9i 数据库管理基础 II 11-7


备份片大小

可以按如下方式限制备份片的大小:

RMAN> RUN {
2> ALLOCATE CHANNEL t1 TYPE 'SBT'
3> MAXPIECESIZE = 4G;
4> BACKUP
5> FORMAT 'df_%t_%s_%p' FILESPERSET 3
6> (tablespace users); }

Copyright © Oracle Corporation, 2001. All rights reserved.

备份片大小
可以使用以下命令限制备份片的大小,并根据需要为每个备份集生成多个片:
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;

Oracle9i 数据库管理基础 II 11-8


BACKUP 命令

RMAN> BACKUP
2> FORMAT '/BACKUP/df_%d_%s_%p.bus'
3> DATABASE filesperset = 2;

数据文件 数据文件 数据文件 数据文件 控制文件


1 4 1 3

数据文件 控制文件 数据文件 数据文件


2 2 4

数据文件
3 备份集 1 备份集 2 备份集 3

Copyright © Oracle Corporation, 2001. All rights reserved.

BACKUP 命令
可以控制 Oracle 生成的备份集数以及恢复管理器在单个备份集中放置的输入文件数。如
果在读取文件或写入备份片时出现 I/O 错误,该作业就会中止。
在使用 BACKUP 命令时,必须执行以下操作:
• 装载或打开目标数据库。如果数据库处于 ARCHIVELOG 模式,恢复管理器允许您制
作不一致备份,但您必须应用重做日志,使备份在恢复操作中使用时保持一致。
• 如果未使用自动通道分配,则手动分配一个通道用以执行 BACKUP 命令。
或者,可以执行下列操作:
• 指定备份片的命名约定。如果没有指定 FORMAT 参数,则 RMAN 将备份片存储在端
口特定的目录中(在 UNIX 上为 $ORACLE_HOME/dbs)。如果没有指定文件名格
式,则 RMAN 缺省使用 %U。
• 通过使用 INCLUDE CURRENT CONTROLFILE 选项,可以将控制文件包含在备份集中。

Oracle9i 数据库管理基础 II 11-9


BACKUP 命令选项

选项 重要性
full 服务器会话将所有块都复制到备份集中,只跳过从未使用过的数据文
件块。在备份归档重做日志或控制文件时,服务器会话不会跳过任何
块。完全备份不是增量备份。

incrementa 服务器会话复制自上次 n 级增量备份以来更改过的数据块,其中 n 是


l 从 1 到 4 之间的任意整数。
level 要执行大于 0 级的增量备份时,服务器进程会在 BACKUP 命令中检查
integer 每个数据文件的 0 级备份或 0 级副本是否存在。
如果指定增量,则必须在备份说明中设置以下参数之一:DATA FILE、
DATA FILECOPY、TABLESPACE 或 DATABASE。恢复管理器不支持
控制文件、归档重做日志或备份集的增量备份。

filesperse 如果指定了 FILESPERSET 参数,恢复管理器就会将 FILESPERSET


t 值与计算的值(备份的文件数与通道数的比值)进行比较,并采用两
integer 者中的较小值,从而确保使用所有的通道。
如果不指定 FILESPERSET,恢复管理器就会将计算的值(文件数与分
配的通道数的比值)与缺省值 64 进行比较并采用两者中的较小值。
当通道多于要备份的文件时,多余的通道将保持空闲。输入文件不能
在通道之间进行分割。

skip 指定该参数可将某些数据文件或归档重做日志排除在备份集之外。该
参数具有以下选项:
offline:将脱机数据文件排除在备份集之外。
readonly:排除属于只读表空间的数据文件。
inaccessible:排除由于 I/O 错误而无法读取的数据文件或归档重
做日志。

maxsetsize 以字节(缺省)、千字节 (K)、兆字节 (M) 或千兆字节 (G) 来指定备份


integer 集的最大大小。恢复管理器会尽量将所有的备份集限制为指定的大小。

diskratio 指示恢复管理器仅将数据文件分配给分布在指定数量驱动器上的备份
integer 集。当数据文件以带状分布或位于不同磁盘轴上时,此参数对数据文
件备份非常有用。

delete 在成功创建备份集后删除输入文件。仅当备份归档重做日志、数据文
input 件副本或备份集时才指定该选项。它相当于对所有输入文件执行
CHANGE . . . DELETE 命令。

Oracle9i 数据库管理基础 II 11-10


BACKUP 命令选项(续)

选项 重要性
include
current 创建当前控制文件的快照并将其放置在该子句生成的各备份集中。
controlfile

Format 输出名称的格式。可以单独使用或组合使用格式参数。

%c
指定一组双重备份片中备份片的副本数。

%p 指定备份集中的备份片数。对于各备份片,该值从 1 开始并且每创建一
个备份片,该值就增加 1。

%s 指定备份集数。该值是控制文件中的计数器,随着备份集的增加而增加。

%d 指定数据库名。
%n 指定数据库名,如果总长度未达到 8 个字符,则在右侧填补 x 个字符。

%t 指定备份集时间戳,它是由自某一固定参考时间开始经过的秒数生成的
4 字节值。联合使用 %s 和 %t 可以形成备份集的唯一名称。

%u 指定一个由 8 个字符组成的名称,该名称由该备份集号和创建该备份集
的时间的缩写形式构成。
%U 指定 %u_%p_%c 的简写方式,它将保证所生成的备份文件名的唯一性。
如果不指定格式,恢复管理器将缺省使用 %U。

Oracle9i 数据库管理基础 II 11-11


创建备份集

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


可以使用 “备份向导” (Backup Wizard) 创建备份集。在 “配置” (Configuration) 页上,指定
一个以前使用 “创建备份配置向导” (Create Backup Configuration Wizard) 创建的备份集配
置。

Oracle9i 数据库管理基础 II 11-12


多元备份集

将两个或多个数据文件多元备份到一个备份集中,以进行磁
带流式处理。

filesperset = 3
备份集
数据文件 数据文件
1 1,2,3,1,2,3…
服务器
数据文件 进程
2 (通道)
MML 磁带
数据文件
3

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 多元备份集
借助 RMAN 多元备份技术可同时读取磁盘上的文件,然后将这些文件写入同一个备份片。
在将多个文件写入同一备份文件或备份片时,恢复管理器自动将文件分配给通道、对这些
文件进行多元备份,并且跳过所有未使用过的块。为了同时备份足够多数量的文件,可以
对高性能顺序输出设备(如快速磁带机)进行流式处理。这对于必须与其它联机系统资源
竞争的备份来说是很重要的。操作员或存储子系统负责更换磁带机所在目标数据库上的磁
带。该进程是为写入磁带设计的,但也可以将它用于写入磁盘。
多元备份是由以下参数控制的:
• BACKUP 命令的 FILESPERSET 参数
• ALLOCATE CHANNEL 和 CONFIGURE CHANNEL 命令的 MAXOPENFILES 参数
示例
数据库包含三个数据文件,可以将这些数据文件一起多元备份到一个物理文件(集)中,
并存储在磁带上。数据文件是通过以下方式进行多元备份的:依次写入数据文件 1、数据
文件 2、数据文件 3 的各 n 个块,然后又回到数据文件 1 继续写,如此循环反复直至所有
文件备份完毕。

Oracle9i 数据库管理基础 II 11-13


备份集的并行化

分配多个通道,指定 filesperset(可选)以及包含多个
文件。
备份集 1 服务器
进程
数据文件 数据文件 数据文 (通道)
1 4 件5 集1
MML
备份集 2
服务器
数据文件 数据文件 数据文件 进程
2 3 9 (通道)
集2
MML
备份集 3
服务器
数据文件 数据文件 数据文件 进程
6 7 8 (通道) 集3
MML

Copyright © Oracle Corporation, 2001. All rights reserved.

备份集的并行化
可以将 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> }

Oracle9i 数据库管理基础 II 11-14


备份集的并行化(续)
当创建多个备份集并分配多个通道时,RMAN 自动并行地执行其操作,并且并行地写入多
个备份集。分配的服务器会话负责分摊指定数据文件、控制文件和归档重做日志文件的备
份工作。注意,不能让单个备份集分跨多个通道。
备份集的并行化通过以下方式完成:
• 将 PARALLELISM 配置为大于 1,或者分配多个通道
• 指定多个要备份的文件
示例
• 有 9 个文件需要备份(数据文件 1 到 9)。
• 已经合理分配了数据文件,从而保证每个集要备份的数据块数大致相等(为了提高效
率)。
– 将数据文件 1、4 和 5 分配给备份集 1。
– 将数据文件 2、3 和 9 分配给备份集 2。
– 将数据文件 6、7 和 8 分配给备份集 3。
注:可以使用 FILESPERSET 参数限制备份集中包含的数据文件个数。

Oracle9i 数据库管理基础 II 11-15


双重备份集

数据文件 数据文件
数据文件 1 1
1
数据文件 数据文件
数据文件 2 2
2
备份 1 备份 2
备份集

Copyright © Oracle Corporation, 2001. All rights reserved.

双重备份集
通过对备份集进行双重备份,可以给每个备份片最多创建 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 使用唯一键生成一个备份集,并给集内的每个备份片生成两个完全相同的副本。

Oracle9i 数据库管理基础 II 11-16


备份集的备份

数据文件 数据文件
1 1

数据文件 数据文件
2 2

备份集 备份集

Copyright © Oracle Corporation, 2001. All rights reserved.

备份备份集
另一种管理备份的方法就是对备份集进行备份。可以使用 RMAN BACKUP BACKUPSET
命令进行磁盘到磁盘以及磁盘到磁带的备份。这可用于在磁带上制作额外的备份,或者将
备份从磁盘移到磁带上。

Oracle9i 数据库管理基础 II 11-17


归档重做日志文件的备份

• 自动切换联机重做日志文件。
• 执行归档日志故障转移。

Copyright © Oracle Corporation, 2001. All rights reserved.

归档重做日志文件的备份
在开始执行每个不包含 UNTIL 子句或 SEQUENCE 参数的 BACKUP ... ARCHIVELOG 命
令时,RMAN 会尝试自动切换并归档当前的联机重做日志。
在 Oracle9i 中,RMAN 执行归档日志故障转移。如果在归档重做日志文件中检测到任何
损坏的块,RMAN 就会在其它归档目标中搜索没有损坏块的文件。

Oracle9i 数据库管理基础 II 11-18


归档重做日志的备份集

• 仅包含归档重做日志文件
• 始终是完全备份

RMAN> BACKUP
2> FORMAT '/disk1/backup/ar_%t_%s_%p'
3> ARCHIVELOG ALL DELETE ALL INPUT;

Copyright © Oracle Corporation, 2001. All rights reserved.

归档重做日志文件的备份集
DBA 经常遇到的一个问题是:在备份归档日志之前,不知道是否已将其完全复制到归档
日志目标中。恢复管理器可以访问控制文件或恢复目录信息,所以它知道哪些日志已经归
档,可以在恢复过程中还原。
可以使用 BACKUP ARCHIVELOG 命令备份归档重做日志文件,或者在备份数据文件和控
制文件时使用 BACKUP … PLUS ARCHIVELOG 命令也同时备份这些日志文件。
归档日志备份集的特性
• 仅包含归档日志,不能包含数据文件或控制文件。
• 始终是完全备份。(因为可以指定要备份的归档日志的范围,所以无法执行增量备
份。)
示例(幻灯片)
本示例将所有的归档重做日志备份到一个备份集中,其中每个备份片包含 3 个归档日志。
在归档日志复制完毕后,将这些日志从磁盘上删除,并在 V$ARCHIVED_LOG 视图中将它
们标记为已删除。

Oracle9i 数据库管理基础 II 11-19


备份约束

• 必须已装载或打开数据库。
• 不支持联机重做日志备份。
• 在 NOARCHIVELOG 模式下只能使用 “干净的” 备份。
• 在 ARCHIVELOG 模式下只能使用 “当前的” 数据文件备
份。

Copyright © Oracle Corporation, 2001. All rights reserved.

备份约束
在使用恢复管理器执行备份时,必须注意以下几点:
• 恢复管理器要连接的目标数据库必须已装载。
• 不支持对联机重做日志进行备份。
• 如果目标数据库处于 NOARCHIVELOG 模式,则只能采用 “干净的” 表空间和数据文
件备份(即 “脱机正常” 或 “只读” 表空间的备份)。要采用数据库备份,必须先彻底
关闭该数据库,再以 “装载” 模式重新启动它。
• 如果目标数据库处于 ARCHIVELOG 模式,则只能备份 “当前的” 数据文件(通过恢复
将数据文件还原为当前状态)。
• 如果使用恢复目录,则必须打开恢复目录数据库。

Oracle9i 数据库管理基础 II 11-20


映像副本

数据文件 数据文件 数据文件 3 的副本


3 3

归档日 归档日 归档日志的副本


志文件 志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

映像副本
映像副本包含单个数据文件、归档重做日志文件或控制文件。可以使用 RMAN COPY 命
令或操作系统命令创建映像副本。
当使用 RMAN COPY 命令创建映像副本时,服务器会话验证文件中的块,并将副本记录
到控制文件中。

Oracle9i 数据库管理基础 II 11-21


映像副本的特性

• 只能写入磁盘
• 可立即用于恢复;不需要进行还原
• 是单个数据文件、归档日志或控制文件的物理副本
• 与操作系统备份最为相似(包含所有块)
• 可以是增量策略的一部分

Copyright © Oracle Corporation, 2001. All rights reserved.

映像副本的特性
映像副本具有以下特性:
• 只能将映像副本写入磁盘。因而,要在磁盘上保留该副本,则需要额外的磁盘空间。
对于大文件,复制花费的时间很长,但还原时间大大减少,这是由于该副本已经存在
于磁盘上的缘故。
• 如果文件存储在磁盘上,则可以立即使用这些文件(也就是说,这些文件不需要从其
它介质还原)。这为在恢复管理器中使用 SWITCH 命令进行恢复提供了一种快速方
法,它相当于 ALTER DATABASE RENAME FILE SQL 语句。
• 映像副本中将包含所有的块(不管这些块是否包含数据),原因是 Oracle 服务器进程
在复制该文件的同时还会执行其它操作,如检查损坏的块、在控制文件中注册该副本
等。要加快复制进程,可以使用 NOCHECKSUM 参数。
• 映像副本可以是完全备份或增量 0 级备份的一部分,原因是文件副本总是包含所有块。
如果该副本将与增量备份集一同使用,则使用 0 级选项。
• 在增量备份策略中,可以将映像副本指定为 0 级备份,但映像副本不能作为其它级别
的备份。

Oracle9i 数据库管理基础 II 11-22


创建映像副本

Copyright © Oracle Corporation, 2001. All rights reserved.

使用 Oracle Enterprise Manager


可以使用 “备份向导” (Backup Wizard) 创建映像副本。在 “配置” (Configuration) 页上,指
定一个以前使用 “创建备份配置向导” (Create Backup Configuration Wizard) 创建的映像副
本配置。

Oracle9i 数据库管理基础 II 11-23


映像副本示例

数据文件 数据文件 数据文件 3 的副本


3 3

归档日 归档日
志文件 志文件 归档日志的副本

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';

Copyright © Oracle Corporation, 2001. All rights reserved.

映像副本
使用 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';}

Oracle9i 数据库管理基础 II 11-24


COPY 命令

RMAN> COPY
2> DATAFILE 3 TO '/BACKUP/file3.dbf',
3> DATAFILE 1 TO '/BACKUP/file1.dbf';

数据文件
1 数据文件 控制 重做日志
1 文件 文件 1
映像副本
数据文件 重做日志
2 文件 2
数据文件
3 数据文件
3 数据库
映像副本

Copyright © Oracle Corporation, 2001. All rights reserved.

COPY 命令
在复制操作中,Oracle 服务器进程对每个块执行校验和计算以检测是否有块损坏。RMAN
在还原副本时也要核对校验和。该过程称为物理损坏检测。可以使用 NOCHECKSUM 选项
取消校验和操作,从而加快复制进程。如果数据库已在维护块校验和,则此选项无效。
可以使用 CHECK LOGICAL 选项测试通过了物理损坏检查的数据和索引块,查看它们是
否存在逻辑损坏,如行片或索引条目损坏。如果检测到任何块存在逻辑损坏,则将该块记
录到服务器进程的警报日志和跟踪文件中。
可以使用 MAXCORRUPT 参数设置逻辑和物理损坏的阈值。只要在某个文件中检测到的逻
辑和物理损坏总和低于该值,则 RMAN 命令完成,同时 Oracle 将损坏块的范围植入到
V$COPY_CORRUPTION 视图。如果超出 MAXCORRUPT,则该命令终止,并且不植入视图。

Oracle9i 数据库管理基础 II 11-25


映像复制并行性

一个 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';

Copyright © Oracle Corporation, 2001. All rights reserved.

映像复制并行性
缺省情况下,恢复管理器将连续执行各 COPY 命令。然而,可以通过以下方法并行执行复
制操作:
• 使用 CONFIGURE DEVICE TYPE … PARALLELISM
• 或分配多个通道(在 Oracle8i 中是必需的)
• 为多个文件指定一条 COPY 命令
可以手动分配通道(如幻灯片所示),或者通过自动通道配置进行分配。
在该示例中,总共创建了 4 个通道,但仅使用其中的 3 个。以下是命令的执行情况:
1. 将 4 个通道配置为写入磁盘。
2. 第一条 COPY 命令使用 3 个通道(服务器进程),一个数据文件通过一个通道写入磁
盘。
3. 第二条 COPY 命令将在前一条 COPY 命令执行完成后才开始执行。它将只使用一个通
道。
注:当并行度比较高时,占用的计算机资源较多,但备份操作完成速度较快。

Oracle9i 数据库管理基础 II 11-26


复制整个数据库

• 装载数据库,对整个数据库执行一致备份。
• 使用 REPORT SCHEMA 命令列出文件。
• 使用 COPY 命令或制作每个数据文件的映像副本。
• 使用 LIST COPY 命令验证副本。

Copyright © Oracle Corporation, 2001. All rights reserved.

如何制作整个数据库的映像副本
要使用恢复管理器制作所有数据文件的映像副本,请按照以下步骤执行:
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 将
自动备份控制文件。

Oracle9i 数据库管理基础 II 11-27


制作增量备份

• 完全备份 包含数据文件中 完全备份


的所有块。
• 差异增量备份 只包括从 n
级或更低级别备份以来修 差异增量备份
改过的块。
• 累积增量备份 只包括从
n-1 级或更低级别备份以
累积增量备份
来修改过的块。

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 备份类型
完全备份
完全备份与整体数据库备份不同。整体备份包含目标数据库的所有数据文件和控制文件,
而完全备份可能只包含一个或多个数据文件、控制文件或归档重做日志文件。
在执行完全备份时,Oracle 服务器进程读取整个文件,并将所有的块复制到备份集内,只
跳过从未使用过的数据文件块。在备份归档重做日志或控制文件时,服务器会话不会跳过
任何块。
完全备份不属于增量备份策略的一部分。可以用它创建和还原数据文件、数据文件副本、
表空间、数据库、控制文件、归档日志和归档日志副本的完全备份。注意,包含归档重做
日志的备份集始终是完全备份。

Oracle9i 数据库管理基础 II 11-28


RMAN 备份类型(续)
增量备份
增量备份仅包含自上次增量备份以来更改过的块。
RMAN 可以创建多级增量备份(如下所示):
• 差异备份:这是增量备份的缺省类型,它备份自最近 n 级或更低级别备份以来更改
过的所有块
• 累积备份:备份自最近 n-1 级或更低级别备份以来更改过的所有块
差异备份是使用 BACKUP 命令的 INCREMENTAL 关键字指定的。可以指定
INCREMENTAL LEVEL = integer,其中 integer 是 1 到 4 之间的任意整数。
必须将 0 级备份作为增量策略的基础备份。0 级增量备份在内容上与完全备份相同,但
与完全备份不同的是,0 级备份被看作是增量策略的一部分。如果在运行 1 级或更高级
别的备份时,0 级备份不存在,RMAN 会自动制作 0 级备份。

Oracle9i 数据库管理基础 II 11-29


差异增量备份的示例

n 级备份,备份自最近 n 级或更低级别备份以来更改过的所
有块。

0级 0级

级别 0 2 2 1 2 2 2 0
星期 星期日 星期一 星期二 星期三 星期四 星期五 星期六 星期日

Copyright © Oracle Corporation, 2001. All rights reserved.

差异增量备份的示例
您要维护一个 100 GB 的数据库,该数据库还在不断地增长。基于现有的硬件,您确定执
行打开的数据库的整体备份需要 4 个小时。由于数据库每周 7 天、每天 24 小时总是处于
联机状态,所以在该时间段内执行备份将消耗大量系统资源。因此,每周只能执行一次 0
级备份,但出现故障时必须进行快速恢复。综合考虑,您制订了以下备份和恢复策略:
• 0 级备份将在每周中活动最少的一天执行。您确定这一天为星期日。
RMAN> BACKUP INCREMENTAL level 0 database;
• 每天执行一次 2 级增量备份,星期三除外。以这种方式备份的速度比较快,这是因为
只复制了自前一天以来更改过的块:
RMAN> BACKUP INCREMENTAL level 2 database;

Oracle9i 数据库管理基础 II 11-30


差异增量备份的示例(续)
• 星期三的数据库活动较少,所以在这一天复制自星期日以来更改过的所有块,以加快恢
复速度。例如,如果在星期五发生故障,则只需要还原星期日、星期三和星期四的备份
(不需要还原星期一和星期二的备份):
RMAN> BACKUP INCREMENTAL level 1 database;
• 在星期四,增量备份被完全备份代替。由于这并不改变备份的基础级别,所以星期五的
备份复制自星期三以来的更改。因此,可以在下一个 0 级备份之前丢弃该备份。如果错
误地在星期四执行了 0 级备份,则星期五的备份将复制自星期四以来更改过的所有块,
这样就更新了基础级别。此时,必须将该备份保存到下一个 0 级备份。

Oracle9i 数据库管理基础 II 11-31


累积增量备份的示例

n 级备份,它包含自上次 n-1 级或更低级别备份以来更改过


的所有块
0级 0级

级别 0 2 2C 1 2 2C 2C 0
星期 星期日 星期一 星期二 星期三 星期四 星期五 星期六 星期日

Copyright © Oracle Corporation, 2001. All rights reserved.

累积增量备份的示例
累积增量备份具有以下特性:
• 累积增量 n 级(其中,n > 0)备份复制自上次 n-1 级或更低级别备份以来更改过的所
有块。
• 累积增量备份以相同的级别备份上次备份的块。因此,与非累积备份相比,它们占用
的时间较长、写出的块较多、生成的备份文件也较大。
• 因为恢复时在各级别必须应用的备份较少,所以累积增量备份可以提高恢复速度。
示例
累积增量备份以相同的级别复制上次增量备份已复制的更改。因此,如果采用 2 级增量备
份,则随后的 2 级累积备份将备份所有新修改的块以及该 2 级增量备份备份过的块。这意
味着要进行完全恢复,只需要一个同级的增量备份即可。
RMAN> BACKUP INCREMENTAL level 2 cumulative database;

Oracle9i 数据库管理基础 II 11-32


在 NOARCHIVELOG 模式下进行备份

1. 确保给备份留出足够的空间。
2. 使用 NORMAL 或 IMMEDIATE 子句关闭数据库。
3. 装载数据库。
4. 如果未使用自动通道分配,请分配多个通道。
5. 运行 BACKUP 命令。
6. 确认备份完成并已分类。
7. 打开数据库进行正常使用。
RMAN> BACKUP DATABASE FILESPERSET 3;

Copyright © Oracle Corporation, 2001. All rights reserved.

如何以 NOARCHIVELOG 模式进行多元备份


1. 确保要存储备份的目标目录可用并具有足够的空间。
2. 使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 子句彻底关闭数据库。
3. 装载数据库。
4. 如果未使用自动通道分配,请分配多个通道,并使用格式字符串将通道多路复用
到不同的磁盘上。
5. 运行 BACKUP 命令。由于数据库处于 NOARCHIVELOG 模式,增量备份不适用,
请使用完全备份选项。
6. 确认备份完成并已分类。
7. 打开数据库进行正常使用。

Oracle9i 数据库管理基础 II 11-33


自动备份 RMAN 控制文件

• 可通过 CONFIGURE CONTROLFILE AUTOBACKUP 命令


启用
• 启用此功能后,RMAN 在执行 BACKUP 或 COPY 命令后
自动执行控制文件的自动备份
• 系统会给备份指定一个缺省名称

Copyright © Oracle Corporation, 2001. All rights reserved.

自动备份控制文件
如果 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
命令更改此格式。

Oracle9i 数据库管理基础 II 11-34


自动备份控制文件(续)
格式字符串必须包含 %F 替代变量。此变量将转换为 c-IIIIIIIIII-YYYYMMDD-QQ,其中:
• IIIIIIIIII 代表 DBID。DBID 以十进制输出,因此可以方便地将它与目标数据库关联
起来。
• YYYYMMDD 是生成备份当天的公历时间戳
• QQ 是序列号(十六进制数字),从 00 开始,最大值为 'FF' (256)
示例
RMAN> SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE disk
2> TO 'controlfile_%F';

Oracle9i 数据库管理基础 II 11-35


备份和映像副本的标记

为备份集或映像副本分配的逻辑名称

month_full_backup week_full_backup Wednesday_1_backup

数据文件 数据文件 数据文件


1,3 3 1

数据文件 数据文件
2,4 4

备份集 备份集 备份集

Copyright © Oracle Corporation, 2001. All rights reserved.

备份和映像副本的标记
标记是可以分配给备份集或映像副本的有意义的名称。使用用户标记的优点如下:
• 标记可以为文件副本集合或备份集提供有用的引用。
• 在 LIST 命令中,使用标记可以容易地定位已备份的文件。
• 可以在 RESTORE 和 SWITCH 命令中使用标记。
• 同样的标记可以用于多个备份集或文件副本。
如果一个不唯一的标记引用了多个数据文件,则恢复管理器会选择最新的可用文件。
示例
• 每月都会对数据文件 1、2、3 和 4 执行完全备份。虽然生成的物理文件名是
df_DB00_863_1.dbf,但控制文件中该备份的标记是 month_full_backup 。
• 每周都会对数据文件 3 和 4 执行完全备份。该备份的标记名为 week_full_backup。

Oracle9i 数据库管理基础 II 11-36


RMAN 动态视图

• V$ARCHIVED_LOG
• V$BACKUP_CORRUPTION
• V$COPY_CORRUPTION
• V$BACKUP_DATAFILE
• V$BACKUP_REDOLOG
• V$BACKUP_SET
• V$BACKUP_PIECE

Copyright © Oracle Corporation, 2001. All rights reserved.

RMAN 动态视图
可以使用以下视图获取在控制文件中存储的 RMAN 信息:
• V$ARCHIVED_LOG 显示在数据库中已经创建、备份或清除的归档文件。
• V$BACKUP_CORRUPTION 显示在备份集的备份过程中找到的损坏块。
• V$COPY_CORRUPTION 显示映像复制过程中找到的损坏块。
• V$BACKUP_DATAFILE 用于通过确定各数据文件中的块数来创建大小相同的备份
集。通过它也可以找出数据文件中已损坏的块数。
• V$BACKUP_REDOLOG 显示在备份集中存储的归档日志。
• V$BACKUP_SET 显示已经创建的备份集。
• V$BACKUP_PIECE 显示为备份集创建的备份片。

Oracle9i 数据库管理基础 II 11-37


监视 RMAN 备份

• 使用 SET COMMAND ID 命令可将服务器会话与通道联系


起来。
• 查询 V$PROCESS 和 V$SESSION,可以确定会话与哪些
RMAN 通道对应。
• 查询 V$SESSION_LONGOPS,可以监视备份和复制的进
度。
• 使用操作系统实用程序可以监视进程或线程。

Copyright © Oracle Corporation, 2001. All rights reserved.

如何监视复制进程
要在备份过程中将某一进程与一个通道关联起来,请:
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%';

Oracle9i 数据库管理基础 II 11-38


如何监视复制进程(续)
4. 使用 SQL*Plus 并查询 V$PROCESS 和 V$SESSION 以获得 SID 和 SPID。然后,
使用操作系统实用程序来监视进程或线程。
SELECT sid, spid, client_info
FROM v$process p, v$session s
WHERE p.addr = s.paddr
AND client_info LIKE '%id=rman%';
注:要监视复制进程,必须查询目标数据库,因此,目标数据库应该处于 “打开” 或 “装载”
状态。

Oracle9i 数据库管理基础 II 11-39


其它 RMAN 问题

• 恢复管理器作业异常终止
• 检测到物理和逻辑块损坏
• 在打开的数据库的备份过程中检测到破碎块

Copyright © Oracle Corporation, 2001. All rights reserved.

其它 RMAN 问题
恢复管理器异常终止
恢复管理器只在控制文件中记录已成功备份的备份集。如果恢复管理器作业异常终止,则
操作系统中可能存在没有完成的文件。恢复管理器不使用这些文件,但您应该将它们删除。
检测损坏
恢复管理器可以检测并能够禁止执行一些操作,如导致备份文件无法使用或造成还原的数
据文件损坏的操作。
缺省情况下将启用对物理损坏的错误检查。有关在备份过程中遇到的损坏数据文件块的信
息将记录在控制文件和警报日志中。服务器可以识别损坏的数据文件块,但这些损坏块仍
包含在备份中。Oracle 服务器在控制文件中记录损坏块的地址和损坏类型。要从控制文件
查看损坏块,请通过 V$BACKUP_CORRUPTION 查看备份集或通过
V$COPY_CORRUPTION 查看映像副本。
RMAN 将检测数据块和索引块是否存在逻辑损坏,并将所有错误记录在 alert.log 和服务器
会话的跟踪文件中。缺省情况下,禁用逻辑损坏的错误检查。

Oracle9i 数据库管理基础 II 11-40


其它 RMAN 问题(续)
检测破碎块
RMAN 读取整个数据库的块,并通过比较每个块的块头和块尾来确定块是否破碎。如果检
测到一个破碎块,则它重新读取该块,直到获取一致块为止。这就是为什么在使用 RMAN
进行表空间或数据文件备份时不必将表空间置于联机备份模式的原因之一。
这种机制还减少了在备份过程中生成的重做日志的数量,因为这样就不必将整个块都写入
重做日志文件了。

Oracle9i 数据库管理基础 II 11-41


小结

在这一课中,您应该能够掌握:
• 确定应该采用哪种 RMAN 备份类型
• 使用 RMAN COPY 和 BACKUP 命令制作备份
• 备份控制文件
• 备份归档重做日志文件

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 11-42


练习 11 概览

此练习涉及以下主题:
• 使用恢复管理器备份一个表空间数据文件和一个控制
文件
• 使用恢复管理器备份归档日志文件
• 使用 RMAN COPY 命令创建数据库文件的映像副本

Copyright © Oracle Corporation, 2001. All rights reserved.

Oracle9i 数据库管理基础 II 11-43


练习 11 RMAN 备份
1. 恢复管理器两个被支持的备份类型是什么?列举出两个备份类型之间的一些不同点。
2. 使用 RMAN 备份属于表空间的数据文件。同时还要确保复制了当前的控制文件。应
该将备份放在 $HOME/BACKUP/RMAN 目录中,并且文件名应该采用
df_%d_%s_%p.bus 格式。
3. 创建属于 SYSTEM 表空间的数据文件的映像副本。应该将该副本放在
$HOME/BACKUP/RMAN 目录中,副本名称为 sys0101.cpy,标记应为 SYSTEM01。
4. 使用 RMAN,将今天生成的归档重做日志文件备份到 $HOME/BACKUP/RMAN 目录
中。
5. 获取所有尚未备份的数据文件的列表。

Oracle9i 数据库管理基础 II 11-44

You might also like