ce%a2%cb%bc%cd%f8%c2%e7ocp_d… · 版权所有 © 2009 , oracle 。保留所有权利。...

460
Oracle Database 10g数据库管理 - 课堂练习 I 学生指南第 1 D17090CN31 版本 3.1 2009 8 D61386 Oracle Internal & Oracle Academy Use Only

Upload: others

Post on 19-Jul-2020

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

学生指南第 1 册

D17090CN31

版本 3.1

2009 年 8 月

D61386

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 2: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

免责声明

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

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

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

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

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

有限权利声明

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

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

商标声明

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

商标。

作者

Tom BestMaria Billings

技术撰稿人和审稿人

Celia AntonioLarry BaumannTammy BednarHoward BradleyM.J. BryksaSandra CheeversSteve FriedbergJoel GoodmanJohn HibbardMagnus IsakssonSushma JagannathChristine JealSteven KaramDonna KeeslingStella KisterPierre LabrousseStefan LindbladDee MatishakPaul NeedhamRaza SiddiquiJames SpillerJanet SternBarry TruteJean-Francois VerrierAnthony Woodell

编辑

Joyce Raftery

制图员

Satish Bettegowda

出版商

Jobi Varghese

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 3: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

iii

目录

前言

1 简介 课程目标 1-2 建议日程表 1-3 课程目标 1-4 Oracle 产品和服务 1-5 Oracle Database 10g:“g”代表网格 1-6 Oracle 数据库体系结构 1-8 数据库结构 1-9 Oracle 内存结构 1-10 进程结构 1-12 Oracle 实例管理 1-13 服务器进程和数据库缓冲区高速缓存 1-14 物理数据库结构 1-15 表空间和数据文件 1-17 SYSTEM 和 SYSAUX 表空间 1-18 段、区和块 1-19 逻辑和物理数据库结构 1-20 课程示例:HR 方案 1-22 数据库体系结构:结构化组件概要 1-23 小结 1-24

2 安装 Oracle 数据库软件 课程目标 2-2 Oracle 数据库管理员的任务 2-3 用于管理 Oracle 数据库的工具 2-4 安装:系统要求 2-6 检查系统要求 2-7 灵活体系结构 (OFA) 2-8 使用灵活体系结构 2-9

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 4: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

iv

设置环境变量 2-11 Oracle Universal Installer (OUI) 2-13 安装 Oracle 软件 2-14 数据库配置选项 2-15 执行配置脚本 2-16 完成安装 2-17 高级安装选项 2-18 安装选项:无提示模式 2-19 小结 2-20 练习概览:安装 Oracle 软件 2-21

3 创建 Oracle 数据库 课程目标 3-2 为数据库制定计划 3-3 数据库:示例 3-4 Database Configuration Assistant (DBCA) 3-5 使用 DBCA 创建数据库 3-6 口令管理 3-12 创建数据库设计模板 3-13 使用 DBCA 删除数据库 3-14 小结 3-16 练习概览:使用 DBCA 3-17

4 管理 Oracle 实例 课程目标 4-2 管理框架 4-3 启动和停止 Database Control 4-4 Oracle Enterprise Manager 4-5 访问 Oracle Enterprise Manager 4-6 数据库主页 4-7 使用 SQL*Plus 和 iSQL*Plus 访问数据库 4-8 使用 iSQL*Plus 4-9 为了以 SYSDBA 和 SYSOPER 身份进行访问而设置 iSQL*Plus 4-10 使用 SQL*Plus 4-12 从 Shell 脚本调用 SQL*Plus 4-13 从 SQL*Plus 调用 SQL 脚本 4-14 初始化参数文件 4-15

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 5: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

v

简化初始化参数 4-16 查看和修改初始化参数 4-18 数据库启动和关闭 4-19 启动 Oracle 数据库实例 4-20 启动 Oracle 数据库实例:NOMOUNT 4-21 启动 Oracle 数据库实例:MOUNT 4-22 启动 Oracle 数据库实例:OPEN 4-23 关闭 Oracle 数据库实例 4-24 关闭模式 4-25 SHUTDOWN 选项 4-26 使用 SQL*Plus 启动和关闭 4-29 查看预警日志 4-30 查看预警历史记录 4-31 动态性能视图 4-32 动态性能视图:用法示例 4-33 动态性能视图:注意事项 4-34 小结 4-35 练习概览:管理 Oracle 实例 4-36

5 管理数据库存储结构 课程目标 5-2 存储结构 5-3 如何存储表数据 5-4 数据库块的结构 5-5 表空间和数据文件 5-6 Oracle Managed Files (OMF) 5-7 表空间中的空间管理 5-8 浏览存储结构 5-9 创建新表空间 5-10 本地管理表空间的存储 5-12 预配置数据库中的表空间 5-14 变更表空间 5-16 对表空间执行的操作 5-18 删除表空间 5-20 查看表空间信息 5-21 采集存储信息 5-22

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 6: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

vi

查看表空间内容 5-23 扩大数据库 5-24 什么是 Automatic Storage Management 5-25 ASM:主要功能和优点 5-26 ASM:概念 5-27 小结 5-28 练习概览:管理数据库存储结构 5-29

6 管理用户安全性 课程目标 6-2 数据库用户帐户 6-3 预定义帐户:SYS 和 SYSTEM 6-4 创建用户 6-5 验证用户 6-6 管理员验证 6-8 解除用户帐户的锁定并重置口令 6-9 权限 6-10 系统权限 6-11 对象权限 6-13 使用 ADMIN OPTION 撤销系统权限 6-14 使用 GRANT OPTION 撤销对象权限 6-15 角色的作用 6-16 将权限分配给角色以及将角色分配给用户 6-17 预定义角色 6-18 创建角色 6-19 保护角色 6-20 将角色分配给用户 6-21 概要文件和用户 6-22 实施口令安全功能 6-24 创建口令概要文件 6-26 提供的口令验证函数:VERIFY_FUNCTION 6-27 将限额分配给用户 6-28 小结 6-30 练习概览:管理用户 6-31

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 7: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

vii

7 管理方案对象 课程目标 7-2 什么是方案 7-3 访问方案对象 7-5 命名数据库对象 7-6 指定表中的数据类型 7-8 创建和修改表 7-11 了解数据完整性 7-13 定义约束条件 7-15 违反约束条件 7-16 约束条件状态 7-17 约束条件检查 7-19 使用 SQL 创建约束条件:示例 7-20 查看表中的列 7-21 查看表的内容 7-22 对表执行的操作 7-23 删除表 7-24 截断表 7-25 索引 7-26 索引类型 7-27 B 树索引 7-28 位图索引 7-30 索引选项 7-32 创建索引 7-34 什么是视图 7-35 创建视图 7-36 序列 7-37 创建序列 7-38 使用序列 7-40 临时表 7-41 临时表:注意事项 7-43 数据字典:概览 7-44 数据字典视图 7-45 数据字典:用法示例 7-46 小结 7-47 练习概览:管理方案对象 7-48

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 8: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

viii

8 管理数据和并发处理 课程目标 8-2 通过 SQL 处理数据 8-3 INSERT 命令 8-4 UPDATE 命令 8-5 DELETE 命令 8-6 MERGE 命令 8-7 COMMIT 和 ROLLBACK 命令 8-9 PL/SQL 8-10 管理 PL/SQL 对象 8-11 PL/SQL 对象 8-12 函数 8-13 过程 8-14 程序包 8-15 程序包说明和程序包体 8-16 内置程序包 8-17 触发器 8-18 触发事件 8-19 锁定 8-20 锁定机制 8-21 数据并发处理 8-22 DML 锁定 8-24 排队机制 8-25 锁定冲突 8-26 锁定冲突的可能原因 8-27 检测锁定冲突 8-28 解决锁定冲突 8-29 使用 SQL 解决锁定冲突 8-30 死锁 8-31 小结 8-32 练习概览:管理数据和并发处理 8-33

9 管理还原数据

课程目标 9-2 数据操纵 9-3 还原数据 9-4

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 9: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

ix

事务处理和还原数据 9-6 存储还原信息 9-7 还原数据与重做数据 9-8 监视还原 9-9 管理还原 9-11 配置还原保留期 9-12 确保还原保留期 9-13 调整还原表空间的大小 9-14 使用还原指导 9-15 小结 9-16 练习概览:管理还原段 9-17

10 实施 Oracle 数据库安全性 课程目标 10-2 业界安全性要求 10-3 责任划分 10-5 数据库安全性 10-6 最少权限原则 10-8 应用最少权限原则 10-9 监视可疑活动 10-11 标准数据库审计 10-12 启用审计 10-13 统一审计线索 10-14 Enterprise Manager 审计页 10-15 指定审计选项 10-16 使用和维护审计信息 10-17 基于值审计 10-18 细粒度审计 10-20 FGA 策略 10-21 审计的 DML 语句:注意事项 10-23 FGA 准则 10-24 DBA 审计 10-25 维护审计线索 10-26 安全更新 10-27 应用安全补丁程序 10-28 小结 10-29 练习概览:实施 Oracle 数据库安全性 10-30

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 10: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

x

11 配置 Oracle 网络环境 课程目标 11-2 Oracle Net Services 11-3 Oracle Net Listener 11-4 建立网络连接 11-5 建立连接 11-6 用户会话 11-7 配置和管理 Oracle Network 的工具 11-8 监听程序控制实用程序 11-9 监听程序控制实用程序的语法 11-10 监听程序主页 11-12 网络服务管理页 11-13 创建监听程序 11-14 添加监听程序地址 11-15 数据库服务注册 11-16 命名方法 11-17 简便连接 11-18 本地命名 11-19 目录命名 11-20 外部命名方法 11-21 配置服务别名 11-22 高级连接选项 11-23 测试 Oracle Net 连接性 11-25 用户会话:专用服务器 11-26 用户会话:共享服务器 11-27 SGA 和 PGA 11-28 共享服务器:连接共享 11-29 不能使用共享服务器的情况 11-30 小结 11-31 练习概览:使用 Oracle Network 组件 11-32

12 主动维护

课程目标 12-2 主动维护 12-3 术语简介 12-4 优化程序统计信息 12-5 使用管理优化程序统计信息页 12-7

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 11: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

xi

自动工作量资料档案库 (AWR) 12-9 AWR 基础结构 12-10 AWR 快照集 12-11 Enterprise Manager 和 AWR 12-12 管理 AWR 12-13 统计信息级别 12-14 数据库自动诊断监视程序 (ADDM) 12-15 ADDM 查找结果 12-16 ADDM 建议案 12-17 指导框架 12-18 Enterprise Manager 和指导 12-20 DBMS_ADVISOR 程序包 12-21 服务器生成的预警 12-22 服务器生成的默认预警 12-23 设置阈值 12-24 创建和测试预警 12-25 预警通知 12-26 对预警作出响应 12-28 预警类型和清理预警 12-29 自动维护任务 12-30 小结 12-31 练习概览:主动维护 12-32

13 性能管理 课程目标 13-2 性能监视 13-3 性能监视:顶级会话 13-7 性能监视:顶级服务 13-8 SQL 优化指导:概览 13-9 SQL 优化指导选项和建议案 13-10 使用 SQL 优化指导 13-11 使用 SQL 优化指导:示例 13-12 SQL 优化指导:SQL 统计信息 13-14 SQL 优化指导:确定重复的 SQL 13-15 使用 SQL 访问指导 13-16 管理内存组件 13-18

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 12: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

xii

启用自动共享内存管理 (ASMM) 13-19 手动设置共享内存管理 13-21 使用内存指导 13-22 动态性能统计信息 13-23 故障诊断和优化视图 13-25 无效和不可用对象 13-26 小结 13-28 练习概览:监视和改进性能 13-29

14 备份和恢复的概念 课程目标 14-2 部分工作内容 14-3 故障类别 14-4 语句故障 14-5 用户进程故障 14-6 网络故障 14-7 用户错误 14-8 实例故障 14-10 后台进程和恢复:检查点 (CKPT) 14-11 后台进程和恢复:重做日志文件和日志写进程 14-12 后台进程和恢复:归档程序 (ARCn) 14-13 实例恢复 14-14 实例恢复的阶段 14-15 优化实例恢复 14-16 使用 MTTR 指导 14-17 介质故障 14-18 进行配置以提高可恢复性 14-19 控制文件 14-20 重做日志文件 14-21 多路复用重做日志 14-22 归档日志文件 14-23 归档日志文件:命名与目的地 14-24 ARCHIVELOG 模式 14-26 小结 14-27 练习概览:进行配置以提高可恢复性 14-28

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 13: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

xiii

15 执行数据库备份 课程目标 15-2 备份解决方案:概览 15-3 Oracle Secure Backup 15-4 用户管理的备份 15-5 术语 15-6 Recovery Manager (RMAN) 15-8 配置备份设置 15-9 计划备份:策略 15-11 计划备份:选项 15-12 计划备份:设置 15-13 计划备份:计划 15-14 计划备份:复查 15-15 将控制文件备份到跟踪文件 15-16 管理备份 15-18 快速恢复区 15-19 小结 15-20 练习概览:创建数据库备份 15-21

16 执行数据库恢复 课程目标 16-2 打开数据库 16-3 更改实例状态 16-5 使数据库保持在打开状态 16-6 丢失了控制文件 16-7 丢失了重做日志文件 16-8 在 NOARCHIVELOG 模式下丢失了数据文件 16-10 在 ARCHIVELOG 模式下丢失了非关键数据文件 16-11 在 ARCHIVELOG 模式下丢失了系统关键数据文件 16-12 小结 16-13 练习概览:执行数据库恢复 16-14

17 执行闪回

课程目标 17-2 闪回技术:优点 17-3 何时使用闪回技术 17-4 闪回任何错误 17-5

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 14: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

xiv

闪回数据库:概览 17-6 闪回数据库:缩短还原时间 17-7 闪回数据库:注意事项 17-8 闪回数据库:限制 17-9 启用闪回数据库 17-10 闪回表:概览 17-11 闪回表 17-12 对表启用行移动 17-13 执行闪回表 17-14 闪回表:注意事项 17-16 闪回删除:概览 17-17 通过 Enterprise Manager 闪回已删除的表 17-18 闪回删除:注意事项 17-20 闪回时间浏览 17-21 闪回查询:概览 17-22 闪回查询:示例 17-23 闪回版本查询:概览 17-24 通过 Enterprise Manager 执行闪回版本查询 17-25 闪回版本查询:注意事项 17-26 闪回事务处理查询:概览 17-27 通过 Enterprise Manager 执行闪回事务处理查询 17-28 闪回事务处理查询:注意事项 17-29 小结 17-30 练习概览:使用闪回 17-31

18 移动数据 课程目标 18-2 移动数据:一般体系结构 18-3 目录对象:概览 18-4 创建目录对象 18-5 SQL*Loader:概览 18-6 使用 SQL*Loader 加载数据 18-8 SQL*Loader 控制文件 18-9 加载方法 18-11 数据泵:概览 18-13 数据泵:优点 18-14 数据泵导出和导入实用程序:概览 18-15

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 15: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

xv

数据泵实用程序:接口与模式 18-16 细粒度级对象的选择 18-17 高级功能:取样率 18-18 导出选项:文件 18-19 数据泵文件位置 18-20 调度和运行作业 18-22 数据泵文件的命名和大小 18-23 数据泵导入实用程序 18-24 数据泵导入实用程序:转换 18-25 数据泵:性能注意事项 18-27 性能初始化参数 18-28 数据泵访问路径:注意事项 18-29 使用 Oracle Enterprise Manager 监视数据泵作业 18-30 外部表填充 18-31 使用外部表 18-32 使用 ORACLE_DATAPUMP 填充外部表 18-33 使用 ORACLE_LOADER 填充外部表 18-34 数据字典 18-35 小结 18-36 练习概览:移动数据 18-37

附录 A:练习 附录 B:解答 附录 C:基本 Linux 和 vi 命令 附录 D:SQL 语句语法 附录 E:缩写和术语 附录 F:接下来的继续学习步骤

索引

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 16: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 17: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 18: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 19: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言-3

配置文件

学习本课程的条件

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

• 具备使用 SQL 的实践经验

本课程是如何编排的

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

建议的后续课程

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

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 20: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言-4

相关出版物

Oracle 出版物

标题 部件号

Oracle Database 2 Day DBA 10g Release 2 (10.2) B14196-01Oracle Database Administrator's Guide 10g Release 2 (10.2) B14231-01 Oracle Database Backup and Recovery Basics 10g Release 2 (10.2) B14192-01 Oracle Database Concepts 10g Release 2 (10.2) B14220-01 Oracle Database Licensing Information 10g Release 2 (10.2) B14199-01 Oracle Database Net Services Administrator's Guide 10g Release 2 (10.2) B14212-01 Oracle Database Net Services Reference 10g Release 2 (10.2) B14213-01 Oracle Database New Features Guide 10g Release 2 (10.2) B14214-01 Oracle Database Performance Tuning Guide 10g Release 2 (10.2) B14211-01 Oracle Database PL/SQL Packages and Types Reference 10g Release 2 (10.2) B14258-01 Oracle Database PL/SQL User's Guide and Reference 10g Release 2 (10.2) B14261-01 Oracle Database Recovery Manager Quick Start Guide 10g Release 2 (10.2) B14193-01 Oracle Database Recovery Manager Reference 10g Release 2 (10.2) B14194-01 Oracle Database Security Guide 10g Release 2 (10.2) B14266-01 Oracle Database SQL Quick Reference 10g Release 2 (10.2) B14195-01 Oracle Database SQL Reference 10g Release 2 (10.2) B14200-01

其它出版物

• 系统版本说明

• 安装和用户指南

• 自述文件

• International Oracle Users Group (IOUG) 文章

• Oracle 杂志

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 21: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言-5

印刷约定

文本印刷约定

约定 要素 示例

粗体 仅限于 Web 内容中 强调的词和短语

要在该应用产品中进行浏览,请不要单击

“前进”或“后退”按钮。

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

此算法将插入新的键值。

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

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

单击“Executable”按钮。 选中“Can't Delete Card”复选框。 为 ORD 模块指定“When-Validate-Item” 触发器。 打开“Master Schedule”窗口。

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

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

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

值为小写)

代码输出、 目录名、 文件名、 口令、 路径名、 用户输入、 用户名

代码输出:debug.set ('I', 300); 目录:bin (DOS), $FMHOME (UNIX) 文件名:找到 init.ora 文件。 口令:使用 tiger 作为口令。 路径名:打开 c:\my_docs\projects。 用户输入:输入 300。 用户名:以 HR 用户身份登录。

首字母大写 图形标签(除非术语是

专有名词)

客户地址(Oracle Payables 除外)

斜体 强调的词和短语、 书名和课程名、 变量

请不要将更改保存到数据库。 更多信息,请参见《Oracle Database SQL Reference 10g Release 1(10.1)》 输入 [email protected],其中 user_id 为用户名称。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 22: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言-6

印刷约定(续)

文本印刷约定(续)

代码印刷约定

约定 要素 示例

引号 具有长名称且只有

首字母大写的界面

元素;交叉引用的

课程标题和章节 标题

请选择“Include a reusable module component”, 然后单击“完成”。 该主题将在“使用对象”一课中进行介绍。

大写 SQL 列名、 命令、函数、 方案、表名称、 数据库触发器名称

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

约定 要素 示例

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

SELECT last_name FROM employees; CREATE OR REPLACE TRIGGER secure_employees

口令 CREATE USER scott IDENTIFIED BY tiger;

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

小写斜体 语法变量 CREATE ROLE role

大写 SQL 命令和函数 SELECT first_name FROM employees;

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 23: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

前言-7

印刷约定(续)

定位路径印刷约定

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

示例:

发票批汇总

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

该简化路径的含义如下:

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

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

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

符号:

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

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

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

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 24: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 25: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

简介

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 26: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 安装、创建和管理 Oracle Database 10g• 为应用程序配置数据库

• 使用基本监视过程

• 实施备份和恢复策略

• 在数据库和文件之间移动数据

课程目标

在本课程中,您会安装 Oracle Database 10g 企业版软件、创建新数据库并学习如何管理

数据库。

您还会配置数据库以支持应用程序,并执行创建用户、定义存储结构和设置安全性等任务。

本课程使用一个虚构应用程序。但是,执行的全部核心任务都是实际应用程序所需要执行

的任务。

配置数据库之后数据库管理工作并没有结束。您还要学习如何设计备份和恢复策略以保护

数据库,以及如何监视数据库以确保数据库顺利运行。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 27: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

建议日程表

1. 简介

2. 安装

3. 创建数据库

4. 实例

5. 存储

6. 用户

7. 方案

8. 数据与并发

9. 还原

10. 安全性

11. 网络

12. 主动维护

13. 性能

14. 备份和恢复的概念

15. 备份

16. 恢复

17. 闪回

18. 移动数据

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 28: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 描述课程目标

• 说明 Oracle Database 10g 体系结构

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 29: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle 产品和服务

• Oracle 数据库

• Oracle Application Server • Oracle 应用产品

• Oracle Collaboration Suite • Oracle Developer Suite • Oracle 服务

Oracle 产品

• Oracle 数据库:Oracle 数据库是第一种设计用于进行企业网格计算的数据库(是最

灵活、成本效益最高的管理信息和应用程序的方式)。

• Oracle Application Server:是 Oracle 获得 Java 2 平台企业版 (J2EE) 认证的服务器,

这种服务器中集成了开发和部署基于 Web 的应用程序所需的全部组件。它可用于部

署电子商务门户、Web 服务和事务处理应用程序,其中包括 PL/SQL、Oracle Forms 和基于 J2EE 的应用程序。

• Oracle 应用产品:Oracle E-Business Suite 是一套完整的商务应用程序,可用于管理

和自动处理整个组织中的流程。

• Oracle Collaboration Suite:Oracle Collaboration Suite 是一个集成的系统,可用于

处理组织中的所有通信数据:语音、电子邮件、传真、无线数据、日历信息和文件。

• Oracle Developer Suite:Oracle Developer Suite 是一个完整的集成环境,它将应用

程序开发工具与业务智能工具组合在一起。

• Oracle 服务:指 Oracle Consulting 和 Oracle University 等 Oracle 服务,可以提供关于

Oracle 项目的必要专业知识。有关各种资源的有用链接,请参阅附录“下一步:继

续学习”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 30: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Database 10g:“g”代表网格

• 全球网格论坛 (GGF) • Oracle 网格基础结构:

– 低成本

– 高服务质量

– 易于管理

RealApplication

Clusters

OracleStreams

EnterpriseManager

Grid Control

AutomaticStorage

Management

存储网格 数据库网格 应用程序网格 网格控制

Oracle Database 10g:“g”代表网格

全球网格论坛 (GGF) 是一个负责制定网格计算标准的标准团体。这个团体由一些委员会

和工作小组构成,致力于制定网格计算各方面的标准。这些委员会和工作小组由来自学

术界、研究团体和(日益增加的)商业公司的参与者所组成。请访问 GGF 网站

http://www.gridforum.org。

Oracle 创建的网格计算基础结构软件可在多个服务器中平衡各种类型的工作量,并将所有

这些服务器作为一个完整的系统来管理。因为所有组件都通过集群方式集中在一起,所以

网格计算与大型机计算一样,同样可以实现很高水平的可靠性。但是,与大型机和大型

UNIX 对称多处理 (SMP) 服务器不同,网格的构建使用开放系统技术,如 Intel 处理器和

Linux 操作系统,因此成本很低。

Oracle 的网格计算技术包括:

• Automatic Storage Management (ASM) • Real Application Clusters (RAC) • Oracle Streams • Enterprise Manager Grid Control

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 31: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

Oracle Database 10g:“g”代表网格(续)

使用 Automatic Storage Management 技术可以在所有磁盘中分布数据库数据,创建存储

网格并进行维护。以最低的管理成本提供最高的输入/输出 (I/O) 吞吐量。添加或删除磁盘

时,ASM 会自动重新分发数据。(不需要使用逻辑卷管理器来管理文件系统。)由于可

以选择使用镜像,数据可用性有所提高,因而可联机添加或删除磁盘。有关详细信息,

请参阅“管理数据库存储结构”一课。

Oracle 的 Real Application Clusters 在运行后可调整服务器集群上的所有应用程序工作量,

同时还可提供以下功能:

• 集成式集群件:包括集群连接、消息传送和锁定、集群控制与恢复等功能。在

Oracle Database 10g 支持的所有平台上均可实现这些功能。

• 自动工作量管理:可以定义一些规则,以便在正常操作和响应故障期间内自动将

处理资源分配给每个服务。为了满足不断变化的业务需求,可以动态修改这些规则。

这种在数据库网格中动态分配资源的功能是 Oracle RAC 特有的功能。

• 对中间层自动发送事件通知:集群配置发生更改后,中间层可以立即适应于实例

故障转移或可用新实例。这样,最终用户在发生实例故障转移时可继续工作,不存

在通常由网络超时引起的延迟。当新实例可用时,中间层可以立即开始与该实例建

立负载平衡连接。Oracle Database 10g 中的 Java 数据库连接 (JDBC) 驱动程序拥有

“快速连接故障转移”功能,可以自动启用这个功能来处理以上事件。

Oracle Streams 为信息共享、组合消息队列、数据复制、发出事件通知、执行数据仓库

加载,以及通过一种技术实现发布和预订两种功能提供了一个统一的框架。如果在任一个

站点应用更新,Oracle Streams 可以使两个或更多个数据源副本保持同步。它可以自动捕

获数据库更改、将更改传播到预订节点、应用更改,还可以在检测到数据更新冲突后解决

问题。应用程序可以直接将 Oracle Streams 作为消息队列或工作流功能使用,从而可在网

格中的应用程序之间进行通信。

Enterprise Manager Grid Control 用于管理网格级操作,包括管理整个软件堆栈、预配

用户、克隆数据库和管理补丁程序。它可从最终用户的角度监视所有应用程序的性能。

Grid Control 将网格基础结构的性能和可用性视为一个统一的整体,而不是独立的存储单

元、数据库和应用程序服务器。可以将硬件节点、数据库和应用程序服务器组合成一个

逻辑实体,因而可作为一个单元来管理一组目标。

注:在本课程中,可使用 Enterprise Manager Database Consol 一次管理一个数据库。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 32: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle 数据库体系结构

Oracle 服务器:

• 是一个数据库管理系统,它提供了一种开放、全面、

集成的方法来管理信息

• 由 Oracle 实例和 Oracle 数据库组成

Oracle 数据库体系结构

Oracle 服务器是管理信息的关键所在。通常,Oracle 服务器必须可靠地管理多用户环境中

的大量数据,大多数用户才能并发访问相同的数据。这一点必须实现,同时还需要具有很

高的性能。另外,Oracle 服务器必须阻止未授权的访问,并且在进行故障恢复时提供有效

的解决方案。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 33: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库结构 数据库结构

- 内存

- 进程

- 存储

存储结构

内存结构

进程结构

实例

系统全局区 (SGA)

后台进程

数据库文件

数据库结构

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

Oracle 软件会分配一个称为系统全局区 (SGA) 的共享内存区,还会启动若干个 Oracle 后台进程。这种 SGA 和 Oracle 进程的组合就称为一个 Oracle 实例。

启动实例后,Oracle 软件会将实例与特定的数据库关联。这个过程称为装载数据库。接下

来可以打开数据库,以便授权用户访问数据库。在同一台计算机上可以并发执行多个实例,

每一个实例只访问自己的物理数据库。

可以将 Oracle 数据库体系结构看作多种不同的、相互关联的结构化组件。

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

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

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

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 34: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle 内存结构 数据库结构

> 内存

进程

存储

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

重做日志缓冲区

共享池 大型池

SGA

Streams 池

服务器进程 1 PGA 服务器

进程 2 PGA 后台进程 PGA

Oracle 内存结构

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

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

• 程序全局区 (PGA):专用于每一个服务器进程或后台进程。每一个进程使用一个 PGA

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

SGA 包含以下数据结构:

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

• 重做日志缓冲区:高速缓存重做信息(用于实例恢复),直到可以将其写入磁盘中存储的物理重做日志文件

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

• 大型池:是一个可选区域,可为某些大型进程(如 Oracle 备份和恢复操作、

I/O 服务器进程)提供大量内存分配

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

• Streams 池:由 Oracle Streams 使用

通过使用 Enterprise Manager 或 SQL*Plus 启动实例,可以显示为 SGA 分配的内存量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 35: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

Oracle 内存结构(续)

程序全局区 (PGA) 是包含各个服务器进程的数据及控制信息的内存区。Oracle 服务器进程

为客户机的请求提供服务。每个服务器进程都有自己专用的 PGA,这个 PGA 是在服务器

进程启动时创建的。由该服务器进程对 PGA 进行独占访问,只能通过对 PGA 执行操作的

Oracle 代码对 PGA 进行读写访问。

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

共享池、大型池和 Java 池以及 Streams 池的大小。

Oracle 数据库使用初始化参数创建并配置内存结构。例如,SGA_TARGET 参数可指定

SGA 的总大小。如果 SGA_TARGET 设置为 0,则会禁用“自动共享内存管理”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 36: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

进程结构

• 用户进程:在数据库用户请求连接到 Oracle 服务器时

启动

• 服务器进程:可以连接到 Oracle 实例,它在用户建立

会话时启动

• 后台进程:在启动 Oracle 实例时启动

数据库结构

内存

> 进程

存储

实例

SGA

后台进程

服务器进程

PGA

用户进程

进程结构

调用应用程序或 Oracle 工具时,如调用 Enterprise Manager 时,Oracle 服务器会通过创建

服务器进程来执行应用程序发出的命令。Oracle 服务器还会针对一个实例创建一组后台

进程。这些进程不仅彼此进行交互操作,还与操作系统进行交互操作,以便管理内存结构,

通过异步执行 I/O 操作将数据写入磁盘,并执行其它所需的任务。有些后台进程取决于数

据库中当前所使用的功能。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 37: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle 实例管理

系统监视器

(SMON)

数据库写进程

(DBWn)

日志写进程(LGWR)

进程监视器

(PMON)

归档进程(ARCn)

SGA

Java 池

共享池 大型池Streams 池

数据库缓冲区高速缓存

重做日志缓冲区

检查点(CKPT)

控制文件

数据文件 重做日志文件

归档日志文件

Oracle 实例管理

Oracle 数据库服务器由 Oracle 数据库和 Oracle 实例组成。Oracle 实例由称为系统全局区

(SGA) 的内存结构和后台进程构成,这些后台进程可以处理运行实例时所涉及的大量后台

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

• 系统监视器 (SMON):出现故障后,在启动实例时执行崩溃恢复任务

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

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

文件

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

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

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

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 38: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

服务器进程和数据库缓冲区高速缓存

缓冲区:

• 已连接

• 干净

• 空闲或未使用

• 脏

DBWn

服务进程SGA

数据库缓冲区高速缓存

数据文件

服务器进程和数据库缓冲区高速缓存

处理某个查询时,Oracle 服务器进程会在数据库缓冲区高速缓存中查找它所需要的所有数

据块。如果未在数据库缓冲区高速缓存中找到数据块,服务器进程会从数据文件读取数据

块,并在数据库缓冲区高速缓存中添加一个副本。因为对同一数据块的后续请求可能会在

内存中找到该数据块,因此,这些请求可能不需要执行物理读操作。Oracle 服务器使用最

近最少使用算法腾出最近未访问的缓冲区,以便在数据库缓冲区高速缓存中为新数据块提

供空间。

缓冲区高速缓存中的缓冲区可能处于以下四种状态之一:

• 已连接:可防止多个会话同时对同一数据块执行写操作。此时,其它会话正等待

访问该块。

• 干净:缓冲区现已解除连接,如果没有再次引用当前内容(数据块),则可以考虑

立即腾出该缓冲区。此时,不是缓冲区的内容已与磁盘中存储的数据块内容同步,

就是缓冲区中包含块的一致读取 (CR) 快照。

• 空闲或未使用:实例刚刚启动,缓冲区为空。此状态与“干净”状态非常相似,

不同之处在于缓冲区尚未使用。

• 脏:缓冲区不再处于已连接状态,但是内容(数据块)已更改,DBWn 必须先将内

容刷新到磁盘,才能腾出缓冲区。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 39: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

物理数据库结构

参数文件

联机重做日志文件

归档日志文件

口令文件

控制文件 数据文件

预警和跟踪日志文件

备份文件

数据库结构内存进程

> 存储

物理数据库结构

构成 Oracle 数据库的文件可分为以下几类:

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

数据库而言至关重要。没有这些文件,就无法打开用于访问数据库数据的数据文件。

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

• 联机重做日志文件:可用来实现数据库实例恢复。如果数据库已崩溃但未丢失任何

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

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

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

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

• 备份文件:用于恢复数据库。当因介质故障或用户错误而损坏或删除了原始文件时,

通常需要还原备份文件。

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

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

数据文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 40: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

物理数据库结构(续)

• 跟踪文件:每个服务器和后台进程都可以对关联的跟踪文件执行写操作。如果在进

程中检测到内部错误,进程就会将关于错误的信息转储到进程的跟踪文件中。写入

到跟踪文件中的某些信息专门供数据库管理员使用,另一些信息则供 Oracle 支持服

务部门使用。

• 预警日志文件:是特殊的跟踪文件,又称为预警日志。数据库预警日志是按时间顺

序列出的消息日志和错误日志。Oracle 建议您查看这些文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 41: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

表空间和数据文件

• 一个表空间中包括一个或多个数据文件。

• 一个数据文件仅属于一个表空间。

USERS表空间

数据文件 1 数据文件 2

表空间和数据文件

一个数据库可划分为多个逻辑存储单元,这些单元称为表空间,表空间可用于对相关逻辑

结构进行分组。每个数据库按逻辑都分为一个或多个表空间。可以为每个表空间显式创建

一个或多个数据文件,这样可在表空间中按物理方式存储所有逻辑结构的数据。

注:还可以创建大文件表空间,这种表空间只有一个数据文件,但这个数据文件非常大

(最多包含 40 亿个数据块)。传统的小文件表空间(默认值)可以包含多个数据文件,

但这些文件不可能这么大。有关大文件表空间的详细信息,请参阅《数据库管理员指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 42: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SYSTEM和 SYSAUX表空间

• SYSTEM 和 SYSAUX 表空间是必需存在的表空间。

• 这些表空间是在创建数据库时创建的。

• 这些表空间必须是联机的。

• SYSTEM 表空间用于核心功能(例如,数据字典表)。

• 辅助的 SYSAUX 表空间用于附加的数据库组件

(如 Enterprise Manager Repository)。

SYSTEM 和 SYSAUX 表空间

每个 Oracle 数据库都包含 SYSTEM 表空间和 SYSAUX 表空间。这两个表空间是在创建数

据库时创建的。系统默认设置是创建小文件表空间。也可以创建大文件表空间,这样可通

过 Oracle 数据库管理超大文件(数据库最大为 8 EB)。

表空间的状态可以是联机的(可访问)也可以是脱机的(不可访问)。打开数据库时

SYSTEM 表空间始终处于联机状态。这个表空间可存储支持数据库核心功能的表,如数据

字典表。

SYSAUX 表空间是 SYSTEM 表空间的辅助表空间。SYSAUX 表空间可存储许多数据库组件,

要使所有数据库组件正常运行,该表空间必须处于联机状态。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 43: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

段、区和块

• 段存在于表空间中。

• 段由区的集合构成。

• 区是数据块的集合。

• 数据块将映射到磁盘块中。

段 区 数据块 磁盘块

段、区和块

数据库对象(如表和索引)以段形式存储在表空间中。每个段都包含一个或多个区。区由

相邻的数据块组成,这意味着每个区只能存在于一个数据文件中。数据块是数据库中最小

的 I/O 单元。

数据库从操作系统 (OS) 请求数据块集时,OS 会将数据块集映射到存储设备上的实际文件

系统或磁盘块中。因此,您不必了解数据库中任何数据的物理地址。这还意味着一个数据

文件可以在多个磁盘上进行条带化或创建镜像。

可以在创建数据库时设置数据块的大小。对大多数数据库而言,默认的 8 KB 块大小是足

够使用的。如果您的数据库支持拥有大型表和索引的数据仓库应用程序,则最好设置更大

的块大小。

如果您的数据库支持执行随机读写操作的事务处理应用程序,则最好指定更小的块大小。

块大小的最大值取决于 OS。最小的 Oracle 块大小为 2 KB,这个值很少使用(在任何

时候)。

表空间可以有不同的块大小。但是,这只适用于可移动表空间。有关详细信息,请参阅

《数据库管理员指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 44: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

逻辑和物理数据库结构

数据库

逻辑 物理

表空间 数据文件

OS 块

Oracle 数据块

方案

逻辑和物理数据库结构

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

具有逻辑结构和物理结构。

表空间

数据库分为多个逻辑存储单元,这些单元称为表空间,表空间可以将相关的逻辑结构分组

在一起。例如,为了简化某些管理操作,表空间通常会对应用程序的所有对象进行分组。

此时,可以对应用程序数据使用一个表空间,对应用程序索引使用另一个表空间。

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

幻灯片中演示了数据库、表空间和数据文件之间的关系。每个数据库按逻辑都分为一个或

多个表空间。可以为每个表空间显式创建一个或多个数据文件,这样可在表空间中按物理

方式存储所有逻辑结构的数据。如果它是 TEMPORARY 表空间而不是数据文件,则这个表

空间拥有一个临时文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 45: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

方案

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

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

一般而言,方案对象包括应用程序在数据库中创建的任何内容。

数据块

Oracle 数据库的数据以最细的粒度级存储在数据块中。一个数据块对应于磁盘上特定字节

数的物理数据库空间。每个表空间的数据块大小是在创建表空间时指定的。数据库可以使

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

块的上一级逻辑数据库空间称为区。区是特定数目的相邻数据块(在一次分配中获取的),

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

区之上的逻辑数据库存储级别称为段。段是为特定逻辑结构分配的区集。例如,各种类型

的段包括:

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

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

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

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

每个分区都有一个索引段。

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

中的信息用于生成一致读取信息,在数据库恢复过程中,还可用于回退用户的未提

交事务。

• 临时段:当 SQL 语句需要一个临时工作区来完成执行时,Oracle 数据库会创建临时

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

一个默认临时表空间,或指定一个在数据库级别使用的默认临时表空间。

Oracle 数据库可动态分配空间。如果段的现有区已满,则会添加更多的区。由于区是按需

分配的,因此,段的区在磁盘上不一定是相邻的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 46: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程示例:HR方案

REGIONSREGION_ID (PK)REGION_NAME

COUNTRIESCOUNTRY_ID (PK)COUNTRY_NAMEREGION_ID (FK)

LOCATIONSLOCATION_ID (PK)STREET_ADDRESSPOSTAL_CODECITYSTATE_PROVINCECOUNTRY_ID (FK)

DEPARTMENTSDEPARTMENT_ID (PK)DEPARTMENT_NAMEMANAGER_IDLOCATION_ID (FK)

JOBSJOB_ID (PK)JOB_TITLEMIN_SALARYMAX_SALARY

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

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

REGIONS

COUNTRIES

LOCATIONS

DEPARTMENTS

JOBS

EMPLOYEES

JOB_HISTORY

课程示例:HR 示例方案

本课程中使用的示例来自一个人力资源 (HR) 应用程序,可以将此应用程序创建为启动数

据库的一部分。

下面是该 HR 应用程序的一些主要业务规则:

• 每个部门可以雇佣一个或多个雇员。每个雇员被分配到一个(且仅一个)部门。

• 每个职务必须是一个或多个雇员的职务。当前必须已为每个雇员分配了一个(且仅

一个)职务。

• 当一个雇员更改了其部门或职务时,JOB_HISTORY 表中的某一条记录会记录下以

前分配的开始日期和结束日期。

• JOB_HISTORY 记录由组合主键 (PK),即 EMPLOYEE_ID 和 START_DATE 列标识。

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

实线表示必需使用的外键 (FK) 约束条件,虚线表示可选的 FK 约束条件。

EMPLOYEES 表自身也有一个 FK 约束条件。下面是一个实施业务规则:每个雇员可以直

接向一个(且仅一个)经理报告工作。FK 是可选项,原因是最高职位的雇员不用向其他

雇员报告工作。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 47: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库体系结构:结构化组件概要

• 内存结构:

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

区和各种池

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

– 用户进程和服务器进程

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

ARCn 等等

• 存储结构:

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

数据库体系结构:结构化组件概要

在本课中,您已大致了解了 Oracle 数据库的以下结构化组件:内存、进程和存储结构。

后面的几节课将介绍更详细的信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 48: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 描述课程目标

• 说明 Oracle Database 10g 体系结构

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 49: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

安装 Oracle 数据库软件

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 50: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 描述数据库管理员 (DBA) 的角色,说明典型的任务和

工具

• 为 Oracle 数据库安装制定计划

• 使用灵活体系结构 (OFA) • 使用 Oracle Universal Installer (OUI)

安装 Oracle 软件

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 51: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle 数据库管理员的任务

设计、实施和维护 Oracle 数据库时,按优先次序排列的

任务包括:

1. 确定数据库服务器硬件

2. 安装 Oracle 软件

3. 为数据库和安全策略制定计划

4. 创建、移植和打开数据库

5. 备份数据库

6. 登记系统用户和制定用户访问 Oracle Network 的计划

7. 实施数据库设计

8. 从数据库故障进行恢复

9. 监视数据库性能

Oracle 数据库管理员的任务

DBA 一般负责安装 Oracle 软件和创建数据库。作为 DBA,您可能负责创建数据库存储

结构,如表空间。此外,还可能负责创建方案或对象集,以保存应用程序数据。

您必须确保用户均能使用数据库。可以通过启动数据库、定期备份数据库和监视数据库

性能达到此目的。这些任务应该在安全策略框架内执行。

在本课程每一课的学习过程中,您将分别学习如何执行以上每项任务。有关本幻灯片中

列出的每一任务的其它信息,请参阅《Oracle 数据库管理员指南》。

本课将重点介绍如何进行安装。为了完成这个核心任务,请先考虑完成以下子任务:

• 了解安装以何种方式来适应组织的整个技术体系结构。

• 复查(并更新)能力计划。

• 选择数据库软件(需要的版本和选件)。

• 确保所有选定组件都符合系统要求。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 52: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

用于管理 Oracle 数据库的工具

• Oracle Universal Installer • Database Configuration Assistant • Database Upgrade Assistant • Oracle Net Manager • Oracle Enterprise Manager • SQL*Plus 和 iSQL*Plus • Recovery Manager • Oracle Secure Backup • 数据泵

• SQL*Loader • 命令行工具

用于管理 Oracle 数据库的工具

可以使用以下工具进行安装和升级:

• Oracle Universal Installer (OUI):Oracle Universal Installer 用于安装 Oracle 软件和

选件。它可以自动启动 Database Configuration Assistant (DBCA) 来创建数据库。

• Database Configuration Assistant (DBCA):DBCA 会根据 Oracle 提供的模板创建

数据库。因此,可以复制预配置的种子数据库,或者,也可以创建自己的数据库和

模板。

• Database Upgrade Assistant (DBUA):该工具可以指导您将现有数据库升级至 Oracle 新版本。

• Oracle Net Manager:该工具用于配置 Oracle 数据库与应用程序的网络连接。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 53: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

用于管理 Oracle 数据库的工具(续)

以下工具用于管理 Oracle 实例和数据库:

• Oracle Enterprise Manager (EM):EM 将图形控制台、代理、公用服务和相关工具

组合在一起,为管理 Oracle 产品提供了一个集成的综合性系统管理平台。在安装

Oracle 软件、创建或升级数据库及配置网络之后,可以将 Oracle Enterprise Manager 作为管理数据库的单一接口。它除了提供基于 Web 的用户界面来执行 SQL 命令外,

还提供与管理数据库的其它 Oracle 组件(例如,Recovery Manager 和 Scheduler)的

无缝接口。

用于管理 Oracle 数据库的三个主要 Oracle Enterprise Manager 工具包括:

- Enterprise Manager 数据库控制台:用于管理一个数据库

- Enterprise Manager 网格控制:用于同时管理多个数据库

- Enterprise Manager Java 控制台:用于访问不支持 Web 的工具

• SQL*Plus:SQL*Plus 是管理数据库的标准命令行接口。

• iSQL*Plus:iSQL*Plus 是一个基于浏览器的接口,它可连到 Oracle 数据库。

• Recovery Manager (RMAN):RMAN 是一款可以提供完整解决方案的 Oracle 工具,

可用来备份、还原和恢复整个数据库或特定的数据库文件。

• Oracle Secure Backup 为 Oracle Ecosystem 提供了磁带备份管理,其中包括:

- 通过与 Recovery Manager 集成,保护磁带上的 Oracle 数据库

- 无缝支持 Oracle Real Application Clusters (RAC) - 对分布式客户机和介质服务器(包括 Oracle Application Server、Oracle

Collaboration Suite、Oracle 主目录和二进制文件)进行集中式管理。

• 数据泵:使用数据泵可以在数据库之间高速传输数据。例如,可能需要导出某个表,

然后再将其导入另一数据库。

• SQL*Loader:使用 SQL*Loader 实用程序可以将来自外部文件的数据加载到 Oracle 数据库。有几个 Oracle 实用程序可以将数据加载到数据库表中,SQL*Loader 是其中

的一个。

• 命令行工具:

- 要管理 Oracle Enterprise Manager,请使用:emctl start | status | set | stop

- 要停止和启动 iSQL*Plus,请使用:isqlplusctl start | stop

- 要管理监听程序,请使用:lsnrctl help | start | status | stop

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 54: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

安装:系统要求

• 内存要求:

– Database Control 实例需要 1 GB • 磁盘空间要求:

– 交换空间为 1.5 GB – /tmp目录中的磁盘空间为 400 MB – Oracle 软件需要 1.5 GB 至 3.5 GB – 预配置的数据库需要 1.2 GB(可选)

– 快速恢复区需要 2.4 GB(可选)

• 操作系统:请参阅文档

安装:系统要求

• 在具有 1 GB RAM 和 1.5 GB 交换空间或更高配置的计算机上可以实现标准安装。

• 根据安装 Oracle 数据库软件的计算机的活动级别,标准安装可以在 20 分钟或更短的

时间内完成。

• 安装的详细要求包括:

- Oracle Database 10g 只附带一个种子数据库模板。

- 已删除重复文件。

- 可以从其它 CD 安装很多其它产品和演示。

本幻灯片中列出的硬件要求是 Linux 平台的最低要求。Windows 的最低要求是 256 MB,建议使用 512 MB。在安装中可能还有其它要求(尤其是对磁盘空间的要求)。

注:包括一个标准种子数据库的企业版安装类型被称为“标准安装”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 55: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

检查系统要求

• 足够的临时空间

• 64 位与 32 位问题

• 检查操作系统 (OS) 是否正确

• OS 补丁程序级别

• 系统程序包

• 系统和内核参数

• X Server 权限

• 足够的交换空间

• ORACLE_HOME 非空

检查系统要求

在 Oracle Database 10g 安装过程中系统会自动检查大多数先决条件:

• 检查是否有足够的临时空间。关于安装和配置的最低临时空间要求是已确定的要求,

在安装过程中会验证这些要求。

• 禁止在安装了 32 位软件的 Oracle 主目录中安装 64 位软件(反之亦然)。

• RedHat-3.0、RedHat-4.0、Asianux 1.0、Asianux 2.0 和 SUSE Linux E.S. 9.0 是否在

Linux 平台上得到了认证。

• 安装过程会检查是否安装了所有必需的 OS 补丁程序。

• 安装过程会检查是否正确地设置了所有必需的系统参数和内核参数。

• 安装过程会验证是否设置了 DISPLAY环境变量,用户是否有足够的权限按指定的

DISPLAY进行显示。

• 安装过程会验证系统中是否设置了足够的交换空间。

• 安装过程会验证执行新安装的 Oracle 主目录是为空,还是少数几个可以安装 Oracle Database 10g 且已在 Oracle 产品清单中注册的受支持版本中的一个。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 56: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

灵活体系结构 (OFA)

OFA 设计用于:

• 组织大量软件

• 简化常规管理任务

• 在多个 Oracle 数据库之间实现轻松切换

• 相应地管理数据库扩展

• 帮助消除空闲空间碎片

灵活体系结构 (OFA) OFA 是一种用于配置 Oracle 数据库和其它数据库的方法。OFA 利用 OS 和磁盘子系统的

功能创建易于管理的配置,这样在数据库得到扩展且性能要求更高时,可以提供最大程度

的灵活性。此处所述的方法是 OFA 的基础。

OFA 设计用于:

• 对磁盘上的大量复杂软件和数据进行组织,以避免出现设备瓶颈和性能较差的情况

• 简化常规管理任务,诸如易出现数据损坏的软件备份和数据备份任务

• 在多个 Oracle 数据库之间实现轻松切换

• 相应地管数据库扩展

• 帮助消除数据字典中的空闲空间碎片,隔离其它碎片及最大程度地减少资源争用

有关 OFA 的目标和实施的详细信息,请参阅《Oracle Installation Guide for UNIX Systems》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 57: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用灵活体系结构

• 命名装载点:

– /u01

– /disk01

• 命名目录:

– /u01/app/oracle

– /u01/app/applmgr

• 命名文件:

– 控制文件:controln.ctl – 重做日志文件:redon.log – 数据文件:tn.dbf

使用灵活体系结构

OFA 的核心位置有一个命名方案,它提供的标准可应用于装载点(通常为物理磁盘)、

这些装载点上的目录和子目录,最后可应用到文件本身。

装载点语法:使用 /pm语法可以命名所有装载点,其中 p是字符串常量,m是用于判别

每个装载点的唯一固定长度密钥(通常为两位数)。例如,装载点可以是 /u01和 /u02。

主目录语法:使用 /pm/h/u语法可以命名所有主目录,其中 pm是装载点名称,h是标

准目录名,u是目录所有者的名称。OFA 兼容主目录示例包括:/u01/app/oracle /u01/home/oracle

软件目录语法:将每一个版本的 Oracle 软件存储在与模式 /pm/h/u/product/v匹配的

目录中,其中 product是文字,v是代表版本号的变量。借助于这条语法可以启用 OFA 功能,同时执行多个版本的应用程序软件。Oracle Database 10g 10.2.0 版的 OFA 兼容安装

类似于:/u01/app/oracle/product/10.2.0

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 58: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

使用灵活体系结构(续)

命名子目录语法:为了方便组织管理数据,可以将特定数据库的管理文件存储在与模式/h/admin/d/a/匹配的子目录中。其中 h是 Oracle 软件所有者的主目录,admin是

文字,d是数据库名称,a是每个数据库管理文件的子目录。下面列出了这些管理文件

子目录:

• adhoc:特定数据库的专用 SQL 脚本

• arch:归档的重做日志文件

• adump:审计文件(将 AUDIT_FILE_DEST初始化参数设置为 adump目录。请定

期清理此子目录。)

• Bdump:后台进程跟踪文件

• Cdump:核心转储文件

• Create:用于创建数据库的程序

• Exp:数据库导出文件

• Logbook:记录数据库状态和历史记录的文件

• Pfile:实例参数文件

• udump:用户 SQL 跟踪文件

文件命名语法:使用以下数据库文件命名惯例可以很方便地标识数据库文件:

• 控制文件:/pm/q/d/controln.ctl

• 重做日志文件:/pm/q/d/redon.log

• 数据文件:/pm/q/d/tn.dbf

这些文件名中使用的变量包括:

• pm:前面所述的装载点名称

• q:一个字符串,用于区分 Oracle 数据与其它所有文件(通常称为 ORACLE或

oradata)

• d:初始化参数 DB_NAME(数据库名称)的值

• t:Oracle 表空间名

• n:一个两位数的字符串

注:不要在 /pm/q/d/路径中存储与 d数据库关联的控制文件、重做日志文件或数据

文件以外的其它文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 59: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

设置环境变量

• ORACLE_BASE:OFA 的 Oracle 目录结构基础

• ORACLE_HOME:包含 Oracle 软件的目录

• ORACLE_SID:初始实例名称(默认值为 ORCL)

• NLS_LANG:语言、地区和客户机字符集设置

设置环境变量

Oracle 环境变量有很多,此处提到的环境变量是成功安装、使用 Oracle 数据库的关键变

量。虽然这些环境变量不需要进行设置,但是如果能在安装之前对其进行设置,则可避免

将来发生的很多问题。

• ORACLE_BASE:指定 OFA 的 Oracle 目录结构基础。该变量为可选项,如果选择

使用它,则可简化日后的安装和升级操作。它是一个目录路径,如下例所示:/u01/app/oracle

• ORACLE_HOME:指定包含 Oracle 软件的目录。它是一个目录路径,如下例所示:$ORACLE_BASE/product/10.2.0/db_1

• ORACLE_SID:初始实例名称(默认值为 ORCL)。它是一个由数字和字母组成的

字符串,必须以字母开头。Oracle 公司建议系统标识符最多使用八个字符。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 60: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

设置环境变量(续)

• NLS_LANG:按 language_territory.character set格式指定会话的初始

国家语言支持 (NLS) 设置。例如,设置为:AMERICAN_DENMARK.WE8MSWIN1252

通过这个设置可以将会话中的 Oracle 消息、字母排列顺序、日期名称和月份名称设

置为使用 AMERICAN语言。地区为 DENMARK,这可以设置时间格式、日期格式,以

及数字和货币惯例。字符集为 WE8MSWIN1252,指示 Oracle Net 将字符信息转换为

该字符集。这个值在 UNIX 中是一个环境变量,在 Windows 中是一个注册表设置。

使用以下语句可以查询当前会话的实际 NLS 设置:select * from nls_session_parameters;

有关有效的语言、地区、字符集和语言支持的详细信息,请参阅《Globalization Support Guide》。

注:Windows 安装默认使用注册表中的 NLS_LANG值,其中 language部分来自键

盘语言。这样做的结果是,如果使用非美国键盘在 Windows 上进行默认安装,则在

NLS_LANG设置中使用非美国值。这又会将 NLS_SORT会话变量的默认值设置为不

同于“二进制”的值,使优化程序难以在从这个节点开始的会话中使用基于字符的

索引。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 61: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Universal Installer (OUI)

Oracle Universal Installer (OUI) Oracle Universal Installer (OUI) 是一个 Java 应用程序,它可以执行基于组件的安装,并且

支持不同级别的集成绑定、套件和基于 Web 的安装,以及单个软件包中的复杂逻辑安装。

安装引擎可以方便地在所有支持 Java 的平台上进行移植,可以封装整个安装过程中的特定

平台的问题。对于软件管理和分配,OUI 提供了以下功能:

• 自动解析相关性和执行复杂的逻辑处理

• 从 Web 安装

• 组件和套件安装

• 隐式卸载

• 支持多个 Oracle 主目录

• NLS 或全球化支持

• 支持分布式安装

• 使用响应文件的无人值守“无提示”安装

在 Windows 中:插入 Oracle 数据库安装介质,浏览到 client目录,然后双击 setup.exe启动 OUI。出现“Welcome(欢迎使用)”页后,选择安装类型:“Instant Client(即时客户

机)”、“Administrator(管理员)”、“Runtime(运行时)”或“Custom(定制)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 62: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

安装 Oracle 软件

安装 Oracle 软件

可以按如下方式使用 OUI 安装 Oracle 软件:

1. 以管理组成员的身份登录计算机,管理组成员已获得了安装 Oracle 软件和创建、

管理数据库的授权。

2. 将数据库的分发 CD 插入到 CD 驱动器,或者浏览到 Oracle 数据库存放位置。

3. 启动 OUI。在 Linux 上的“XTerm”窗口中,输入 ./runInstaller。此时会出现

“Oracle Universal Installer”页。

4. 浏览 OUI 页,根据安装计划指定预安装设置。

5. OUI 会依据初始信息执行先决条件检查。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 63: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库配置选项

数据库配置选项

继续执行安装过程:

6. 浏览 OUI 页,指定数据库配置选项。OUI 会显示安装选项的概要信息。

7. 单击“Install(安装)”开始安装 Oracle 软件。

如果在安装过程中选择创建启动数据库,那么 OUI 会调用以下所有配置辅助程序:

• Oracle Net Configuration Assistant:用于在安装期间配置基本网络组件,包括:

- 监听程序名和协议地址

- 客户机将连接标识符解析为连接描述符时使用的命名方法

- tnsnames.ora文件中的网络服务名

- 目录服务器使用情况

• Oracle Database Configuration Assistant (DBCA):用于创建选定的启动数据库。

这个配置辅助程序完成后,可以取消帐户锁定并更改口令。

• iSQL*Plus Configuration Assistant:用于配置 iSQLPlus 使用的 Oracle Application Server Containers for J2EE (OC4J) 实例,以及用于连接 Oracle 数据库的其它工具。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 64: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

执行配置脚本

执行配置脚本

继续执行安装过程:

8. 在 Linux 或 UNIX 安装期间出现提示时,请以 root用户身份执行附加的配置脚本。

在“Xterm”窗口中,输入:$ su # password: oracle <root 口令,在窗口中不显示># cd /u01/app/oracle/oraInventory # ./orainstRoot.sh # cd /u01/app/oracle/product/10.2.0/db_1 # ./root.sh

9. 在 Linux 或 UNIX 安装期间,接受默认的本地 bin目录。完成脚本后,退出所有

相关的帐户和窗口以完成安装。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 65: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

完成安装

完成安装

10. 安装过程要结束时,请记下 URL 以备将来使用。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 66: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

高级安装选项

• 数据库存储选项:

– 文件系统

– Automatic Storage Management – 裸设备

• 数据库管理选项:

– Enterprise Manager Grid Control – Enterprise Manager Database Control

• 数据库备份和恢复选项

• 电子邮件通知选项

• 集群就绪服务

• 克隆

高级安装选项

• 使用 OUI 可以创建使用 Automatic Storage Management 的配置。

• 可以安装并配置 Enterprise Manager (EM) 框架。Oracle Enterprise Manager Database Control 与数据库安装在同一个 Oracle 主目录中,且配置为在独立的 OC4J 实例上

运行。必须执行独立安装才能实现 EM 集中管理功能。

• 如果选择使用 Oracle Enterprise Manager Database Control,则可根据需要将数据库

配置为使用 Oracle 建议的默认备份策略。

• 如果在安装期间选择使用 Oracle Enterprise Manager Database Control,则可将 Oracle Enterprise Manager 配置为向指定的电子邮件地址发送电子邮件预警。这些预警中可

以包含诸如磁盘空间达到临界限制或数据库意外关闭等问题。

• Oracle Database 10g 安装支持 RAC 功能,尤其是集群就绪服务 (CRS) 安装。

• Oracle 主目录可以通过使用 Oracle Enterprise Configuration Management 工具进行复

制。用户使用这个工具可以创建复制请求,然后计划和处理这些请求。可通过 EM Grid Control 使用此工具。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 67: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

安装选项:无提示模式

要在无提示模式下使用 OUI 安装并配置 Oracle 产品,

请执行以下步骤:

1. 创建 oraInst.loc 文件(如果该文件尚不存在)。

2. 根据 Oracle 软件提供的文件模板准备响应文件。

3. 记录响应文件:.runInstaller –record -destinationFile<filename>

4. 在无提示模式或隐藏模式下运行 OUI。5. 如果需要,在无提示模式下运行 NetCA 和 DBCA。

安装选项:无提示模式

要在无提示或隐藏模式下使用 OUI 安装并配置 Oracle 产品,请执行以下步骤:

1. 创建 oraInst.loc文件(如果该文件尚不存在)。如果此前安装过 Oracle 软件,

该文件很可能已存在于 /etc中。

2. 准备响应文件。每一产品和安装类型都有文件模板,如 enterprise.rsp、standard.rsp和 netca.rsp。

3. 在交互模式下可以使用 OUI 记录响应文件,可以对该文件进行编辑,然后使用该文

件完成无提示模式或隐藏模式安装。请使用以下命令在 Linux 和 UNIX 环境中创建

响应文件:.runInstaller –record -destinationFile <filename>其中,destinationFile是文件位置。

4. 在无提示模式或隐藏模式下运行 OUI。5. 如果完成了仅软件安装,则可根据需要在无提示模式或非交互模式下运行 Oracle Net

Configuration Assistant (NetCA) 和 Database Configuration Assistant (DBCA)。

有关详细信息,请参阅特定 OS 的《Oracle 数据库安装指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 68: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 描述 DBA 角色,说明任务和工具

• 从相应的文档开始,为安装制定计划

• 执行安装前任务,如检查系统要求

• 使用 OUI 安装软件

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 69: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:安装 Oracle 软件

在本练习中需要使用 Oracle Universal Installer 安装

Oracle 软件。

注:完成本练习对于学习后面的所有练习课来说至关重要。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 70: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 71: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

创建 Oracle 数据库

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 72: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 使用 Database Configuration Assistant (DBCA) 创建数据库

• 使用 DBCA 创建数据库设计模板

• 使用 DBCA 生成数据库创建脚本

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 73: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

为数据库制定计划

作为 DBA,您必须为以下事项制定计划:

• 数据库的逻辑存储结构及其物理实施:

– 为此准备了多少磁盘驱动器?

– 需要多少个数据文件?(为扩展制定计划。)

– 要使用多少表空间?

– 要存储哪种类型的信息?

– 是否因类型或大小而存在任何特殊存储要求?

• 整体数据库设计

• 数据库备份策略

为数据库制定计划

计划数据库逻辑存储结构以什么方式影响系统性能和各种数据库管理操作是一项非常重要

的工作。例如,在创建数据库的任何表空间之前,应该知道表空间是由多少个数据文件构

成的,在每一个表空间中存储何种类型的信息,以及数据文件实际存储在哪些磁盘驱动器

上。计划数据库的整个逻辑存储结构时,应考虑此结构在实际创建和运行数据库时产生的

影响。某些数据库对象可能会因类型或大小而有特殊的存储要求。

在分布式数据库环境中,这个计划阶段是一个极其重要的阶段。经常受到访问的数据所在

的物理位置对应用程序性能有很大的影响。

在计划阶段,可为数据库制定备份策略。通过变更数据库的逻辑存储结构或设计可以提高

备份效率。备份策略将在后面的课中进行介绍。

这些是 DBA 将遇到的问题类型和注意事项,本课程的主要内容就是帮助解决这些问题。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 74: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库:示例

• 数据仓库:

– 研究数据和市场营销数据

– 省/州税或联邦税付款

– 特许专业人员(医生、护士等)

• 事务处理数据库:

– 商店结帐收款机系统

– 自动提款机 (ATM) 事务

• 通用数据库:

– 零售记帐系统,例如,软件公司或托儿所

数据库:示例

不同类型的数据库具有自己的实例和存储要求。Oracle 数据库软件包含一些模板,可使用

这些模板来创建不同类型的数据库。典型示例包括:

• 数据仓库:用于存储长期存放的数据,可以通过读操作检索这些数据。

• 事务处理数据库:用于处理数量很多但规模通常较小的事务。

• 通用数据库:用于处理和存放存储时间适中的事务。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 75: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Database Configuration Assistant (DBCA)

Database Configuration Assistant (DBCA) 可以使用 Database Configuration Assistant (DBCA) 创建或删除数据库,或者更改数据库的

配置。还可以根据预定义的模板列表创建数据库,或者通过使用现有数据库作为样本来

创建新数据库或模板。这有时被称为“克隆数据库”。

可通过执行以下步骤调用 DBCA:

1. 以已获得安装 Oracle 软件权限的管理组成员身份登录计算机。

2. 根据需要设置环境变量。

3. 输入 dbca调用 DBCA。

4. 单击“Next(下一步)”继续操作。

DBCA 通过提供选项来帮助完成某些操作,例如,创建数据库。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 76: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

使用 DBCA 创建数据库

可以按以下方式使用 DBCA 创建数据库:

1. 在“DBCA Operations(DBCA 操作)”页中,通过选择“Create a database(创建数

据库)”来调用向导,以便配置和创建数据库。

该向导会提示您输入后面步骤中提及的配置信息。在大多数页中,向导都提供可接

受的默认设置。

2. 选择创建数据库时使用的数据库模板类型。数据库模板有三种类型:数据仓库、通

用数据库和事务处理数据库。这些模板可以复制预配置的数据库,包括数据文件。

数据文件包括控制文件、重做日志文件以及所包括的各种表空间的数据文件。单击

“Show Details(显示详细资料)”可查看每类数据库的配置。

对于更复杂的环境,可能需要选择“Custom Database(定制数据库)”选项。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 77: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

3

4

使用 DBCA 创建数据库(续)

3. Database Identification(数据库标识):以 database_name.domain_name 格式

输入全局数据库名,然后输入系统标识符 (SID)。SID 的默认值是数据库名称,用于

唯一标识与数据库关联的实例。

4. Management Options(管理选项):使用此页设置数据库,以便通过 Oracle Enterprise Manager 对数据库进行管理。选择默认值:“Configure the Database with Enterprise Manager(使用 Oracle Enterprise Manager 配置数据库)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 78: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

5

6

7

使用 DBCA 创建数据库(续)

5. Database Credentials(数据库身份证明):使用此页指定管理帐户(如 SYS和

SYSTEM)的口令。在本课中,使用 oracle作为所有管理帐户的口令。

6. Storage Options(存储选项):指定希望数据库使用的存储机制类型(如文件系统)。

7. Database File Locations(数据库文件位置):根据需要进行选择。如果使用 Oracle Managed File (OMF),则不需要直接管理构成 Oracle 数据库的操作系统文件。可以

按照数据库对象而不是文件名指定操作。有关详细信息,请参阅“管理数据库存储

结构”一课。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 79: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

8

9

使用 DBCA 创建数据库(续)

8. Recovery Configuration(恢复配置):如果需要,请指定快速恢复区并启用归档。

9. Database Content(数据库内容):这些页提供的选项可用来选择组件,如“Sample Schemas(示例方案)”,使用定制脚本时也会用到这些选项。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 80: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

A

B

10

使用 DBCA 创建数据库(续)

10. Initialization Parameters(初始化参数):使用此页中的标签可以访问用来更改默认

初始化参数设置的页:

- Memory(内存):使用此页可设置控制内存使用量的初始化参数。请使用

“(A) Typical(典型)”或“(B) Custom(定制)”内存分配。

- Sizing(大小):要指定块大小,请输入字节大小或接受默认值。

- Character Sets(字符集):使用此页可指定数据库的字符集。

最佳方案提示:Oracle 建议尽可能使用 Unicode 作为数据库字符集,因为这种

字符集可灵活地支持 Web 技术及多数口头语言。

- Connection Mode(连接模式):选择“Dedicated(专用)”或“Shared Server Mode(共享服务器模式)”。有关详细信息,请参阅“配置 Oracle 网络环境”

一课。

注:有几个初始化参数是在数据库生存期设置的,如 DB_BLOCK_SIZE和

CHARACTER_SET参数。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 81: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 创建数据库

11

12

使用 DBCA 创建数据库(续)

11. Database Storage(数据库存储):如果为数据库选择了一个预配置模板,则不能添

加或删除控制文件或数据文件。

注:为便于参考,可能需要将数据库定义保存为 HTML 文件。

12. Creation Options(创建选项):提供创建数据库、将数据库定义保存为模板和生成

脚本的选项。如果选择所有选项,那么 DBCA 首先会保存数据库模板,然后在目标

目录中生成脚本,最后创建数据库。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 82: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

口令管理

A

B

C

口令管理

DBCA 完成后,请记录以下信息以备将来参考:

• 安装日志文件的位置(见 A)

• 全局数据库名(见 B)• 系统标识符 (SID)(见 B)• 服务器参数文件名和位置(见 B)• Enterprise Manager URL(见 C)

单击“Password Management(口令管理)”取消锁定计划使用的数据库帐户。取消锁定

帐户时,请提供口令。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 83: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建数据库设计模板

创建数据库设计模板

模板是预定义的数据库定义,可将其用作创建新数据库的起点。如果在数据库创建过程中

未创建模板,则可以随时通过调用 DBCA 来创建模板。可通过三种方法创建模板:

• 根据现有模板

• 根据现有数据库(仅结构)

• 根据现有数据库(结构与数据)

DBCA 会指导您完成创建数据库设计模板的各个步骤。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 84: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 DBCA 删除数据库

3

1

2

使用 DBCA 删除数据库

要在 UNIX 或 Linux 中删除(或配置)数据库,必须在启动 DBCA 的 shell 中设置

ORACLE_SID。在终端窗口中输入 dbca,然后单击“Welcome(欢迎使用)”页上的

“Next(下一步)”,即可启动 DBCA。要删除数据库,请执行以下步骤:

1. 在“Operations(操作)”页上,选择“Delete a Database(删除数据库)”,然后

单击“Next(下一步)”。

2. 选择要删除的数据库(本课中为 hist),然后单击“Finish(完成)”。

3. 单击“Yes(是)”确认删除。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 85: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

使用 DBCA 删除数据库(续)

删除数据库时会删除数据库的数据文件、重做日志文件、控制文件和初始化参数文件。

使用 DROP DATABASE语句可删除所有控制文件及控制文件中列出的其它所有数据库

文件。要成功使用 DROP DATABASE语句,必须符合以下所有条件:

• 数据库必须已装载且已关闭。

• 必须以独占方式而不是共享模式装载数据库。

• 数据库必须装载为 RESTRICTED。

此语句的一个示例是:DROP DATABASE;

DROP DATABASE语句对归档日志文件不起作用,对数据库的副本或备份也不起作用。

最好使用 Recovery Manager (RMAN) 来删除这种文件。如果数据库保存在裸磁盘中,

则不会删除实际裸磁盘专用文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 86: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

在本课中,应该已学会如何使用 DBCA 来执行以下操作:

• 创建数据库

• 创建数据库设计模板

• 生成数据库创建脚本

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 87: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:使用 DBCA

本练习包含以下主题:

• 使用 DBCA 创建 ORCL 数据库

• 取消锁定 HR 方案

注:完成创建数据库和取消锁定 HR 方案对后面的所有练习

课来说至关重要。

可以选择:

• 使用 DBCA 创建 ORCL 数据库设计模板

• 使用 DBCA 创建数据库创建脚本

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 88: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 89: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理 Oracle 实例

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 90: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 启动和停止 Oracle 数据库和组件

• 使用 Enterprise Manager (EM) • 使用 SQL*Plus 和 iSQL*Plus 访问数据库

• 修改数据库初始化参数

• 描述数据库启动阶段

• 描述数据库关闭选项

• 查看预警日志

• 访问动态性能视图

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 91: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理框架

Oracle Database 10g 管理框架包括以下

三个组件:

• 数据库实例

• 监听程序

• 管理界面

– Database Control – 管理代理(使用 Grid Control 时)

监听程序DatabaseControl

管理代理

管理界面

-或-

> 组件

SQL*Plus初始化参数

数据库启动

数据库关闭

预警日志

性能视图

管理框架

Oracle 数据库管理框架包括以下三个主要组件:

• 受管理的数据库实例

• 用于连接到数据库的监听程序

• 管理界面。这可能是数据库服务器上运行的管理代理(管理代理通过数据库服务器

连接到 Oracle Enterprise Manager Grid Control),也可能是独立的 Oracle Enterprise Manager Database Control。这个界面又称为“数据库控制台”。

必须显式启动每个组件后才能使用相应组件提供的服务,另外在关闭托管 Oracle 数据库

的服务器时必须彻底关闭组件。

要启动的第一个组件就是管理界面。激活管理界面后,可用它启动其它组件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 92: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启动和停止 Database Control

$ emctl start dbconsoleTZ set to US/PacificOracle Enterprise Manager 10g Database Control Release 10.2.0.1.0Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.http://edrsr9p1.us.oracle.com:1158/em/console/aboutApplicationStarting Oracle Enterprise Manager 10g Database Control ............. started.------------------------------------------------------------------Logs are generated in directory /u01/app/oracle/product/10.2.0/db_1/edrsr9p1.us.oracle.com_orcl/sysman/log

$ emctl stop dbconsoleTZ set to US/PacificOracle Enterprise Manager 10g Database Control Release 10.2.0.1.0Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.http://edrsr9p1.us.oracle.com:1158/em/console/aboutApplicationStopping Oracle Enterprise Manager 10g Database Control ...... Stopped.

启动和停止 Database Control Oracle 为没有连接到 Grid Control 框架的数据库提供一种称为 Database Control 的独立管

理控制台。使用 Database Control 管理的每个数据库都单独安装了一个 Database Control,使用一个 Database Control 只能管理一个数据库。使用 Database Control 之前,请确保

dbconsole 进程已启动。

要启动 dbconsole进程,请使用以下命令:emctl start dbconsole

要停止 dbconsole进程,请使用以下命令:emctl stop dbconsole

要查看 dbconsole进程的状态,请使用以下命令:emctl status dbconsole

注:如果 $ORACLE_HOME/bin目录不在操作系统 (OS) 路径中,则可能需要导航到此

目录。

Database Control 会使用一个服务器端代理进程。在启动或停止 dbconsole进程后也会

自动启动和停止这个代理进程。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 93: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Enterprise Manager

Oracle Enterprise Manager 安装 Oracle 数据库时,Oracle Universal Installer 还会安装 Oracle Enterprise Manager (Enterprise Manager)。Enterprise Manager 中基于 Web 的 Database Control 可充当管理

Oracle 数据库的主要工具。可从任何页访问联机以帮助完成手头的任务。多数情况下,

如果需要获取有关页内容的更具体信息,可以选择相应的链接。虽然有时可能需要自己

编写命令并执行这些命令,但 Enterprise Manager 会提供一个图形界面,使用它可完成

数据库管理员 (DBA) 必须完成的所有任务。使用 Enterprise Manager 可完成以下任务:

查看预警概要与性能图、创建和修改对象,以及执行备份与恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 94: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

访问 Oracle Enterprise Manager

访问 Oracle Enterprise Manager 打开 Web 浏览器,输入以下 URL:

http://host name:port number/em

如果数据库的状态为:

• 已启动:Enterprise Manager 会显示 Database Control 的“Login(登录)”页。请使

用已获得访问 Database Control 权限的用户名登录数据库。最初,用户名为 SYS、SYSMAN或 SYSTEM。请使用在数据库安装期间为帐户指定的口令。在“Connect As(连接身份)”选项中,选择具有特定数据库管理权限的 SYSDBA或 SYSOPER登

录到数据库。

• 已关闭:Enterprise Manager 会显示“Startup/Shutdown and Perform Recovery(启动/关闭和执行恢复)”页。这种情况下,请单击“Startup/Shutdown(启动/关闭)”

按钮。然后,系统会提示您输入主机和目标数据库的登录用户名和口令,这些是必

须输入的内容。

注:如果启动 Enterprise Manager 时出现了问题,请确保启动监听程序。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 95: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库主页

属性页

数据库主页

数据库主页通过显示一组描述数据库总体运行状况的度量数据来显示数据库的当前状态。

通过属性页(又称“标签”),可访问用于管理数据库的“Performance(性能)”、

“Administration(管理)”和“Maintenance(维护)”页。

在数据库主页上,可查看数据库实例的以下性能和状态信息:

• 实例名称、数据库版本、Oracle 主目录位置、介质恢复选项和其它相关的实例数据

• 当前实例可用性

• 未处理预警

• 与会话相关的以及与 SQL 相关的性能信息

• 主要空间使用情况度量指标

• 提供更具体详细信息的可选链接(例如,LISTENER_<host_name>)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 96: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL*Plus 和 iSQL*Plus 访问数据库

SQL*Plus 和 iSQL*Plus 提供了到数据库的其它

接口,这样可:

• 执行数据库管理操作

• 通过执行 SQL 命令在数据库中查询、插入、更新或

删除数据

组件

> SQL*Plus 初始化参数

数据库启动

数据库关闭

预警日志

性能视图

使用 SQL*Plus 和 iSQL*Plus 访问数据库

除了 Oracle Enterprise Manager 外,还可以使用其它 Oracle 工具(如 SQL*Plus 和iSQL*Plus)发出 SQL 语句。使用这些工具可执行很多数据库管理操作,还可在数据库中

选择、插入、更新或删除数据。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 97: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 iSQL*Plus

1

2

3

使用 iSQL*Plus iSQL*Plus 是一个基于浏览器的接口,它可连到 Oracle 数据库。它是 SQL*Plus 产品中的

一个组件。必须先启动 iSQL*Plus 的服务器端监听程序进程才能与浏览器连接。要启动

此服务器进程,请使用:

isqlplusctl start

启动服务器进程后,通过在浏览器中输入以下 URL 连接到浏览器:

http://host name:port/isqlplus

iSQL*Plus 通常会使用端口号 5560,除非 Oracle Universal Installer (OUI) 检测到某个程序

正使用该端口。通过检查 $ORACLE_HOME/install/portlist.ini可找到 iSQL*Plus 使用的端口。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 98: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

为了以 SYSDBA 和 SYSOPER身份进行访问而设置 iSQL*Plus

为了使某个用户以 SYSDBA 或 SYSOPER 身份登录

iSQL*Plus,必须通过执行以下步骤在 OC4J 用户管理器中

设置该用户:

1. 创建一个用户

2. 给该用户授予 webDba 角色

$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/\> application-deployments/isqlplus $JAVA_HOME/bin/java \> -Djava.security.properties=\> $ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \> -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \> -user "iSQL*Plus DBA/admin" -password welcome -shell JAZN> adduser "iSQL*Plus DBA" username password JAZN> grantrole webDba "iSQL*Plus DBA" username

为了以 SYSDBA 和 SYSOPER 身份进行访问而设置 iSQL*Plus 出现“iSQL*Plus Connection Role(iSQL*Plus 连接角色)”页时,请注意,出于安全方面

的原因,需要对 SYSOPER和 SYSDBA角色进行特殊的设置和验证。为此,必须在 Oracle Application Server Containers for J2EE (OC4J) 用户管理器中设置一个用户,然后给该用户

授予 webDba角色访问权限。通过执行以下步骤可达到此目的。注意,JAVA_HOME OS环境变量必须设置为 $ORACLE_HOME/jdk。

1. 更改到正确目录:cd $ORACLE_HOME/oc4j/j2ee/isqlplus/\application-deployments/isqlplus

2. 运行 JAZN shell:$JAVA_HOME/bin/java \-Djava.security.properties=\$ORACLE_HOME\/oc4j/j2ee/home/config/jazn.security.props \-jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \-user "iSQL*Plus DBA/admin" \-password welcome -shell

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 99: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

为了以 SYSDBA 和 SYSOPER 身份进行访问而设置 iSQL*Plus(续)

3. 通过选择用户名和口令创建一个用户:JAZN> adduser "iSQL*Plus DBA" username password

4. 给该用户授予 webDba角色:JAZN> grantrole webDba "iSQL*Plus DBA" username

5. 退出 JAZN shell:JAZN> exit

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 100: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL*Plus

SQL*Plus:• 是一个命令行工具

• 可以按交互方式或在批处理模式下使用该工具

$ sqlplus hr/hr

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 25 12:37:21 2005Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options

SQL> select last_name from employees;

LAST_NAME-------------------------AbelAndeAtkinson

使用 SQL*Plus 可以使用 SQL*Plus 的命令行界面来编写 SQL*Plus、SQL 和 PL/SQL 命令,以便:

• 输入、编辑、运行、存储、检索和保存 SQL 命令和 PL/SQL 块• 格式化、计算、存储和打印查询结果

• 列出任何表的列定义

• 向最终用户发送消息或接受来自最终用户的响应

• 执行数据库管理

要启动 SQL*Plus,请执行以下步骤:

1. 打开终端窗口。

2. 在命令行提示符下,按以下格式输入 SQL*Plus 命令:$ sqlplus /nolog

3. 输入 connect,然后输入要以其身份进行连接的用户名。

4. 出现提示后,输入该用户的口令。

SQL*Plus 启动并连接到默认数据库。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 101: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

从 Shell 脚本调用 SQL*Plus

$ ./batch_sqlplus.sh

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 25 12:47:44 2005Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options

SQL>COUNT(*)

----------107

SQL>107 rows updated.SQL>Commit complete.SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options[oracle@EDRSR9P1 oracle]$

# Name of this file: batch_sqlplus.sh# Count employees and give raise.sqlplus hr/hr <<EOFselect count(*) from employees;update employees set salary = salary*1.10;commit;quitEOFexit

输出

从 Shell 脚本调用 SQL*Plus 通过调用 sqlplus并使用传递参数的操作系统脚本语法,可从 Shell 脚本或 BAT文件

调用 SQL*Plus。

在这个示例中,先执行 SELECT、UPATE和 COMMIT语句,之后 SQL*Plus 将控制权返

回给操作系统。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 102: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

从 SQL*Plus 调用 SQL 脚本

$ sqlplus hr/hr @script.sql

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 25 12:57:02 2005Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID------------- ------------------------------ ---------- -----------

60 IT 103 1400

Disconnected from Oracle Database 10g Enterprise Edition Release10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options$

select * from departments where location_id = 1400;quit

script.sql

输出

从 SQL*Plus 调用 SQL 脚本

可以在 SQL*Plus 中调用现有的 SQL 脚本文件。可在首次调用 SQL*Plus 时在命令行中完

成此操作,如幻灯片所示。只使用“@”运算符也可以在 SQL*Plus 会话中完成此操作。

例如,输入以下内容可在已建立的 SQL*Plus 会话中运行脚本:SQL> @script.sql

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 103: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

初始化参数文件

spfileorcl.ora

组件

SQL*Plus> 初始化参数

数据库启动

数据库关闭

预警日志

性能视图

初始化参数文件

启动实例时系统会读取初始化参数文件。参数文件有两种类型:

• 服务器参数文件:这是首选的初始化参数文件类型。这是一个由数据库服务器写入

或读取的二进制文件,不能手动进行编辑。此文件驻留在执行 Oracle 数据库的服务

器中,而且永远存在,不受数据库关闭或启动的影响。通常将这个文件称为服务器

参数文件 (SPFILE)。此文件的默认名称为 spfile<SID>.ora,启动时会自动搜索

此文件。

• 文本初始化参数文件:这类初始化参数文件可由数据库服务器读取,但不能由其

写入。必须使用文本编辑器手动设置和更改初始化参数设置,这些设置是永久的,

不受数据库关闭或启动的影响。此文件的默认名称为 init<SID>.ora,如果启动

时未找到 SPFILE,则自动搜索此文件。

建议您创建 SPFILE,以动态方式维护初始化参数。使用 SPFILE,可以在服务器端的磁盘

文件中永久存储和管理初始化参数。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 104: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

简化初始化参数

DB_CACHE_SIZEDB_FILE_MULTIBLOCK_READ_COUNTSHARED_POOL_SIZE…

高级

CONTROL_FILESDB_BLOCK_SIZEPROCESSESUNDO_MANAGEMENT…

基本

简化初始化参数

初始化参数被分为两组:基本初始化参数和高级初始化参数。

大多数情况下,只需设置和优化 32 个基本参数便可获得合理的数据库性能。极少数情况

下,才需要修改高级参数来获得最佳性能。

基本参数是指为了让数据库以良好性能运行而设置的参数。其它所有参数都被认为是

高级参数。

基本参数的示例包括适用于特定类型文件的“目标”或目录名:AUDIT_FILE_DEST、BACKGROUND_DUMP_DEST、CORE_DUMP_DEST、DB_CREATE_FILE_DEST、DB_CREATE_ONLINE_LOG_DEST_n、DB_RECOVERY_FILE_DEST和

USER_DUMP_DEST。

初始化参数:示例

CONTROL_FILES参数指定了一个或多个控制文件名。Oracle 强烈建议您多路复用并镜像

控制文件。这个参数值的范围在 1 至 8 个文件名(与路径名)之间。默认范围与 OS 相关。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 105: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

简化的初始化参数(续)

初始化参数:示例(续)

DB_BLOCK_SIZE参数指定了 Oracle 数据库块的大小(以字节为单位)。这个值是在创

建数据库时设置的,此后不可更改。值范围:2048 到 32768(与 OS 相关)。默认值:8K(与 OS 相关)。

DB_CACHE_SIZE参数指定了标准块缓冲区高速缓存的大小。值范围:至少为 16 MB。默认值:48 MB。DB_FILE_MULTIBLOCK_READ_COUNT参数指定了在涉及完整顺序扫描的输入/输出

(I/O) 操作过程中读取的最大块数。值范围:与操作系统相关。默认值:与 OS 相关。

DB_FILES参数指定了可为此数据库打开的数据库文件的最大数目。值范围:

MAXDATAFILES-与 OS 相关的一个值。默认值:与 OS 相关(在 Solaris 上为 200)。

PGA_AGGREGATE_TARGET参数指定了分配到与实例挂接的所有服务器进程的程序全局

区 (PGA) 内存量。需要先将此参数设置为正值,然后才能自动设置工作区。这些内存不

驻留在系统全局区 (SGA) 中。数据库将此参数用作要使用的目标 PGA 内存量。设置此参

数时,请从系统上可供 Oracle 实例使用的总内存中减去 SGA。余下内存可分配给

PGA_AGGREGATE_MEMORY。值范围:整数加上字母 K、M 或 G,以千字节、兆字节或

千兆字节为单位指定此限制。最小值为 10 MB,最大值为 4096 GB。默认值:10 MB 或SGA 的 20%,取两者中的最大值。

PROCESSES参数指定了可同时连接到 Oracle 服务器的最大 OS 用户进程数。应该为所

有后台进程指定此值。值范围:6 到一个与 OS 相关的值。默认值:与 OS 相关。

SHARED_POOL_SIZE参数指定了共享池大小,以字节为单位。共享池包含共享游标、

存储过程、控制结构和并行执行消息缓冲区等对象。较大的值可以提高多用户系统的

性能。值范围:区组的大小-一个与 OS 相关的值。默认值:如果是 64 位系统,则为

64 MB,否则为 16 MB。UNDO_MANAGEMENT参数指定了系统应使用哪种还原空间管理模式。如果设置为 AUTO,则在系统管理还原 (SMU) 模式下启动实例。否则,在回退还原 (RBU) 模式下启动实例。

在 RBU 模式下,还原空间从外部被分配为回退段。在 SMU 模式下,还原空间从外部被

分配为还原表空间。值范围:AUTO或 MANUAL。默认值:如果启动第一个实例时省略了

UNDO_MANAGEMENT参数,则使用默认值 MANUAL,而且在 RBU 模式下启动实例。如果

这不是第一个实例,那么启动该实例采用的还原模式与启动其它所有现有实例的还原模式

相同。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 106: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看和修改初始化参数

查看和修改初始化参数

可以通过单击“Database Administration(数据库管理)”标签页的“Database Configuration(数据库配置)”区域中的“All Initialization Parameters(所有初始化

参数)”,使用 Enterprise Manager 查看并修改初始化参数。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 107: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库启动和关闭

组件

SQL*Plus 初始化参数

> 数据库启动数

据库关闭

预警日志

性能视图

数据库启动和关闭

单击启动或关闭时,系统会提示您输入用于登录主机(驻留数据库的计算机)和用于

登录数据库本身的身份证明。输入身份证明,

然后单击“Advanced Options(高级选项)”,根据需要更改任何启动选项或更改关闭

模式。另外,可以单击“Show SQL(显示 SQL)”来查看用于启动或关闭数据库的 SQL 语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 108: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启动 Oracle 数据库实例

启动 Oracle 数据库实例

如果转到 Enterprise Manager Database Control 页时数据库尚未启动,则可单击“Startup(启动)”来执行启动。输入主机身份证明,同时可以选择启动模式。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 109: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启动 Oracle 数据库实例:NOMOUNT

OPEN

MOUNT

NOMOUNT

SHUTDOWN

实例已启动

STARTUP

启动 Oracle 数据库实例:NOMOUNT

启动数据库实例时,请选择实例启动时所处的状态。以下方案描述了启动实例所涉及的

不同阶段。

在创建数据库期间、重新创建控制文件期间,或执行某些备份和恢复方案期间,通常只在

NOMOUNT模式下启动实例。

启动实例涉及以下任务:

• 按以下顺序搜索 <oracle_home>/dbs中具有特定名称的文件:

- spfile<SID>.ora

- 如果未找到,则搜索 spfile.ora

- 如果未找到,则搜索 init<SID>.ora

这是包含实例初始化参数的文件。使用 STARTUP指定 PFILE参数可覆盖此

默认行为。

• 分配 SGA • 启动后台进程

• 打开 alert<SID>.log文件和跟踪文件

注:SID是用于标识实例的系统 ID(例如 ORCL)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 110: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启动 Oracle 数据库实例:MOUNT

OPEN

MOUNT

NOMOUNT

SHUTDOWN

此实例的控制文件已打开

实例已启动

STARTUP

启动 Oracle 数据库实例:MOUNT

装载数据库涉及以下任务:

• 将数据库与以前启动的实例关联

• 定位并打开参数文件中指定的控制文件

• 通过读取控制文件来获取数据文件和联机重做日志文件的名称和状态。但是,此时

不必执行任何检查便可验证数据文件和联机重做日志文件是否存在

要执行特定的维护操作,请启动实例,然后装载数据库,但不要打开该数据库。

例如,必须在执行以下任务期间装载数据库,但不要打开数据库:

• 重命名数据文件(打开数据库时可重命名脱机表空间的数据文件。)

• 启用和禁用联机重做日志文件归档选项

• 执行完整的数据库恢复

注:即使发出了 OPEN请求,数据库仍可能处于 MOUNT模式。这是因为可能需要以某种

方式恢复数据库。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 111: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启动 Oracle 数据库实例:OPEN

OPEN

MOUNT

NOMOUNT

SHUTDOWN

已按此实例控制文件的描述打开了所有文件

此实例的控制文件已打开

实例已启动

STARTUP

启动 Oracle 数据库实例:OPEN

正常的数据库操作意味着启动了实例、装载且打开了数据库。使用正常的数据库操作,

任何有效用户都可连接到数据库,而且可执行典型的数据访问操作。

打开数据库涉及以下任务:

• 打开联机数据文件

• 打开联机重做日志文件

如果尝试打开数据库时任一数据文件或联机重做日志文件不存在,则 Oracle 服务器会返

回错误。

在最后这个阶段,Oracle 服务器会验证是否可以打开所有数据文件和联机重做日志文件,

还会检查数据库的一致性。如有必要,系统监视器 (SMON) 后台进程将启动实例恢复。

可以在受限模式下启动数据库实例,以便仅具有管理权限的用户可以使用该实例。要在

受限模式下启动实例,请在“Advanced Startup Options(高级启动选项)”页上选择

“Restrict access to database(限制对数据库进行访问)”选项。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 112: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

关闭 Oracle 数据库实例 组件

SQL*Plus 初始化参数

数据库启动

> 数据库关闭

预警日志

性能视图

关闭 Oracle 数据库实例

如果转到 Enterprise Manager Database Control 页时实例已启动,则可以通过单击

“Shutdown(关闭)”按钮来关闭实例。之后,如果单击“Advanced Options(高级

选项)”按钮,则可选择关闭模式:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 113: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

关闭模式

A

T

I

关闭模式

允许新连接

等待当前会话结束

等待当前事务处理结束

强制选择检查点并关闭文件

N

关闭模式:

• A = ABORT

• I = IMMEDIATE

• T = TRANSACTIONAL

• N = NORMAL

关闭模式

关闭模式按以下顺序一个比一个更适用于当前活动:

• ABORT:在关闭之前只需执行最少量的任务。由于这种模式在启动之前需要进行

恢复,所以只在需要时才使用此模式。当启动实例时出现了问题,或者因紧急情况

(如得到通知在数秒内断电)需要立即关闭时,如果其它关闭方式都不起作用,通

常选择使用此模式。

• IMMEDIATE:这是最常用的选项。选择此模式会回退未提交的事务处理。

• TRANSACTIONAL:允许完成事务处理

• NORMAL:等待会话断开

如果考虑执行关闭所花费的时间,则会发现 ABORT的关闭速度最快,而 NORMAL的关闭

速度最慢。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 114: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SHUTDOWN 选项

在以下期间

SHUTDOWNNORMAL

或SHUTDOWN

TRANSACTIONAL或

SHUTDOWNIMMEDIATE

一致的数据库(干净的数据库)

关闭时:

• 执行 IMMEDIATE 时,会回退未

提交的更改

• 数据库缓冲区

高速缓存会写入

到数据文件

• 会释放资源

启动时:

• 不用恢复实例

SHUTDOWN 选项

SHUTDOWN NORMAL

NORMAL 是默认的关闭模式。以正常模式关闭数据库时会发生以下情况:

• 可以建立新连接。

• Oracle 服务器等待所有用户断开连接才完成关闭。

• 数据库和重做缓冲区会写入到磁盘中。

• 后台进程被终止,从内存中删除 SGA。

• Oracle 服务器在关闭实例之前关闭并断开数据库。

• 下一次启动不需要进行实例恢复。

SHUTDOWN TRANSACTIONAL

以事务处理模式关闭数据库可防止客户机丢失数据,包括客户机当前活动的结果。以事务

处理模式关闭数据库时会发生以下情况:

• 任何客户机都不能利用这个特定实例启动新事务处理。

• 客户机在结束正在进行的事务处理后断开连接。

• 完成所有事务处理后立即执行关闭。

• 下一次启动不需要进行实例恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 115: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

SHUTDOWN 选项(续)

SHUTDOWN IMMEDIATE

以立即模式关闭数据库时会发生以下情况:

• Oracle 数据库正在处理的当前 SQL 语句尚未完成。

• Oracle 服务器不等待当前连接到数据库的用户断开连接。

• Oracle 服务器会回退活动的事务处理,而且会断开所有已连接的用户。

• Oracle 服务器在关闭实例之前关闭并断开数据库。

• 下一次启动不需要进行实例恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 116: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SHUTDOWN 选项

在以下期间

SHUTDOWN ABORT或

实例失败

或STARTUP FORCE

不一致的数据库

(脏数据库)

关闭时:

• 修改过的缓冲

区不写入到

数据文件

• 不回退未提交

的更改

启动时:

• 使用联机重做

日志文件重新

应用更改

• 使用还原段

回退未提交的

更改

• 会释放资源

SHUTDOWN 选项(续)

SHUTDOWN ABORT

如果 NORMAL和 IMMEDIATE关闭选项都不起作用,则可以中止当前的数据库实例。

中止实例时会发生以下情况:

• 立即终止 Oracle 数据库正在处理的当前 SQL 语句。

• Oracle 服务器不等待当前连接到数据库的用户断开连接。

• 数据库和重做缓冲区不写入到磁盘。

• 不回退未提交的事务处理。

• 实例已终止,但未关闭文件。

• 数据库未关闭,也未卸载。

• 下一次启动时需要进行实例恢复,实例恢复是自动进行的。

注:不建议对处于不一致状态的数据库进行备份。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 117: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL*Plus 启动和关闭

[oracle@EDRSR9P1 oracle]$ sqlplus dba1/oracle as sysdba

SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.

Total System Global Area 285212672 bytesFixed Size 1218472 bytesVariable Size 250177624 bytesDatabase Buffers 33554432 bytesRedo Buffers 262144 bytesDatabase mounted.Database opened.SQL>

使用 SQL*Plus 启动和关闭

还可以使用 SQL*Plus 执行启动和关闭,或者更改数据库的状态。要使用 SQL*Plus 完成

这些任务,必须以 SYSDBA或 SYSOPER身份登录。然后,使用以前介绍的 Enterprise Manager 功能的等效命令:

SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

STARTUP [FORCE] [RESTRICT] [MOUNT | OPEN | NOMOUNT]

这样,可以将启动和关闭操作作为执行数据库任务的脚本或批处理的一部分。这种情况下,

数据库需要处于特定的状态。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 118: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看预警日志

数据库主页 >“Related Links(相关链接)”

区域 > “Alert Log Content(预警日志内容)”

组件

SQL*Plus 初始化参数

数据库启动

数据库关闭

> 预警日志

性能视图

查看预警日志

每个数据库都有一个 alert_<sid>.log文件。该文件位于数据库所在的服务器上,

存储在 background_dump_dest初始化参数指定的目录中。数据库预警文件按时间

顺序记录消息和错误,包括以下内容:

• 启动时使用的所有非默认初始化参数

• 发生的所有内部错误 (ORA-600)、块损坏错误 (ORA-1578) 和死锁错误 (ORA-60) • 管理操作(如 CREATE、ALTER、DROP DATABASE和 TABLESPACE等 SQL

语句),以及 Enterprise Manager 或 SQL*Plus 语句(STARTUP、SHUTDOWN、ARCHIVE LOG和 RECOVER)

• 与共享服务器和分派程序进程的功能相关的若干消息和错误

• 自动刷新实体化视图过程中发生的错误

Enterprise Manager 会监视预警日志文件,而且在发生严重错误时还会发出通知。另外,

通过浏览日志还可查看非严重的错误和说明性消息。该文件会增长到无法管理的大小。

可以时不时地备份预警文件,然后删除当前的预警文件。当数据库尝试再次写入预警

文件时,它会重新创建一个新预警文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 119: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看预警历史记录

查看预警历史记录

“Alert History(预警历史记录)”页显示了一个图表,该图表根据指定的时间段显示

当前数据库的预警历史记录。预警预示着可能存在问题:不是监视度量指标达到警告

阈值或严重阈值,就是目标不再可检测。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 120: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

动态性能视图

通过动态性能视图可访问有关

在数据库中更改状态和条件的

信息。 会话数据

等待事件

内存分配

运行 SQLUNDO 用法

打开游标

重做日志的用法

等等

Oracle 实例

组件SQL*Plus 初始化参数数据库启动数据库关闭预警日志

> 性能视图

动态性能视图

Oracle 数据库还维护与数据库实例的操作和性能相关的动态数据集。这些动态性能视图

建立在根据数据库服务器内的内存结构构建的虚拟表基础上。也就是说,它们不是驻留

在数据库中的常规表。因此,在装载或打开数据库之前其中的某些视图就能显示数据。

动态性能视图包括关于以下内容的信息:

• 会话

• 文件状态

• 作业和任务的进度

• 锁定

• 备份状态

• 内存使用和分配

• 系统和会话参数

• SQL 执行

• 统计信息和度量

注:DICT和 DICT_COLUMNS视图还包含这些动态性能视图的名称。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 121: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

动态性能视图:用法示例

SQL> SELECT sql_text, executions FROM v$sqlWHERE cpu_time > 200000;

SQL> SELECT * FROM v$session WHERE machine = 'EDRSR9P1' and logon_time > SYSDATE - 1;

SQL> SELECT sid, ctime FROM v$lock WHERE block > 0;

a

b

c

动态性能视图:用法示例

这些视图的常见用户是 Enterprise Manager,但其它用户也可以根据需要查询这些视图。

幻灯片中显示的三个示例解答了以下问题:

a. 如果消耗的 CPU 时间大于 200,000 毫秒,则 SQL 语句及其相关的执行次数是什么?

b. 在最后一天内,哪些会话从 EDRSR9P1计算机登录?

c. 当前保留锁(用于阻塞另一用户)的任何会话的会话 ID 是什么,以及锁的保留时间

有多久?

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 122: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

动态性能视图:注意事项

• 这些视图由 SYS 用户拥有。

• 不同时间可以使用不同视图:

– 实例已启动。

– 数据库已装载。

– 数据库已打开。

• 可查询 V$FIXED_TABLE 来了解所有视图名称。

• 这些视图通常又称为“v$ 视图”。

• 由于数据是动态的,因此这些视图不能保证读取是

一致性的。

动态性能视图:注意事项

某些动态视图包含的数据不一定适用于实例或数据库的所有状态。例如,如果刚刚启动

一个实例,但未装载数据库,则可以通过查询 V$BGPROCESS查看正在运行的后台进程

的列表。但不能通过查询 V$DATAFILE查看数据库数据文件的状态,因为要由装载的数

据库读取控制文件后才能找出与数据库关联的数据文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 123: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 启动和停止 Oracle 数据库和组件

• 使用 Enterprise Manager,描述其高级功能

• 使用 SQL*Plus 和 iSQL*Plus 访问数据库

• 修改数据库初始化参数

• 描述数据库启动阶段

• 描述数据库关闭选项

• 查看预警日志

• 访问动态性能视图

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 124: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理 Oracle 实例

本练习包含以下主题:

• 在 Enterprise Manager 中导航

• 查看和修改初始化参数

• 停止和启动数据库实例

• 查看预警日志

• 通过使用 SQL*Plus 和 iSQL*Plus 连接到数据库

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 125: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理数据库存储结构

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 126: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 描述如何在块中存储表行数据

• 定义表空间和数据文件的用途

• 创建和管理表空间

• 获取表空间信息

• 描述 Automatic Storage Management (ASM) 的主要

概念和功能

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 127: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

存储结构

数据库

表空间

Oracle 数据块

逻辑 物理

OS 块

OS 文件

存储结构

一个数据库可划分为多个称为表空间的逻辑存储单元。每个表空间可以包含很多 Oracle 逻辑数据块。DB_BLOCK_SIZE参数指定了逻辑块的大小。逻辑块的大小介于 2 KB 到32 KB 之间,默认大小为 8 KB。特定数目的相邻逻辑块构成了一个区。为特定逻辑结构

分配的一组区构成了一个段。Oracle 数据块是逻辑 I/O 的最小单位。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 128: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

如何存储表数据

表空间

表 A 表 B

段段

行片段 区

如何存储表数据

创建表时,就会创建段来保存表数据。表空间包含一组段。从逻辑上讲,表包含由列值组

成的行。行最终将以行片段的形式存储在数据库块中。之所以称为行片段,是因为某些情

况下,无法在一个位置存储一整行。当插入行由于太长单个块容纳不下时,或者由于更新

而导致现有行大小超出了行的当前空间时,就会发生这种情况。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 129: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库块的结构

块头

空闲空间

行数据

扩展

数据库块:内容

Oracle 数据块包含:

• 块头:块头包含段类型(如表或索引)、数据块地址、表目录、行目录和事务

处理插槽。每个插槽的大小为 23 字节,修改块中的行时会使用这些插槽。块头

按从上向下的方向扩展。

• 行数据:这是块中行的实际数据。行数据空间按从下向上的方向扩展。

• 空闲空间:空闲空间位于块的中间。这样可以根据需要扩展头和行数据空间。

插入了一些新行之后,或者使用较大值更新了现有行的某些列之后,行数据就会

占用空闲空间。如果行目录需要更多的行条目,或者需要的事务处理插槽数多于

最初配置的数目,就会出现头扩展。最初,块中的空闲空间是相邻的。但是,

删除和更新操作可能会导致在块空闲空间中产生碎片。必要时 Oracle 服务器会

接合块中的空闲空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 130: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

表空间和数据文件

Oracle 数据库在逻辑上将数据存储在表空间中,在物理上

将数据存储在数据文件中。

• 表空间:

– 只能属于一个数据库

– 包括一个或多个数据文件

– 可进一步划分为逻辑存储单元

– 是存储方案对象数据的资料档案库

• 数据文件:

– 只能属于一个表空间和一个

数据库

– 是构成表空间的基础文件

数据库

表空间

数据文件

表空间和数据文件

数据库、表空间和数据文件彼此密切相关,但也存在不可忽视的差异:

• Oracle 数据库包括一个或多个称为表空间的逻辑存储单元,这些表空间可以作为

一个整体存储数据库的所有数据。

• Oracle 数据库中的每个表空间都包括一个或多个称为数据文件的文件,这些数据

文件具有与运行 Oracle 软件的操作系统一致的物理结构。

• 数据库的数据作为一个整体存储在构成数据库各个表空间的数据文件中。例如,

最简单的 Oracle 数据库包括两个表空间(SYSTEM和 SYSAUX表空间,这两个表

空间是必须存在的),每个表空间包含一个数据文件。另一个数据库可能包括三个

表空间,每个表空间包含两个数据文件(共有六个数据文件)。一个数据库最多可

以包含 65,534 个数据文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 131: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Managed Files (OMF)

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

定义 RMAN 备份位置DB_RECOVERY_FILE_DEST

定义重做日志文件和控制文件的创建

位置

DB_CREATE_ONLINE_LOG_DEST_n

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

系统目录的位置

DB_CREATE_FILE_DEST

说明参数

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

Oracle Managed Files (OMF) 如果使用 Oracle Managed Files (OMF),则不需要直接管理构成 Oracle 数据库的操作系统

文件。可以根据数据库对象而不是文件名指定操作。对于以下数据库结构,可以按需要在数据库内部使用标准文件系统接口来创建和删除文件:

• 表空间

• 重做日志文件

• 控制文件

• 归档日志

• 块更改跟踪文件

• 闪回日志

• RMAN 备份

数据库可以混合包含 Oracle Managed Files 和非 Oracle Managed Files。由上面任一参数

指定的文件系统目录必须已经存在:数据库不会创建文件系统目录。该目录还必须拥有允许数据库在其中创建文件的权限。

上面的示例显示了设置 DB_CREATE_FILE_DEST后,可在 CREATE TABLESPACE语句中省略 DATAFILE子句。这样,会在 DB_CREATE_FILE_DEST指定的位置创建

数据文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 132: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

表空间中的空间管理

• 本地管理的表空间:

– 在表空间中管理空闲区。

– 使用位图记录空闲区。

– 每一位对应于一个块或一组块。

– 位值指示空闲区或占用区。

– 建议使用本地管理的表空间。

• 字典管理的表空间:

– 由数据字典管理空闲区。

– 分配或取消分配区后会更新相应的表。

– 支持这些表空间仅仅是为了向后兼容。

表空间中的空间管理

在表空间中以区为单位分配空间。创建表空间后可使用以下方法之一来跟踪空闲空间和

已用空间:

• 本地管理的表空间:在表空间中通过位图管理区。位图中的每一位对应一个块或

一组块。分配区或为重新利用空间而释放区后,Oracle 服务器通过更改位图值来

显示块的新状态。

• 字典管理的表空间:由数据字典管理区。每当分配或取消分配区后,Oracle 服务器

会更新数据字典中的相应表。这是为了实现向后兼容;建议使用本地管理的表空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 133: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

浏览存储结构

单击链接可查看详细信息。

浏览存储结构

逻辑数据结构存储在数据库的物理文件中。通过 Enterprise Manager 可很方便地查看数据

库的逻辑结构。通过单击“Administration(管理)”页的“Storage(存储)”区域中的

链接,可以获得关于每种结构的详细信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 134: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建新表空间

创建新表空间

要创建一个表空间,请执行以下步骤:

1. 单击“Administration(管理)”标签,然后单击“Storage(存储)”标题下的

“Tablespaces(表空间)”。

2. 单击“Create(创建)”。

注:如果要创建与现有表空间类似的表空间,请选择一个现有表空间,然后从

“Actions(操作)”菜单中选择“Create Like(类似创建)”。单击“Go(开始)”。

此时会出现“Create Tablespace(创建表空间)”页。

3. 输入表空间的名称。

4. 在“Extent Management(区管理)”标题下,选择“Locally Managed(本地管理)”。

Oracle 数据库服务器在表空间中可以有效地管理本地管理表空间中的区。若采用字典

管理的表空间,则必须更积极地管理区,而且需要具有对数据字典的访问权限才能跟

踪这些区。字典管理的表空间已被逐渐淘汰。Oracle 不建议使用字典管理的表空间。

5. 在“Type(类型)”标题下,选择“Permanent(永久)”。永久表空间会存储系统

或用户创建的永久数据库对象。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 135: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

创建新表空间(续)

6. 在“Status(状态)”标题下,选择“Read Write(读写)”。选择“读写”状态表

示创建表空间后,用户可以对表空间进行读写操作。这是默认设置。

7. 在该页的“Datafiles(数据文件)”区域,单击“Add(添加)”将数据文件添加到

表空间;每个表空间必须至少有一个文件。大文件表空间与超大型数据库配合使用,

在这些数据库中,Oracle 的 Automatic Storage Management (ASM) 或其它逻辑卷管理

器支持条带化或独立磁盘冗余阵列 (RAID),还支持动态扩展逻辑卷。

8. 在“Add Datafiles(添加数据文件)”页上输入一个文件名。接受默认的“File Directory(文件目录)”,然后输入文件大小。

9. 在“Storage(存储)”区域中,可以选择“Automatically extend datafile when full (AUTOEXTEND)(数据文件已满时自动扩展)”,然后在“Increment(增量)”

字段中指定一个数量。这样,每次数据文件超出空间后都会自动进行扩展。当然,

数据文件受限于其所在的物理介质。将“Maximum File Size(最大文件大小)”

设置为“Unlimited(无限制)”。单击“OK(确定)”。此时会返回“CreateTablespace(创建表空间)”页。

10. 单击“Storage(存储)”标签。此时会出现“Edit Tablespace(编辑表)”页。

11. 接受“Storage(存储)”页上的所有默认值。

注:这些步骤旨在说明如何针对大多数情况快速创建表空间。可能需要更改某些选项,

这取决于具体的需求。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 136: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

本地管理表空间的存储

本地管理表空间的存储

可通过以下两种方式之一分配本地管理表空间中的区:

• Automatic(自动):又称为自动分配,这种方式指定表空间中的区大小由系统管理。

您不能指定区大小。不能为临时表空间指定“Automatic(自动)”。

• Uniform(统一):这种方式指定使用指定的统一区大小管理表空间。默认大小为

1 MB。临时表空间的所有区都是统一的,而且采用默认值。不能为还原表空间指定

“Uniform(统一)”。

可将本地管理表空间中的段空间管理指定为:

• Automatic(自动):Oracle 数据库使用位图管理段中的空闲空间。位图描述了段中

各个数据块的状态,该状态与插入行可使用的块中的空间量有关。随着数据块中可

用空间的增多或减少,位图会反映数据块的新状态。通过使用位图,Oracle 数据库

可以更自动地管理空闲空间,因此,这种空间管理方式被称为“自动段空间管理

(ASSM)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 137: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

本地管理表空间的存储(续)

• Manual(手动):此方式指定使用空闲列表来管理段中的空闲空间。空闲列表是由

一些数据块组成的列表,插入行可使用这些数据块中的空间。由于这种管理段空间

的方式需要为在表空间中创建的方案对象指定并优化 PCTUSED、FREELISTS和

FREELIST GROUPS存储参数,因此这种方式称为“手动段空间管理”。支持此方

式是为了实现向后兼容;建议使用 ASSM。

本地管理表空间的优势

与字典管理表空间相比,本地管理表空间具有以下优势:

• 如果使用本地管理,则不需要执行递归空间管理操作。采用字典管理表空间时,

如果使用或释放区中的空间导致另一个操作使用或释放还原段或数据字典表中的

空间,就会发生这种情况。

• 由于采用本地管理表空间时并不记录数据字典表中的空闲空间,因此可以减少对

这些表的争用。

• 在本地管理区,可自动跟踪相邻的空闲空间而无需合并空闲区。

• 系统会自动确定本地管理区的大小。

• 对区位图进行更改不会生成还原信息,因为这些更改并不更新数据字典中的表

(表空间限额信息等特殊情况除外)。

注:如果所管理的数据库包含字典管理表空间,而且要将这些表空间转换为本地管理表

空间,请使用 DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL过程完成此

操作。有关使用此过程的详细信息,请参阅《PL/SQL 程序包与类型参考》和《数据库管

理员指南》。

事件记录

对表空间对象所做的更改会写入重做日志。如果未启用事件记录,则使用 SQL*Loader 的任何直接加载和直接加载 INSERT 操作都不会写入到重做日志中,因此如果丢失了数据,

对象是不可恢复的。因此,如果在未启用事件记录的情况下创建了对象,就必须备份这些

对象,以便可进行恢复。

有关事件记录子句的详细信息,请参阅《Oracle 数据库参考手册》。

块信息

这个区域显示所创建表空间使用的块大小。此处显示值为只读值。如果设置了任一其它块

大小初始化参数 (DB_nK_CACHE_SIZE),则会在此处列出其它值作为选项。有关定义其

它块大小的详细信息,请参阅《Oracle 数据库管理员指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 138: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

预配置数据库中的表空间

• SYSTEM

• SYSAUX

• TEMP

• UNDOTBS1

• USERS

• EXAMPLE

预配置数据库中的表空间

在本课程中,您将在预配置数据库中创建以下表空间:

• SYSTEM:Oracle 服务器使用 SYSTEM表空间管理数据库。包含在这个表空间中的数

据字典和表包含关于数据库的管理信息。以上信息均包含在 SYS方案中,只有 SYS用户或者拥有所需权限的其它管理用户才能访问这些信息。

• SYSAUX:这是 SYSTEM表空间的辅助表空间。在 Oracle 数据库早期版本中使用

SYSTEM表空间或自己表空间的某些组件和产品,现在改为使用 SYSAUX表空间。

每个 Oracle Database 10g 或更高版本都必须拥有 SYSAUX表空间。

在 Enterprise Manager 中,可以查看此表空间的内容饼图。要查看此饼图,请单击

“Administration(管理)”页上的“Tablespaces(表空间)”。选择“SYSAUX”,

单击“Edit(编辑)”。接下来单击“Occupants(占据实体)”标签。完成创建后,

可以使用 EM 来监视 SYSAUX数据库中每一个占据实体的空间使用量。如果检测

到某个组件在 SYSAUX表空间中占用了过多的空间,或者预计该组件会占用过多的

空间,可以通过选择其中一个占据实体,然后单击“Change Tablespace(更改表空

间)”,将选择的占据实体移到另外的表空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 139: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

预配置数据库中的表空间(续)

• TEMP:如果执行的 SQL 语句需要创建临时段(如大规模排序或创建索引),则可

以使用临时表空间。如同为每个用户分配默认的表空间以存储创建的数据对象一样,

还会向每个用户分配临时表空间。除非另行指定,否则最佳方案是为数据库定义

一个默认临时表空间,会为所有新建用户分配此表空间。在预配置数据库中,TEMP表空间被指定为默认临时表空间。这意味着,如果在创建用户帐户时未指定临时表

空间,Oracle 数据库会将此表空间分配给用户作为临时表空间。

• UNDOTBS1:这是数据库服务器用于存储还原信息的还原表空间。如果数据库使用

“自动还原管理”,那么数据库在任何指定时间必须只具有一个活动的还原表空间。

此表空间是在创建数据库时创建的。

• USERS:此表空间用于存储永久用户对象和数据。在预配置数据库中,USERS表空

间是用于存储非系统用户创建的所有对象的默认表空间。对于 SYS和 SYSTEM用户

(系统用户),默认的永久表空间依然是 SYSTEM。

• EXAMPLE:此表空间包含创建数据库时可以安装的示例方案。这些示例方案为各种

示例提供了一个通用平台。Oracle 文档和课件中包含了建立在这些示例方案基础上

的示例。

注:为简化管理,通常只对索引使用表空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 140: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

变更表空间

变更表空间

创建表空间后,可以根据系统更改的需要,采用若干种方法变更表空间。

重命名:输入表空间的新名称,然后单击“Apply(应用)”。

更改状态:表空间有三种不同的状态,它可以处于其中任一种状态。由于表空间可用性

取决于表空间的类型,所以以下三种状态不一定可用:

• Read Write(读写):表空间已联机,可进行读写。

• Read Only(只读):指定“只读”可使表空间转换到只读模式。此状态下,可以

完成(提交或回退)现有的事务处理,但是,不允许对表空间中的对象进一步执行

数据操纵语言 (DML) 操作。表空间已联机,但处于只读状态。不能使 SYSTEM或

SYSAUX表空间处于只读模式。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 141: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

变更表空间(续)

• Offline(脱机):可以让联机的表空间脱机,使数据库的这部分暂时不可用于一般

用途。数据库的余下部分是开放的,用户可以访问其中的数据。表空间脱机时,可

以使用以下选项:

- Normal(正常):如果表空间中的所有数据文件都不存在错误状态,则通过正

常方式便可使表空间脱机。当 Oracle 数据库使表空间脱机时,通过对表空间中

的所有数据文件设置检查点,可以确保将所有数据写入磁盘。

- Temporary(临时):如果表空间中的一个或多个文件存在错误状态,也可以

使表空间暂时脱机。当 Oracle 数据库使(尚未脱机的)数据文件脱机时,会对

这些数据文件设置检查点。如果没有任何文件脱机,但是您使用了临时子句,

则使表空间重新联机时便不需要执行介质恢复。但是,如果因写错误而导致表

空间的一个或多个文件脱机,而此时您让表空间临时脱机,那么表空间需要执

行恢复后才能重新联机。

- Immediate(立即):表空间可以立即脱机,Oracle 数据库不需要对任何数据

文件设置检查点。如果指定了“Immediate(立即)”,则必须先对表空间执行

介质恢复,才能使表空间联机。如果数据库在 NOARCHIVELOG模式下运行,

则无法立即使表空间脱机。

- For Recover(进行恢复):FOR RECOVER设置已被淘汰。支持此语法的目的

是为了实现向后兼容。

更改大小:通过向表空间添加数据文件,或者更改现有数据文件的大小,可增加现有表空

间的空间。

• 要向表空间添加新数据文件,请单击“Add(添加)”,然后在“Add Datafile(添加数据文件)”页上填写关于数据文件的信息。

• 要更改现有数据文件的大小,请单击该数据文件的名称,在“Edit Tablespace(编辑

表空间)”页的“Datafiles(数据文件)”区域中选择数据文件;或者选择数据文件,

然后单击“Edit(编辑)”。接下来,在“Edit Datafile(编辑数据文件)”页上,

可更改数据文件的大小。可以扩大或缩小表空间。但是,不能使数据文件小于该文

件中使用的空间;如果尝试这样做,则会出现以下错误:ORA-03297: file contains used data beyond requested RESIZE value

存储选项:单击“Storage(存储)”可更改表空间的事件记录行为。

Thresholds(阈值):单击“Thresholds(阈值)”可在表空间中空间使用情况到达警告

或严重级别时进行更改。共有三个选项:

• Use Database Default Thresholds(使用数据库默认阈值):使用预设的默认值,

可以选择设置这些默认值。

• Specify Thresholds(指定阈值):可以设置此特定表空间的阈值。

• Disable Thresholds(禁用阈值):关闭这个表空间的空间使用预警。

注:注册阈值预警需要花费数分钟的时间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 142: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

对表空间执行的操作

对表空间执行的操作

通过使用“Actions(操作)”菜单,可以对表空间执行各种操作。选择一个表空间,

然后选择要执行的操作:

• Add Datafile(添加数据文件):将数据文件添加到表空间,这会增大表空间。

• Create Like(类似创建):将表空间用作模板,创建另一个表空间。

• Generate DDL(生成 DDL):生成用于创建表空间的数据定义语言 (DDL) 语句。

此语句随后会复制并粘贴到文本文件中,以用作脚本或文档。

• Make Locally Managed(设置为本地管理):如果表空间当前是字典管理表空间,

则可将该表空间转换为本地管理表空间。这种转换只能单向进行;不能将该表空间

重新转换到字典管理表空间。

• Make Readonly(只读模式):停止对表空间的所有写操作。允许完成当前的事务

处理,但是,不允许对表空间启动新 DML 活动或其它写活动。只有表空间的当前

状态不是只读时,才显示此选项。

• Make Writable(可写模式):允许对表空间中的对象启动 DML 活动和其它写活动。

只有表空间的当前状态不是可写时,才显示此选项。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 143: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

表空间操作(续)

• Place Online(联机):使当前脱机的表空间联机。

• Reorganize(重组):启动“Reorganization Wizard(重组向导)”,使用此向导可

在表空间中各处移动对象以回收不可用的空间。应当在表空间中的对象使用不很是

频繁的期间执行此任务。

• Run Segment Advisor(运行段指导):启动“Segment Advisor(段指导)”,使用

该指导可根据对象中空间碎片的级别来确定对象是否拥有可用于执行回收的空间。

在表空间级别,会针对表空间中的每个段生成建议。

• Show Dependencies(显示相关性):显示此表空间依赖的对象,或依赖于此表空间

的对象。

• Show Tablespace Contents(显示表空间内容):显示关于表空间中所有段的信息,

包括所有区的图形。

• Take Offline(脱机):使当前联机的表空间不可用。此时不会删除表空间,只是

表空间不可用。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 144: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

删除表空间

删除表空间

如果不再需要表空间及其内容(表空间中包含的段),可将其从数据库中删除。必须具有

DROP TABLESPACE系统权限才能删除表空间。

删除表空间时,会删除关联数据库控制文件中的文件指针。而且,如果正在使用 OMF,则还会删除基础操作系统文件。如果没有使用 OMF,则可以根据需要指示 Oracle 服务器

删除构成已删除表空间的操作系统文件(数据文件)。如果不指示 Oracle 服务器在删除

表空间的同时删除数据文件,那么,如果以后要删除这些文件,则必须使用操作系统的

相应命令。

不能删除包含任何活动段的表空间。例如,如果表空间中的某个表当前正在使用中,或者

该表空间包含回退未提交事务处理所需要的还原数据,则不能删除该表空间。表空间的状

态可以是联机也可以是脱机,但是在删除表空间之前,最好使其处于脱机状态。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 145: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看表空间信息

查看表空间信息

单击“View(查看)”可查看关于选定表空间的信息。在“View Tablespace(查看表

空间)”页上,还可通过单击“Edit(编辑)”来变更表空间。

通过查询以下项也可以获取表空间和数据文件信息:

• 表空间信息:

- DBA_TABLESPACES

- V$TABLESPACE

• 数据文件信息:

- DBA_DATA_FILES

- V$DATAFILE

• 临时文件信息:

- DBA_TEMP_FILES

- V$TEMPFILE

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 146: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

采集存储信息

采集存储信息

要在 EM 中查看并修改表空间信息,请选择“Administration > Tablespaces(管理 > 表空间)”。请使用按钮或“Actions(操作)”下拉列表导航到相应目标。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 147: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看表空间内容

查看表空间内容

“Show Tablespace Contents(显示表空间内容)”页显示了关于表空间的详细信息,包括

表空间中段的列表、每个段的类型、段大小以及构成每个段的区数。使用这四个值中的任

何一个值,通过单击列标题可对列表进行排序,或者在“Search(搜索)”区域中输入值

来过滤列表。若采用字典管理表空间,则显示以下其它列:

• Max Extents(最大区数)

• Next(下一个)

• Percent Increase(增加百分比)

要查看区列表,请单击“Extents(区)”列中的链接。

要以图形方式查看区,请展开“Extent map(区映射)”,然后在各个区上移动光标。

此时会显示以下信息:

• 区所属的段的名称

• 区 ID • 块 ID • 区大小(以块数计)

• 用于存储区的数据文件

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 148: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

扩大数据库

可以按以下方式扩大数据库:

• 创建新表空间

• 将数据文件添加到现有表空间

• 增加数据文件的大小

• 动态扩展数据文件

SYSTEM表空间

INVENTORY表空间

数据库

扩大数据库

可以使用 Enterprise Manager 或 SQL 语句执行这些活动。最后,数据库大小可能被描述为

数据库所有表空间的大小之和。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 149: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

什么是 Automatic Storage Management

Automatic Storage Management • 是可移植的高性能集群文件系统

• 可管理 Oracle 数据库文件

• 可将数据分布到各个磁盘中以

平衡负载

• 可镜像数据

• 可解决存储管理的许多问题ASM

文件系统

卷管理器

应用程序

数据库

操作系统

什么是 Automatic Storage ManagementASM 将文件系统与卷管理器纵向集成在一起,这是一项专门为 Oracle 数据库文件构建的

技术。使用 ASM 可管理单个对称多处理 (SMP) 计算机,或通过管理集群的多个节点来支

持 Oracle Real Application Clusters (RAC)。

ASM 在所有可用的资源中分布输入/输出 (I/O) 负载,在免除了手动 I/O 优化的同时优化了

性能。ASM 帮助 DBA 管理动态数据库环境,让 DBA 在不关闭数据库的情况下,通过增

加数据库的大小来调整存储分配。

ASM 通过提供冗余的数据副本来提供容错能力,也可以在供应商提供的存储机制基础上

构建此功能。数据管理是通过为数据类选择期望的可靠性和性能特性实现的,而不是对

每个文件都使用人工交互。

通过自动处理手动存储,ASM 功能节省了 DBA 的时间,因此提高了 DBA 的能力,使他

们可以管理更多和更大的数据库,而且效率也更高。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 150: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

ASM:主要功能和优点

ASM • 对文件而不是逻辑卷进行条带化

• 提供联机重新配置磁盘和动态重新平衡功能

• 可用来调整重新平衡速度

• 为每个文件提供冗余

• 仅支持 Oracle 数据库文件

• 可识别集群

• 可自动安装

ASM:主要功能和优点

ASM 将文件划分为区(不同于前面介绍的数据文件区),而且将每个文件的区均匀地分

布在所有磁盘上。ASM 使用索引技术跟踪每个区的位置。存储容量发生变化时,ASM 并不重新条带化所有数据,而是根据添加或删除的存储量,按比例移动一定数量的数据,通

过重新平均分配文件来保持磁盘间的负载平衡。此操作是在数据库处于活动状态时完成的。

可以提高重新平衡操作的速度以更快地完成操作,也可以降低此速度以减少对 I/O 子系统

的影响。ASM 还提供了镜像保护,因此不需要购买第三方逻辑卷管理器。ASM 的一个特

有优势是可为每个文件创建镜像,而不是为每个卷创建镜像。因此,同一磁盘组可以包含

镜像文件或非镜像文件的组合。

ASM 支持数据文件、日志文件、控制文件、归档日志、Recovery Manager (RMAN) 备份

集及其它 Oracle 数据库文件类型。ASM 还支持 RAC,这样就不再需要使用集群逻辑卷

管理器或集群文件系统。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 151: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

ASM:概念

数据库

表空间

Oracle 数据块

数据文件

物理块

ASM 磁盘

ASM 文件

分配单元文件系统文件

或裸设备

ASM 磁盘组

ASM:概念

使用 ASM 并不意味着不再需要任何预先存在的数据库功能。现有数据库可以按原有方式

运行。可以将新文件创建为 ASM 文件,并按原有方式管理现有文件,也可以最后将这些

文件移植到 ASM。

上图描述了使用 ASM 的 Oracle 数据库中不同存储组件之间的关系。图的左侧和中间部分

显示了以前版本中存在的关系。图右侧为 ASM 引入的新概念。

数据库文件可作为 ASM 文件进行存储。新层次的顶端为 ASM 磁盘组。任何单个 ASM 文件只能包含在一个磁盘组中。但是,一个磁盘组可能包含属于多个数据库的文件,一个

数据库可能使用多个磁盘组中的存储空间。如图所示,一个磁盘组由多个 ASM 磁盘构成,

而每个 ASM 磁盘只属于一个磁盘组。ASM 文件始终分布在磁盘组中的所有 ASM 磁盘上。

ASM 磁盘按分配单位 (AU) 进行分区,每个分配单位为一兆字节。分配单位是 ASM 分配

的最小连续磁盘空间。ASM 不允许在多个分配单位之间分割一个 Oracle 块。

注:此图只涉及了一类 ASM 文件:数据文件。实际上,ASM 还可用来存储其它数据库

文件类型。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 152: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 描述如何在块中存储表行数据

• 定义表空间和数据文件的用途

• 创建和管理表空间

• 获取表空间信息

• 描述 Automatic Storage Management (ASM) 的主要

概念和功能

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 153: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理数据库存储结构

本练习包含以下主题:

• 创建表空间

• 采集关于表空间的信息

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 154: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 155: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理用户安全性

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 156: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 创建和管理数据库用户帐户

– 验证用户

– 分配默认存储区(表空间)

• 授予和撤销权限

• 创建和管理角色

• 创建和管理概要文件

– 实现标准口令安全功能

– 控制用户的资源使用量

课程目标

以下术语与管理数据库用户相关,了解这些术语有助于了解课程目标:

• 可使用数据库用户帐户来管理数据库对象的所有权和访问权限。

• 口令是 Oracle 数据库使用的验证手段。

• 权限是指执行特定类型的 SQL 语句或访问其他用户的对象的权利。

• 角色是指由相关权限组成的已命名组,可将其授予给用户或其它角色。

• 概要文件是指一组已命名的针对数据库用法和实例资源的资源限制条件。

• 限额是指定表空间中允许的空间容量。通过这种方法,可以控制用户的资源用量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 157: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库用户帐户

每个数据库用户帐户都具有以下项目:

• 唯一的用户名

• 验证方法

• 默认表空间

• 临时表空间

• 用户概要文件

• 使用者组

• 锁定状态

> 用户验证权限角色概要文件口令安全性限额

数据库用户帐户

要访问数据库,用户必须指定一个有效的数据库用户帐户,并且成功地对该用户帐户进行

必要的验证。每个数据库用户都有自己的数据库帐户。这是 Oracle 建议的 佳方案,这

样可避免潜在的安全漏洞,为特定的审计活动提供有意义的数据。但是,在极少数情况下,

若干用户会共享一个公用数据库帐户。此时,操作系统和应用程序必须为数据库提供足够

的安全性。每个用户帐户都具有以下项目:

• 唯一的用户名:用户名不能超过 30 个字节,不能包含特殊字符,而且必须以字母

开头。

• 验证方法: 常见的验证方法是口令,但是 Oracle Database 10g 支持其它多种验证

方法,包括生物统计学验证、证书验证和标记验证。

• 默认表空间:如果用户未指定其它表空间,则可在这个表空间中创建对象。请注意,

具有默认表空间并不意味着用户具有在该表空间创建对象的权限,也不意味着用户

可以为该表空间(用于创建对象)设置空间限额。这两项需要另外单独授权。

• 临时表空间:用户可在其中创建临时对象(如排序和临时表)的表空间。

• 用户概要文件:分配给用户的一组资源与口令的限制。

• 使用者组:由资源管理器使用。

• 锁定状态:用户只能访问“未锁定”帐户。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 158: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

预定义帐户:SYS和 SYSTEM

• SYS 帐户:

– 授予有 DBA 角色

– 具有 ADMIN OPTION的所有权限

– 执行启动、关闭和某些维护命令时所必需的帐户

– 拥有数据字典

– 拥有自动工作量资料档案库 (AWR) • SYSTEM 帐户授予有 DBA 角色。

• 这两个帐户不适用于例行程序操作。

预定义帐户:SYS 和 SYSTEM

默认情况下,SYS和 SYSTEM帐户授予有数据库管理员 (DBA) 角色。

此外,SYS帐户还具有 ADMIN OPTION的所有权限,而且拥有数据字典。要连接到 SYS帐户,必须使用 AS SYSDBA子句。任何授予了 SYSDBA权限的用户均可使用 AS SYSDBA子句连接到 SYS帐户。只有授予了 SYSDBA或 SYSOPER权限的“授权”用户才

能启动或关闭数据库实例。

默认情况下,SYSTEM帐户授予有 DBA角色,但不具有 SYSDBA权限。

佳方案提示:根据 少权限原则,不对例行程序操作使用这些帐户。需要 DBA 权限

的用户可以使用已授予了所需权限的独立帐户。例如,Jim 有一个名为 jim的低权限帐户

及一个名为 jim_dba的授权帐户。使用此方法符合 少权限原则,不需要共享帐户,而

且可审计各项操作。

SYS和 SYSTEM帐户是数据库中必需存在的帐户,不能将其删除。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 159: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建用户

选择“Administration > Schema > Users & Privileges > Users(管理 > 方案 > 用户和权限 > 用户)”,然后单击

“Create(创建)”按钮。

创建用户

在 Enterprise Manager 中,可使用“Users(用户)”页,管理允许访问当前数据库的数据

库用户列表。可以使用此页来创建、删除和修改用户的设置。

要创建数据库用户,请执行以下步骤:

1. 在 Enterprise Manager Database Control 中,选择“Administration > Schema > Users & Privileges > Users(管理 > 方案 > 用户和权限 > 用户)”。

2. 单击“Create(创建)”按钮。

输入所需的信息。必需项(如“名称”)带有星号标记。

后面的几页提供了有关验证的详细信息。本课稍后将讨论概要文件。

请给每个用户分配一个默认表空间和临时表空间。这样,如果用户在创建对象时未指定

表空间,可以控制创建用户对象的位置。

如果未选择默认表空间,则会使用系统定义的默认永久表空间。同样,对于临时表空间:

如果未指定临时表空间,则会使用系统定义的临时表空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 160: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

验证用户

• 口令

• 外部验证

• 全局验证

用户> 验证

权限角色概要文件口令安全性限额

验证用户

验证是指对要使用数据、资源或应用程序的用户、设备或其它实体的身份进行验证。通过

验证身份可建立一种信任关系,从而可进一步进行交互。验证将访问和操作与特定的身份

关联起来,从而实现了可靠性。完成验证后,验证流程会允许该实体进行访问和操作,或

限制该实体可以进行的访问和操作级别。

创建用户时,必须确定要使用的验证方法,以后可修改此方法。

口令:又称为 Oracle 数据库验证。创建的每个用户都有一个关联的口令,用户尝试建立

连接时,必须提供这个口令。设置口令时,可以使该口令立即失效,这会强制用户在首次

登录后更改口令。如果决定要使用户口令失效,应确保用户能够更改口令。有些应用程序

不具备此功能。

在(客户机/服务器之间和服务器/服务器之间)建立网络连接期间,系统总是使用修改过

的数据加密标准 (DES) 算法,以自动透明方式对口令进行加密,然后通过网络发送这些

口令。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 161: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

验证用户(续)

外部验证:又称为操作系统验证。用户可以在不指定用户名或口令的情况下连接到 Oracle 数据库。使用外部验证时,数据库依赖于基础操作系统或网络验证服务来限制对数据库帐

户的访问。数据库口令不适用于此类登录。如果操作系统或网络服务允许,可以使用外部验证来验证用户。如果要执行此操作,请设置 OS_AUTHENT_PREFIX初始化参数,并在

Oracle 用户名中使用此前缀。OS_AUTHENT_PREFIX参数定义了一个前缀,Oracle 数据

库会在每个用户的操作系统帐户名之前添加此前缀。为了实现与 Oracle 软件早期版本的

向后兼容,此参数的默认值为 OPS$。用户尝试建立连接时,Oracle 数据库会将带前缀的

用户名与数据库中的 Oracle 用户名进行比较。例如,假定对 OS_AUTHENT_PREFIX进行

了如下设置:

OS_AUTHENT_PREFIX=OPS$

如果某个用户的操作系统帐户名为 tsmith,它需要连接到 Oracle 数据库而且由操作系统

进行验证,那么 Oracle 数据库会检查是否存在一个对应的数据库用户 OPS$tsmith,如

果存在这样的用户,则允许该用户建立连接。对用户(由操作系统进行验证)的所有引用中必须包含 OPS$tsmith中的前缀。

注:在某些操作系统中,OS_AUTHENT_PREFIX初始化参数的文本区分大小写。有关此

初始化参数的详细信息,请参阅特定操作系统的 Oracle 文档。

全局验证:使用 Oracle Advanced Security 选项时,可通过全局验证(一种严格的验证方法)

并使用生物统计学、x509 证书、标记设备和 Oracle Internet Directory 来识别用户。有关高

级验证方法的详细信息,请参阅“Oracle 企业身份管理”课程。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 162: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理员验证

操作系统安全性

• DBA 必须具有创建或删除文件的操作系统权限。

• 普通数据库用户不应具有创建或删除数据库文件的操作

系统权限。

管理员安全性

• 通过口令文件或操作系统验证 SYSBA 和 SYSOPER连接。

– 口令文件验证会按名称记录 DBA 用户。

– 操作系统验证并不记录具体用户。

– 对于 SYSDBA和 SYSOPER,操作系统验证优先于口令

文件验证。

管理员验证

操作系统安全性:在 UNIX 和 Linux 中,默认情况下,DBA 属于 install操作系统组,

该组具有创建和删除数据库文件所需的权限。

管理员安全性:仅在使用口令文件或操作系统特权与权限完成验证后,才授权建立

SYSBA和 SYSOPER连接。如果使用操作系统验证,则数据库不会使用提供的用户名和口

令。当口令文件不存在,或者该文件中不存在提供的用户名和口令,或者未提供用户名和

口令时,就会使用操作系统验证。

但是,如果使用口令文件成功完成了验证,则会使用用户名记录连接。如果使用操作系统成功完成了验证,则表示这是一个 CONNECT /连接,这种连接不记录具体用户。

注:操作系统验证优先于口令文件验证。特别是,如果您是操作系统中 OSDBA或

OSOPER组的成员,而且以 SYSDBA或 SYSOPER身份进行连接,则会使用关联的管理权

限建立连接,不管您指定的用户名和口令是什么。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 163: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

解除用户帐户的锁定并重置口令

选择用户,然后单击“Unlock User(解除用户锁定)”。

解除用户帐户的锁定并重置口令

在安装和创建数据库的过程中,可以解除对 Oracle 提供的多个数据库用户帐户的锁定,

然后重置这些帐户。如果当时没有解除用户帐户的锁定,则可以在“Users(用户)”

页上选择用户,然后单击“Unlock User(解除用户锁定)”来解除用户锁定,然后重置

口令。

或者,如果位于“Edit Users(编辑用户)”页,则可执行以下步骤:

1. 在“Enter Password(输入口令)”和“Confirm Password(确认口令)”字段中

输入新口令。

2. 选中“Unlocked(解除锁定)”复选框。

3. 单击“Apply(应用)”,重置口令并解除用户帐户的锁定。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 164: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

权限

用户权限有两种类型:

• 系统:允许用户在数据库中执行特定的操作

• 对象:允许用户访问和操纵特定的对象

系统权限:创建会话

HR_DBA

对象权限:更新雇员

用户验证

> 权限角色概要文件口令安全性限额

权限

权限是指执行特定类型的 SQL 语句或访问其他用户的对象的权利。Oracle 数据库允许您

控制用户在数据库中能执行或不能执行的操作。权限分为以下两种类别:

• 系统权限:每种系统权限都允许用户执行一种或一类特定的数据库操作。例如,创

建表空间的权限就是一个系统权限。系统权限可由管理员授予,或者由可以显式授予管理权限的用户授予。共有一百多种不同的系统权限。很多系统权限都包含 ANY子句。

• 对象权限:对象权限允许用户对特定对象(如表、视图、序列、过程、函数或程序

包)执行一个特定的操作。在没有特定权限的情况下,用户只能访问自己拥有的对

象。对象权限可以由对象的所有者或管理员授予,也可以由为其显式授予了对象授

予权限的用户授予。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 165: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

系统权限

系统权限

要授予系统权限,请单击“Edit User(编辑用户)”页上的“Systems Privileges(系统权

限)”标签。从可用权限列表中选择适当的权限,然后单击“Move(移动)”箭头将其

移至“Selected System Privileges(选定的系统权限)”列表中。

使用 ANY子句授予权限意味着此权限可以跨方案应用。例如,使用 CREATE TABLE权限

可创建表,但只能在您自己的方案中创建。SELECT ANY TABLE权限就允许您选择其他

用户拥有的表。

选中“Admin Option(管理员选项)”复选框后,您可以管理权限并为其他用户授予系统

权限。

在授予系统权限之前请仔细考虑安全要求。某些系统权限通常只能授予给管理员:

• RESTRICTED SESSION:使用此权限您可以登录,即使数据库是在受限模式下打

开的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 166: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

系统权限(续)

• SYSDBA和 SYSOPER:使用这两个权限可以在数据库中执行关闭、启动、恢复及其

它管理任务。使用 SYSOPER用户可执行基本操作任务,但不能查看用户数据。此权

限包括以下系统权限:

- STARTUP和 SHUTDOWN

- CREATE SPFILE

- ALTER DATABASE OPEN/MOUNT/BACKUP

- ALTER DATABASE ARCHIVELOG

- ALTER DATABASE RECOVER(仅限完全恢复。任何形式的不完全恢复,如

UNTIL TIME|CHANGE|CANCEL|CONTROLFILE,需要以 SYSDBA身份建立

连接。)

- RESTRICTED SESSION

除此之外,SYSDBA系统权限还可授权执行不完全恢复和删除数据库。使用 SYSDBA系统权限用户可以 SYS用户身份有效地建立连接。

• DROP ANY对象:使用 DROP ANY权限用户可删除其他用户拥有的对象。

• CREATE、MANAGE、DROP和 ALTER TABLESPACE:这些权限可用来管理表空间,

包括创建、删除和更改表空间的属性。

• CREATE ANY DIRECTORY:使用 Oracle 数据库开发人员可以在 PL/SQL 内调用外

部代码(例如 C 库)。作为一种安全措施,代码所在的操作系统目录必须链接到一

个虚拟 Oracle 目录对象。使用 CREATE ANY DIRECTORY权限,您可能会调用不安

全的代码对象。

使用 CREATE ANY DIRECTORY权限,用户可以在 Oracle 软件所有者能够访问的任

何目录中创建目录对象(具有读写访问权限)。这意味着用户可以访问这些目录中

的外部过程。用户可以尝试直接读写任何数据库文件,如数据文件、重做日志和审

计日志。一定要确保组织已采用了安全策略,以防止误用此类作用很强的权限。

• GRANT ANY OBJECT PRIVILEGE:使用此权限,您可以授予对他人所拥有的对象

的对象权限。

• ALTER DATABASE和 ALTER SYSTEM:这些权限的作用很强,可用于修改数据库

和 Oracle 实例,如重命名数据文件或刷新缓冲区高速缓存。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 167: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

对象权限

要授予对象权限,请执行以下

任务:

1. 选择对象类型。

2. 选择对象。

3. 选择权限。

对象权限

要授予对象权限,请单击“Edit User(编辑用户)”页上的“Object Privileges(对象权

限)”标签。如果要授予对某个对象的权限,请选择该对象的类型,然后单击“Add(添

加)”按钮。通过输入 <username.object name>或从列表中进行选择,选择要授予

对其的权限的对象。

接下来,在“Available Privileges(可用的权限)”列表中选择适当权限,然后单击

“Move(移动)”按扭。选择权限之后,单击“OK(确定)”。

如果允许此用户向其他用户授予同一访问权限,请返回“Edit User(编辑用户)”页,

然后选中“Grant(授权)”复选框。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 168: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 ADMIN OPTION 撤销系统权限

授予

撤销

REVOKE CREATE TABLE FROM jeff;

用户

权限

对象

DBA Jeff Emi

Jeff EmiDBA

撤销系统权限

使用 REVOKE SQL 语句可撤销使用 GRANT命令直接授予的系统权限。具有 ADMIN OPTION系统权限的用户可撤销其它任何数据库用户的权限。撤销者与 初被授予权限

的用户不一定是同一个用户。

撤销系统权限时不会产生级联效应,无论是否指定了 ADMIN OPTION。

请阅读以下说明步骤:

方案

1. DBA 使用 ADMIN OPTION将 CREATE TABLE系统权限授予给 Jeff。2. Jeff 创建一个表。

3. Jeff 将 CREATE TABLE系统权限授予给 Emi。4. Emi 创建一个表。

5. DBA 撤销 Jeff 的 CREATE TABLE系统权限。

结果

Jeff 的表仍然存在,但是他不能创建新表。

Emi 的表仍然存在,而且她仍然具有 CREATE TABLE系统权限。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 169: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 GRANT OPTION 撤销对象权限

授予

撤销

Bob Jeff Emi

EmiJeffBob

撤销对象权限

撤销与数据操纵语言 (DML) 操作相关的系统权限时可能会出现级联效应。例如,如果将

SELECT ANY TABLE权限授予给某个用户,该用户又创建了使用表的过程,则必须先

重新编译用户方案中包含的所有过程,才能再次使用这些过程。

使用 WITH GRANT OPTION撤销对象权限也会产生级联效应。

请阅读以下说明步骤:

方案

1. 使用 GRANT OPTION为 Jeff 授予了对 EMPLOYEES的 SELECT对象。

2. Jeff 将对 EMPLOYEES的 SELECT权限授予给 Emi。3. 随后,撤销 Jeff 的 SELECT权限。此撤销操作会同时对 Emi 产生级联效应。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 170: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

角色的作用

• 简化权限管理

• 动态地管理权限

• 有选择性地应用权限

用户验证权限

> 角色概要文件口令安全性限额

角色的作用

• 简化权限管理:使用角色可简化权限管理。可以将一些权限授予给某个角色,然后

将该角色授予给各个用户,而不是将同一组权限授予给多个用户。

• 动态地管理权限:如果修改了与某个角色关联的权限,则授予该角色的所有用户都

会立即自动获得修改过的权限。

• 有选择性地应用权限:启用或禁用角色可以暂时打开或关闭权限。启用角色还可以

用来验证是否已为用户授予了该角色。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 171: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

将权限分配给角色以及将角色分配给用户

用户

权限

角色 HR_CLERKHR_MGR

Jenny David Rachel

删除雇员 选择雇员 更新雇员

插入雇员

将权限分配给角色以及将角色分配给用户

在大多数系统中,将必需的权限分别授予给各个用户是很耗时的工作,而且很可能会出错。

Oracle 软件通过角色来实现简单且受控的权限管理。角色是可授予给用户或其它角色的、

由相关权限组成的已命名组。角色设计用于简化数据库中的权限管理,从而可提高数据库

的安全性。

角色特性

• 角色就像用户,可以将权限授予给角色,也可以撤销角色的权限。

• 角色就像系统权限,可以将其授予给用户或其它角色,也可以撤销用户或其它角色的

角色。

• 角色可以由系统权限和对象权限组成。

• 可以针对授予某一角色的每个用户启用或禁用该角色。

• 可能需要口令才能启用角色。

• 角色不由任何用户拥有,角色也不属于任何方案。

在幻灯片示例中,HR_CLERK角色被授予了对 employees表的 SELECT和 UPDATE权

限。HR_MGR角色被授予了对 employees表的 DELETE和 INSERT权限以及 HR_CLERK角色。管理员被授予了 HR_MGR角色,现在管理员可以选择、删除、插入和更新

employees表。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 172: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

预定义角色

CREATE ANY JOB、CREATE EXTERNAL JOB、CREATE JOB、EXECUTE ANY CLASS、EXECUTE ANY PROGRAM、MANAGE SCHEDULER

SCHEDULER_ ADMIN

没有系统权限,但是具有对数据字典的HS_ADMIN_ROLE 权限和 1,700 多种对象权限

SELECT_

CATALOG_

ROLE

具有大多数系统权限和其它若干个角色。不要将其

授予给管理员之外的人员。

DBA

CREATE CLUSTER、CREATE INDEXTYPE、CREATE OPERATOR、CREATE PROCEDURE、CREATE SEQUENCE、CREATE TABLE、CREATE TRIGGER、CREATE TYPE

RESOURCE

CREATE SESSIONCONNECT

预定义角色

运行数据库创建脚本时会为 Oracle 数据库自动定义若干个角色。CONNECT会自动授予给

使用 Enterprise Manager 创建的任何用户。在数据库早期版本(早于 Oracle Database 10g版本 2)中,CONNECT角色包含更多的权限,如 CREATE TABLE和 CREATE DATABASE LINK,现在,出于安全原因删除了这些权限。

注:请注意,授予 RESOURCE角色时也会授予 UNLIMITED TABLESPACE权限。

功能角色

已经创建了可以授权您管理特殊功能(如果已安装这些功能)的其它角色。例如,XDBADMIN包含管理扩展标记语言 (XML) 数据库(如果已安装此功能)所需的权限。

AQ_ADMINISTRATOR_ROLE提供管理高级队列的权限。HS_ADMIN_ROLE包括管理异类

服务所需的权限。在没有 Oracle 技术支持协助的情况下,一定不要改变授予这些功能角

色的权限,因为这样做可能会无意中禁用所需的功能。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 173: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建角色

选择“Administration > Schema > Users & Privileges > Roles(管理 > 方案 > 用户和权限 > 角色)”。

创建角色

角色是指由相关权限组成的已命名组,可将其授予给用户或其它角色。DBA 通过角色来

管理权限。

要创建角色,请执行以下步骤:

1. 在 Enterprise Manager Database Control 中,选择“Administration > Schema > Users & Privileges > Roles(管理 > 方案 > 用户和权限 > 角色)”。

2. 单击“Create(创建)”按钮。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 174: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

CREATE ROLE secure_application_roleIDENTIFIED USING <security_procedure_name>;

保护角色

• 角色可能不是默认的。

• 可以通过验证来保护角色。

• 也可以通过编程来保护角色。

SET ROLE vacationdba;

保护角色

默认情况下角色通常处于启用状态,这意味着如果角色已授予给某个用户,则该用户可以

行使指定给角色的权限。此时用户可以:

• 使角色成为非默认角色。将角色授予给用户后,取消选中“DEFAULT(默认)”

复选框。现在,用户必须先显式启用角色,之后才能行使角色的权限。

• 将角色设置为需要通过附加验证,之后才能使用该角色。默认情况下角色的验证为

“无”,但可以将角色设置为需要先通过附加验证,然后才能进行设置。

• 只有通过成功地执行 PL/SQL 过程,才能创建安全的应用程序角色。PL/SQL 过程可以检查用户运行程序的用户网络地址、日期时间或正确保护权限组所需的其它

元素。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 175: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

将角色分配给用户

将角色分配给用户

角色是指一组可授予给用户或其它角色的权限。可以使用角色来管理数据库权限。可以

向角色添加权限,再将角色授予给用户。随后用户可以启用角色,从而行使角色授予的

权限。角色包含授予给该角色的所有权限,以及授予给该角色的其它角色的所有权限。

默认情况下,Enterprise Manager 会自动将 CONNECT角色授予给新用户。这样,用户可

连接到数据库,然后在自己的方案中创建数据库对象。

要将角色分配给用户,请执行以下步骤:

1. 在 Enterprise Manager Database Control 中,选择“Administration > Schema > Users & Privileges > Users(管理 > 方案 > 用户和权限 > 用户)”。

2. 选择用户,然后单击“Edit(编辑)”按钮。

3. 单击“Roles(角色)”标签,然后单击“Edit List(编辑列表)”按钮。

4. 在“Available Roles(可用角色)”中选择所需角色,然后将其移至“Selected Roles(选定的角色)”中。

5. 分配了所有相应角色后,单击“OK(确定)”按钮。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 176: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

概要文件和用户

在任何指定时间,只能给用户分配一个概要文件。

概要文件:

• 控制资源占用

• 管理帐户状态和口令失效

用户验证权限角色

> 概要文件口令安全性限额

概要文件和用户

概要文件是指一组已命名的针对数据库用法和实例资源的资源限制条件。通过概要文件还

可管理帐户状态并设置对用户口令的限制(长度、失效时间等)。每个用户都分配有一个

概要文件,而且该用户在指定时间只属于一个概要文件。如果用户在您更改用户概要文件

时已经登录,那么所做更改在用户下一次登录后才生效。

默认概要文件可作为其它所有概要文件的基础。如幻灯片中所示,概要文件的限制可以是

隐式指定的(如“CPU/会话”)、无限制的(如“CPU/调用”),或者引用默认概要文

件中的任何设置(如“连接时间”)。

除非 RESOURCE_LIMIT初始化参数设置为 TRUE,否则不能通过概要文件强行设置对用

户的资源限制。如果 RESOURCE_LIMIT使用默认值 FALSE,则忽略概要文件的限制。

管理员使用概要文件来控制以下系统资源:

• CPU:可以针对每个会话或每个调用限制 CPU 资源。“CPU/会话”限制为 1,000 表示:当使用此概要文件的任一会话占用 10 秒以上的 CPU 时间(CPU 时间限制以百

分之一秒为单位)时,该会话就会收到错误并被注销:

ORA-02392: exceeded session limit on CPU usage, you are being logged off

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 177: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

概要文件和用户(续)

每个调用限制都具有相同的作用,但是它并不限制用户的整个会话,而是防止任一

命令占用过多的 CPU。如果“CPU/调用”受到限制,而且用户超出了限制,命令就

会中止,用户还会收到错误消息,例如:

ORA-02393: exceeded call limit on CPU usage

• 网络/内存:每个数据库会话都会占用系统内存资源和网络资源(如果会话来自服务

器的非本地用户)。可以指定以下参数:

- 连接时间:指示用户在自动注销前可以保持连接的分钟数。

- 闲置时间:指示用户会话在自动注销前可以保持闲置的分钟数。只计算服务器进程的闲置时间,不考虑应用程序活动。IDLE_TIME限制不受长时间运行的

查询和其它操作的影响。

- 并行会话:指示使用数据库用户帐户可以创建多少个并行会话。

- 专用 SGA:限制系统全局区域 (SGA) 中排序、合并位图等操作占用的空间。

此限制仅在会话使用共享服务器时才有效(将在“配置 Oracle Network 环境”

一课讨论共享服务器)。

• 磁盘 I/O:限制用户在每个会话或每个调用级别可读取的数据量。“读取/会话”和

“读取/调用”可限制内存和磁盘的总读取次数。这可确保执行大量输入/输出 (I/O) 的语句不会过度使用内存和磁盘。

概要文件还支持组合限制。组合限制以“CPU/会话”、“读取/会话”、“连接时间”和

“专用 SGA”的加权组合为基础。《Oracle 数据库安全性指南》中对组合限制进行了详

细介绍。

要创建概要文件,请选择“Administration > Schema > Users & Privileges > Profiles(管理 > 方案 > 用户和权限 > 概要文件)”,然后单击“Create(创建)”按钮。

注:资源管理器可替代许多概要文件设置。有关资源管理器的详细信息,请参阅《Oracle 数据库管理员指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 178: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

实施口令安全功能

口令历史记录

帐户锁定口令过期和失效

口令复杂性验证

用户 设置概要文件

注:不要使用会导致 SYS、SYSMAN 和 DBSNMP 的口令失效,进而导致这些帐户

被锁定的概要文件。

用户验证权限角色概要文件

> 口令安全性限额

实施口令安全功能

Oracle 口令管理是通过用户概要文件实施的。概要文件可提供许多标准安全功能,其中

包括:

帐户锁定:如果用户的登录失败次数达到了指定次数,系统会在设置的一段时间内自动

锁定帐户。

• FAILED_LOGIN_ATTEMPTS参数指定了在锁定帐户前失败的尝试登录次数。

• PASSWORD_LOCK_TIME参数指定了尝试登录失败次数达到指定次数后帐户的锁定

天数。

口令过期和失效:使用户口令具有生存期,口令在此生存期之后失效,必须进行更改。

• PASSWORD_LIFE_TIME参数指定了口令的生存期(以天为单位),此时间之后,

口令会失效。

• PASSWORD_GRACE_TIME参数指定了口令失效后首次成功登录之后,更改口令的

宽限期(以天为单位)。

注:使口令失效和锁定 SYS、SYSMAN和 DBSNMP帐户,可避免 Enterprise Manager 出现

不正常运行的情况。应用程序必须捕获“口令到期”警告消息并处理口令更改;否则,宽

限期一到期,用户会被锁定,却不知道原因。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 179: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

实施口令安全功能(续)

口令历史记录:检查新口令以确保在指定时间内或者在指定口令更改次数内不重复使用

口令。可使用下列参数之一进行检查:

• PASSWORD_REUSE_TIME:指定用户不能在指定天数内重复使用口令

• PASSWORD_REUSE_MAX:指定在可重复使用当前口令之前需要更改口令的次数

这两个参数是互相排斥的,因此,如果其中一个参数值没有被设置 UNLIMITED(如果

DEFAULT概要文件将值设置为 UNLIMITED,则为 DEFAULT),则另一个参数必须设置

为 UNLIMITED。

口令复杂性验证:对口令进行复杂性检查可验证口令是否符合特定的规则。此检查必须

确保口令是足够复杂的,这样才能防止入侵者通过猜测口令来尝试闯入系统。

PASSWORD_VERIFY_FUNCTION参数指定一个 PL/SQL 函数,用于在分配口令之前执行

口令复杂性检查。口令验证函数必须由 SYS用户拥有,而且必须返回布尔值(TRUE或

FALSE)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 180: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建口令概要文件

创建口令概要文件

要创建口令概要文件,请选择“Administration > Schema > Users & Privileges > Profiles(管理 > 方案 > 用户和权限 > 概要文件)”,然后单击“Create(创建)”按钮。

可从值列表选择每种设置的公用值(单击手电筒图标即可进行浏览),也可输入自定义值。

所有时段都用“天”表示,也可用分数表示。一天有 1,440 分钟,因此 5/1440 是指 5 分钟。

也可使用 Enterprise Manager 编辑现有的口令概要文件。

删除口令概要文件

在 Enterprise Manager 中,无法删除用户使用的概要文件。但是,如果使用 CASCADE选

项删除了概要文件(例如,在 SQL*Plus 中),则会向具有该概要文件的所有用户自动分

配 DEFAULT概要文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 181: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

提供的口令验证函数:VERIFY_FUNCTION

使用提供的口令验证函数可强制设置以下口令限制:

• 最小长度是四个字符。

• 口令不能与用户名相同。

• 口令必须至少包含一个字母、一个数字和一个特殊字符。

• 口令与前一口令必须有三个字母不相同。

提示:使用此函数作为模板可创建自己的自定义口令验证。

提供的口令验证函数:VERIFY_FUNCTION

Oracle 服务器提供了一个名为 VERIFY_FUNCTION的口令复杂性验证函数。此函数是使

用 <oracle_home>/rdbms/admin/utlpwdmg.sql脚本创建的。必须在 SYS方案中

创建口令复杂性验证函数。可将此函数作为模板来创建自定义的口令验证。

除了创建 VERIFY_FUNCTION以外,还可以在 utlpwdmg脚本中使用以下 ALTER PROFILE命令更改 DEFAULT概要文件:

ALTER PROFILE default LIMITPASSWORD_LIFE_TIME 60PASSWORD_GRACE_TIME 10PASSWORD_REUSE_TIME 1800PASSWORD_REUSE_MAX UNLIMITEDFAILED_LOGIN_ATTEMPTS 3PASSWORD_LOCK_TIME 1/1440PASSWORD_VERIFY_FUNCTION verify_function;

请注意,创建用户时,除非指定了其它概要文件,否则会向用户分配 DEFAULT概要

文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 182: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

将限额分配给用户

对于没有 UNLIMITED TABLESPACE 系统权限的用户,

必须先给他们指定限额,之后他们才能在表空间中创建

对象。限额可以是:

• 以兆字节或千字节为单位的特定值

• 无限制的

用户验证权限角色概要文件口令安全性

> 限额

将限额分配给用户

限额是指定表空间中允许的空间容量。默认情况下,用户在任何表空间中都没有限额。

可以使用以下三个选项来为用户提供表空间限额。

• 无限制:允许用户 大限度地使用表空间中的可用空间。

• 值:用户可以使用的空间,以千字节或兆字节为单位。这并不保证会为用户保留该

空间。因为此值可能大于或小于表空间中的当前可用空间。

• UNLIMITED TABLESPACE系统权限:此系统权限会覆盖所有单个的表空间限额,

并向用户提供所有表空间(包括 SYSTEM和 SYSAUX)的无限制限额。授予此权限

时要慎重。

注:请注意,授予 RESOURCE角色时也会授予此权限。

一定不要为用户提供 SYSTEM或 SYSAUX表空间限额。通常,只有 SYS和 SYSTEM用户

才能在 SYSTEM或 SYSAUX表空间中创建对象。

对于分配的临时表空间或任何还原表空间则不需要限额。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 183: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

将限额分配给用户(续)

• Oracle 实例何时使用限额?

用户创建或扩展段时会使用限额。

• 哪些活动不影响限额?

不使用所分配表空间中的空间的活动(如创建视图或使用临时表空间)不会影响

限额。

• 何时补充限额?使用 PURGE子句删除了用户拥有的对象或者自动清除了回收站中的对象时会补充

限额。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 184: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 创建和管理数据库用户帐户

– 验证用户

– 分配默认存储区(表空间)

• 授予和撤销权限

• 创建和管理角色

• 创建和管理概要文件

– 实施标准口令安全功能

– 控制用户的资源使用量

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 185: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理用户

本练习包含以下主题:

• 创建限制资源占用的概要文件

• 创建两个角色:

– HRCLERK

– HRMANAGER

• 创建四个新用户:

– 一个经理和两个职员

– 在下一个练习中使用的一个方案用户

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 186: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 187: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理方案对象

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 188: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 定义方案对象和数据类型

• 创建和修改表

• 定义约束条件

• 查看表列和表内容

• 创建索引

• 创建视图

• 创建序列

• 说明临时表的用法

• 使用数据字典

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 189: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

什么是方案

HR方案HR用户

拥有

> 方案约束条件索引视图序列临时表数据字典

什么是方案

方案是指由特定用户拥有的数据库对象的集合。对于生产数据库而言,这个用户代表的通

常不是一个人,而是一个应用程序。方案与拥有该方案的用户同名。方案对象是指直接引

用数据库数据的逻辑结构。方案对象包含表、视图和索引等多种结构。

可使用 SQL 或 Enterprise Manager 创建和处理方案对象。使用 Oracle Enterprise Manager 时,系统会生成基础 SQL 语句。

注:方案不一定需要与单个表空间直接相关。可以定义一些配置,以使一个方案中的对象

可以保存在不同的表空间中,一个表空间也可以保存不同方案中的对象。

创建数据库时,系统会创建多个方案。以下是两个重要方案:

• SYS方案:包含数据字典,这在“管理用户安全性”一课有所介绍。

• SYSTEM方案:包含存储管理信息的附加表和视图。“管理用户安全性”一课对此

进行了介绍。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 190: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

什么是方案(续)

在完全安装 Oracle 数据库时,会自动安装示例方案。示例方案用于为 Oracle 文档和课件

中的示例提供一个公用平台。这些示例方案是一组互相联系的方案,旨在提供不同复杂

程度的示例,其中包括:

• HR:“人力资源”方案是一个用于介绍基本主题的简单方案。此方案经过扩展后可

支持 Oracle Internet Directory 演示。

• OE:“订单录入”方案是一个中等复杂程度的方案。OE方案中提供了多种数据

类型。OC(联机目录)子方案是内置于 OE方案中的对象关系数据库对象的集合。

• PM:“产品媒体”方案专用于多媒体数据类型。

• QS:“排队发运”方案包含一组用于演示 Oracle Advanced Queuing 功能的方案。

• SH:“销售历史记录”方案用于演示大量数据。这个方案经过扩展可支持高级分析

处理。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 191: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

访问方案对象

访问方案对象

可以从数据库管理页的“Schema(方案)”区域中快速访问多种方案对象。

单击其中一个链接后,就会显示“Results(结果)”页。在该页的“Search(搜索)”区

域中,可以通过输入方案名和对象名来搜索特定对象。此外,通过在下拉列表中选择对象

类型,可在“Search(搜索)”区域搜索其它类型的对象。这个下拉列表包括未在数据库

管理页中显示为链接的其它对象类型。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 192: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

命名数据库对象

• 名称长度必须为 1 至 30 个字节,但以下情况除外:

– 数据库名称为 8 个字节。

– 数据库链接名最长可为 128 个字节。

• 不带引号的名称不能采用 Oracle 保留字。

• 不带引号的名称必须以数据库字符集中的字母字符开头。

• 不建议使用带引号的名称。

命名数据库对象

命名数据库中的对象时,可以将名称括在双引号 (“”) 中。使用这种方式,您可以违反幻

灯片中提到的一些命名规则。但是,我们不建议这样做,因为如果采用这种方式命名对象,那么引用时名称永远都要带着引号。例如,如果要将表命名为“Local Temp”,则必须执行以下操作:

SQL> select * from "Local Temp"; TEMP_DATE LO_TEMP HI_TEMP --------- ---------- ----------01-DEC-03 30 41

如果输入的名称有大小写错误,则会出现错误:SQL> select * from "local temp"; select * from "local temp"

* ERROR at line 1: ORA-00942: table or view does not exist

不带引号的名称会以大写形式存储且不区分大小写。处理 SQL 语句时,不带引号的名称会全部转换为大写。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 193: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

命名数据库对象(续)

不带引号的标识符只能包含数据库字符集中的字母数字字符,以及下划线 (_)、美元符号

($) 和磅符号 (#)。数据库链接还可包含句点 (.) 和“at”符号 (@)。强烈反对在不带引号的

标识符中使用 $ 和 #。

带引号的标识符可以包含任意字符、标点符号和空格。但是,带引号与不带引号的标识符

都不能包含双引号。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 194: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

指定表中的数据类型

公用数据类型:

• CHAR(size [BYTE|CHAR]):size 个字节或字符的

固定长度字符数据

• VARCHAR2(size [BYTE|CHAR]):最大长度为

size 个字节或字符的可变长度字符串

• DATE:在公元前 4712 年 1 月 1 日至公元 9999 年12 月 31 日之间的有效日期

• NUMBER(p,s):精度为 p 且小数位数为 s 的数字

指定表中的数据类型

创建表时,必须指定每个表列的数据类型。创建过程或函数时,必须指定每个参数的数据

类型。这些数据类型定义了每个列中可包含的值的范围,或者每个参数可采用的值的范围。

以下是 Oracle 数据库中的内置数据类型:

• CHAR:size 个字节或字符的固定长度字符数据。最大大小为 2,000 个字节或字符,

默认大小及最小大小均为 1 个字节。

- BYTE表示列采用字节长度语义。

- CHAR表示列采用字符语义。

• VARCHAR2:最大长度为 size 个字节或字符的可变长度字符串。最大大小为

4,000 个字节。必须指定 VARCHAR2的大小。

• DATE:在公元前 4712 年 1 月 1 日至公元 9999 年 12 月 31 日之间的有效日期。

它还存储以下时间:小时、分钟和秒。

• NUMBER:精度为 p 且小数位数为 s 的数字。精度可介于 1 与 38 之间。小数位数可

介于 –84 与 127 之间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 195: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

指定表中的数据类型(续)

• BINARY_FLOAT:32 位浮点数。这种数据类型需要 5 个字节(包括长度字节)。

• BINARY_DOUBLE:64 位浮点数。这种数据类型需要 9 个字节。

• FLOAT(p):美国国家标准协会 (ANSI) 数据类型。FLOAT数据类型是二进制精度为

p 的浮点数。这种数据类型的默认精度为二进制数 126 或十进制数 38。• INTEGER:等效于 NUMBER(p,0)。

• NCHAR(length):NCHAR数据类型是仅使用 Unicode 的数据类型。创建包含

NCHAR列的表时,请以字符为单位定义列长度。创建数据库时,请定义国家字符集。

列的最大长度根据国家字符集定义来确定。NCHAR数据类型的宽度规范是指字符数。

允许的最大列大小为 2,000 个字节。如果插入值小于列长度,为了完全达到列长度,

Oracle 数据库会使用空格填充该值。不能将 CHAR值插入到 NCHAR列中,也不能将

NCHAR值插入到 CHAR列中。

• VARCHAR2(size [BYTE|CHAR]):NVARCHAR2数据类型是仅使用 Unicode 的数

据类型。它与 NCHAR相似,不同之处在于,它的最大长度为 4,000 字节且不能使用

空格填充。

• LONG:可变长度最大为 2 GB 或 231 –1 个字节的字符数据。LONG数据类型已弃用;

请改用大对象 (LOB) 数据类型。

• LONG RAW:可变长度最大为 2 GB 的原始二进制数据。

• RAW(size):长度为 size 个字节的原始二进制数据。最大大小为 2,000 个字节。

必须指定 RAW值的大小。

• ROWID:Base 64 字符串,表示某一行在数据库中的唯一地址。这种数据类型主要用

于 ROWID伪列返回的值。

• UROWID:Base 64 字符串,表示某一行在索引表中的逻辑地址。可选大小为

UROWID类型的列的大小。最大大小及默认大小均为 4,000 个字节。

• BLOB:二进制大对象。

• CLOB:字符大对象,包含单字节字符或多字节字符。支持固定宽度字符集和可变宽

度字符集,这两种字符集都使用 CHAR数据库字符集。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 196: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

指定表中的数据类型(续)

• NCLOB:字符大对象,包含 Unicode 字符。支持固定宽度字符集和可变宽度字符集,

这两种字符集都使用 NCHAR数据库字符集。这种数据类型用于存储国家字符集数据。

注:所有 LOB 数据类型(BLOB、CLOB和 NCLOB)的最大大小为:

(4 GB – 1) * (CHUNK值)。CHUNK是定义 LOB 时可设置的可选属性。CHUNK指定了要为 LOB 操作分配的字

节数。如果字节大小不是数据库块大小的倍数,那么数据库会将字节大小舍入为下

一个倍数。例如,如果数据库块大小为 2,048,CHUNK大小为 2,050,数据库会分配

4,096 字节(2 个块)。最大值为 32,768 (32 KB),这是允许的 Oracle 数据库块最大

大小。默认的 CHUNK大小为 1 个 Oracle 数据库块。

• BFILE:BFILE数据类型包含到存储在数据库之外的大型二进制文件的定位符。通

过这种数据类型可以字节流 I/O 方式访问驻留在数据库服务器上的外部 LOB。最大

大小为 4 GB。• TIMESTAMP(fractional_seconds_precision):使用这种数据类型可指定

日期中的年、月和日,以及时间中的小时、分钟和秒。其中

fractional_seconds_precision 是秒小数部分的位数。可接受值为 0 至 9。默认值为 6。

有关内置数据类型和用户定义类型的完整列表,请参阅《Oracle 数据库 SQL 参考》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 197: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建和修改表

指定表名和方案。

指定列名、数据类型和长度。

创建和修改表

表是 Oracle 数据库中基本的数据存储单位。表保存了用户可访问的所有数据。每个表均

包含若干列和行。

创建表

要使用 Enterprise Manager 创建表,请执行以下步骤:

1. 在“Administration(管理)”页的“Schema(方案)”区域中单击“Tables(表)”。此时会出现“Tables(表)”页。

2. 如果知道方案名,请在“Search(搜索)”区域的“Schema(方案)”字段中输入

完整或部分方案名。如果不知道方案名,请单击“Schema(方案)”字段旁边的手

电筒图标。此时会出现“Search and Select: Schema(搜索和选择:方案)”窗口。

浏览方案名并选择要查找的方案。

3. 单击“Create(创建)”。此时会显示“Create Table: Table Organization(创建表:

表组织)”页。

4. 单击“Continue(继续)”,接受“Standard, Heap Organized(标准,按堆组织)”

默认值。此时会出现“Create Table(创建表)”页。

5. 在“Name(名称)”字段中输入表名。

6. 在“Schema(方案)”字段中输入方案名,或单击手电筒图标调用搜索功能。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 198: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

创建和修改表(续)

7. 在“Tablespace(表空间)”字段中输入表空间名,或单击手电筒图标调用搜索功能。

8. 在“Columns(列)”区域中输入列名和数据类型。

9. 单击“OK(确定)”。此时会出现更新信息,指出已成功创建了表。

修改表

可以使用 Enterprise Manager 来修改表,步骤如下:在本示例中,要在表中添加一列。

1. 在“Tables(表)”页中,选择结果列表中的表,然后单击“Edit(编辑)”。

2. 在“Edit Table(编辑表)”页中,单击“Add 5 Table Columns(添加 5 个表列)”

按钮。此时会出现一个包含可编辑列的列表。

3. 输入新列名、数据类型和大小。

4. 单击“Apply(应用)”。此时会显示更新信息,指出已成功修改了表。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 199: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

了解数据完整性

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

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

DEPARTMENTSDEPARTMENT_ID (PK)DEPARTMENT_NAMEMANAGER_IDLOCATION_ID (FK)

JOBSJOB_ID (PK)JOB_TITLEMIN_SALARYMAX_SALARY

REGIONSREGION_ID (PK)REGION_NAME

COUNTRIESCOUNTRY_ID (PK)COUNTRY_NAMEREGION_ID (FK)

LOCATIONSLOCATION_ID (PK)STREET_ADDRESSPOSTAL_CODECITYSTATE_PROVINCECOUNTRY_ID (FK)

方案> 约束条件

索引视图序列临时表数据字典

了解数据完整性

可以使用下列完整性约束条件强制对输入的列值设置限制。

• NOT NULL(非空):默认情况下,表中的所有列均允许空值。Null 指没有值。NOT NULL约束条件要求表列必须包含非空值。例如,可以定义 NOT NULL约束条件要

求在 EMPLOYEES表的每一行的 LAST_NAME列中输入值。

• UNIQUE Key(唯一键):UNIQUE键完整性约束条件要求一列或一组列(键)中

的每个值必须唯一,即在指定的列或一组列中,表任意两行的值均不重复。例如,

如果要禁止每行显示重复的部门名称,请对 DEPARTMENTS表的

DEPARTMENT_NAME列定义 UNIQUE键约束条件。除了特殊情况,这个约束条件与

唯一索引一起强制使用。

• PRIMARY KEY(主键):数据库中的每个表最多可包含一个 PRIMARY KEY约束

条件。在这个约束条件的限制下,单个列或一组列中的值就构成了行的唯一标识符。

事实上,每行的名称均由其主键值确定。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 200: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

了解数据完整性(续)

Oracle 服务器实施 PRIMARY KEY完整性约束条件可确保以下两个条件得到满足:

- 在指定列或一组列中,表的任意两行不出现重复值。

- 主键列不允许为空。也就是说,每行的主键列必须有一个值。

正常情况下,数据库通过使用索引来强制设置 PRIMARY KEY约束条件。通过隐式

创建以下各项,可强制实施为 DEPARTMENTS表中 DEPARTMENT_ID列创建的主键

约束条件:

- 对列中的唯一索引

- 该列的 NOT NULL约束条件

• 引用完整性约束条件:关系数据库中的各个表通过公用列相互关联,因此必须维护

用于管理列关系的规则。引用完整性规则可确保这些关系能够持续下去。

对于每个表行,引用完整性约束条件要求外键中的值必须与父键中的值匹配。

例如,对 EMPLOYEES表的 DEPARTMENT_ID列定义了一个外键。它可保证这一列

中的每个值一定与 DEPARTMENTS表主键中的值匹配。因此,在 EMPLOYEES表的

DEPARTMENT_ID列中不会存在错误的部门编号。

另一类引用完整性约束条件被称为自引用完整性约束条件。此类外键引用同一表中

的父键。

• 检查约束条件:单个列或一组列的 CHECK完整性约束条件要求为每个表行指定的条

件必须为真或未知。如果数据操纵语言 (DML) 语句对 CHECK约束条件的求值为假,

则会回退语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 201: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

定义约束条件

定义约束条件

要使用 Enterprise Manager 添加约束条件,请执行以下步骤:

1. 在“Tables(表)”页中选择表,然后单击“Edit(编辑)”。

2. 单击“Constraints(约束条件)”。此时会出现“Constraints(约束条件)”页,

显示为表定义的所有约束条件。

3. 从下拉列表中选择要添加的约束条件类型,然后单击“Add(添加)”。

4. 输入要定义的约束条件类型的相应信息。单击“OK(确定)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 202: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

违反约束条件

违反约束条件的示例包括:

• 插入重复的主键值

• 删除引用完整性约束条件中的子行的父行

• 更新后的列值超出了检查约束条件的范围

…103…102…101

101

X

5…16…49…22…

ID AGE

–30

违反约束条件

提交不符合约束条件的 DML 时就会出现违反约束条件的情况。违反约束条件的形式有

多种,其中包括:

• 唯一性:尝试在设置有唯一约束条件的列中使用重复值,例如,在某一列是主键,

或者该列已建立唯一索引的情况下使用重复值。

• 引用完整性:违反了具有父行的每个子行的规则。

• 检查:尝试在不遵循列定义规则的列中存储一个值。例如,AGE列可能具有强制将

其值设置为正数的检查约束条件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 203: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

约束条件状态

ENABLENOVALIDATE

ENABLEVALIDATE

现有数据

新数据

DISABLENOVALIDATE

DISABLEVALIDATE

无 DML

约束条件状态

为了更好地处理需要数据暂时违反约束条件的情况,可将约束条件指定为不同的状态。

可以启用 (ENABLE) 或禁用 (DISABLE) 完整性约束条件。如果启用约束条件,在数据库

中输入或更新数据时就会检查数据。此时,禁止输入不符合约束条件规则的数据。如果禁

用约束条件,则可以在数据库中输入不符合规则的数据。完整性约束条件可处于下列状态

之一:

• DISABLE NOVALIDATE • DISABLE VALIDATE • ENABLE NOVALIDATE • ENABLE VALIDATE

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 204: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

约束条件状态(续)

• DISABLE NOVALIDATE:不检查新数据和现有数据,因此这些数据可能不符合约

束条件。当数据来自验证过的源,而且表是只读表时,通常会使用此状态,这样就

不会在表中输入新数据。

• DISABLE VALIDATE:如果约束条件处于此状态,则不允许对受约束的列进行任何

修改,因为在验证现有数据后又允许将未经检查的数据输入表中,会出现不一致的

情况。在必须验证现有数据,但不希望修改数据,而且考虑到性能又不需要另外创

建索引时,通常会使用此状态。

• ENABLE NOVALIDATE:新数据符合约束条件,但现有数据处于未知状态。在可以

更正现有约束条件违规情况,同时又不允许将新的违规数据输入到系统中时,常常

会使用此状态。

• ENABLE VALIDATE:新数据与现有数据均符合约束条件。这是约束条件的典型状

态和默认状态。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 205: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

约束条件检查

案例:DML 语句后接 COMMIT

非延迟约束条件已检查

COMMIT已发出

延迟约束条件已检查

COMMIT已完成

1

3

2

4

检查约束条件的时机:

• 对于非延迟约束条件,在执行语句时

• 对于延迟约束条件,在发出 COMMIT 时

约束条件检查

可以将约束条件的有效性检查延迟到事务处理结束时。

非延迟约束条件又称即时约束条件,是在每个 DML 语句结束时强制执行的。违反约束条

件会导致回退语句。如果约束条件导致 delete cascade等操作,则认为该操作是导致

执行此操作的语句的一部分。定义为“非延迟”的约束条件不能更改为延迟约束条件。

延迟约束条件是提交事务处理时才检查的约束条件。如果在提交时检测到任何违反约束条

件的情况,则会回退整个事务处理。当同时输入外键关系中的父行和子行(如在订单录入

系统中,需要同时录入订单及订单项)时,这些约束条件非常有用。

按下列一种方式可指定将约束条件定义为“延迟”:

• “立即开始”,指定在默认情况下,约束条件必须用作即时约束条件,除非另外显

式进行了设置。

• “延迟开始”,指定在默认情况下,只在事务处理结束时强制实施约束条件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 206: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL 创建约束条件:示例

ALTER TABLE countries

ADD (UNIQUE(country_name) ENABLE NOVALIDATE);

ALTER TABLE employees ADD CONSTRAINT pk PRIMARY KEY

(employee_id)

CREATE TABLE t1 (pk NUMBER PRIMARY KEY, fk NUMBER, c1 NUMBER,

c2 NUMBER,

CONSTRAINT ri FOREIGN KEY (fk) REFERENCES t1, CONSTRAINT

ck1 CHECK (pk > 0 and c1 > 0));

a

c

b

使用 SQL 创建约束条件:示例

幻灯片中显示了创建约束条件的三个示例:

a. 执行此语句后,需要对 COUNTRIES表执行插入或更新操作,才能生成唯一的

COUNTRY_NAME值。但是,有可能在发出此语句后,表中已存在非唯一的

COUNTRY_NAME值。NOVALIDATE关键字指示应忽略这些值。仅新行受到约束条

件的约束。

b. 使用此语句可向雇员表添加主键。约束条件名称为 PK,主键为 EMPLOYEE_ID列。

c. 此语句用于在创建表时定义约束条件,而不是以后使用 ALTER TABLE语句进行定

义。RI约束条件强制使 FK列中的值必须存在于 T1表的主键列中。CK1约束条件

强制使 PK和 C1列大于零。

注:每个约束条件都有一个名称。如果 DDL 语句中没有提供名称,则分配系统提供的

名称,该名称以 SYS_开头。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 207: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看表中的列

查看表中的列

要使用 Enterprise Manager 查看表的属性,请执行以下步骤:

1. 在数据库管理页的“Schema(方案)”区域中,单击“Tables(表)”链接。

2. 从“Results(结果)”列表中选择表,单击“View(查看)”按钮可查看表的属性。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 208: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

查看表的内容

查看表的内容

要使用 Enterprise Manager 查看表中的行,请执行以下步骤:

1. 在“Tables(表)”页选择表。

2. 在“Actions(操作)”菜单中选择“View Data(查看数据)”,然后单击

“Go(开始)”。

此时会出现“View Data for Table(查看表数据)”页。“Result(结果)”区域中会显

示表的行数据。“Query(查询)”框会显示执行 SQL 查询后生成的结果。在这一页中,

单击任一列名,可按升序或降序对列中的数据进行排序。如果要更改查询,可单击

“Refine Query(优化查询)”按钮。在“Refine Query for Table(优化表查询)”页上,

可选择要显示的列,然后通过为 SQL 语句指定 WHERE子句来限制查询结果。

有关 SQL 语句中 WHERE子句的详细信息,请参阅《Oracle 数据库 SQL 参考》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 209: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

对表执行的操作

对表执行的操作

可以选择一个表,然后对该表执行操作。下面是其中的一些操作:

• Create Like(类似创建):使用此操作可创建与选定表具有相同结构的表。必须更

改约束条件名称。可以添加或删除列,还可在创建表之前对表结构进行其它更改。

• Create Index(创建索引):使用此选项可创建表的索引。

• Generate DDL(生成 DDL):生成表示已存在的表的 DDL。随后,可将此 DDL 复制到文本文件以用作脚本或进行归档。

• Grant Privileges(授予权限):默认情况下,创建表后,只有所有者才能对其执行

任何操作。其它用户若要对表执行 DML 甚至 DDL,所有者必须向这些用户授予

权限。

• Show Dependencies(显示相关性):显示此表依赖的对象,或依赖于此表的对象。

• View Data(查看数据):以只读方式选择和显示表中的数据。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 210: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

删除表

删除表时会删除:

• 数据

• 表结构

• 数据库触发器

• 相应的索引

• 关联的对象权限

DROP TABLE 语句的可选子句:

• CASCADE CONSTRAINTS:相关的引用完整性约束

条件

• PURGE:无法闪回

DROP TABLE hr.employees PURGE;

删除表

语法:DROP TABLE [schema.] table [CASCADE CONSTRAINTS] [PURGE]

DROP TABLE命令可删除数据、表结构和关联的对象权限。使用 DROP TABLE的一些注

意事项如下:

• 如果不使用 PURGE子句,则会将表定义、关联索引和触发器放置在回收站中。表数

据仍然存在,但在没有表定义的情况下无法进行访问。如果使用 Enterprise Manager 删除了表,则不需要使用 PURGE子句。

• 使用 FLASHBACK TABLE命令可从回收站恢复方案对象。PURGE RECYCLEBIN命

令可用于清空回收站。

• 需要使用 CASCADE CONSTRAINTS选项才能删除所有相关的引用完整性约束条件。

注:如果不使用 PURGE选项,表及表索引所占用的空间仍不会计入相关表空间的用户可

用限额之内。也就是说,仍将这些空间视为已占用。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 211: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

截断表

• 截断表会使表的行数据不可用,从而可以选择释放占用

空间。

• 相应的索引也会被截断。

TRUNCATE TABLE hr.employees;

截断表

语法:TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]

使用此命令会产生以下影响:

• 通过将高水位标记 (HWM) 设置到表开头,使表行不可用,将表标记为空。

• 由于 TRUNCATE TABLE是 DDL 命令,因此不会生成还原数据,而且会隐式提交

命令。

• 相应的索引也会被截断。

• 不会截断外键引用的表。

• 使用此命令时不会触发删除触发器。

要删除所有表行,这种方式通常比发出 DELETE语句的速度要快很多倍,原因如下:

• Oracle 数据库重置表的 HWM,而不是像 DELETE操作那样处理每一行。

• 不生成还原数据。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 212: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

索引

22

22

索引 表

键 行指针

… WHERE key = 22

方案约束条件

> 索引视图序列临时表数据字典

索引

索引是与表关联的可选结构。创建索引可提高更新和检索数据的性能。Oracle 索引提供了

到数据行的直接访问路径。

可以对表的一个或多个列创建索引。创建索引后,Oracle 服务器会自动维护和使用索引。

表数据的更新(如添加新行、更新行或删除行)会自动传播到所有相关的索引,这些对用

户来说是完全透明的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 213: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

索引类型

您可以根据需要使用几种类型的索引结构:

• B 树索引采用二进制树的形式,它是默认的索引类型。

• 在位图索引中,每个建立索引的独特值都有一个位图,

每一位的位置都表示一行,其中可能包含(也可能不包

含)索引值。对于低基数列而言,这是最佳结构。

索引类型

下面是最常见的索引形式:

• B 树• 位图

B 树索引的键值存储在平衡树(B 树)中,以提供快速的二进制搜索。

在位图索引中,每个要建立索引的独特键值都有一个位图。在每一位图中,为要建立索引

的表中的每一行都保留了一位。这样,独特值很少时可快速进行查找;也就是说,索引列

的基数较低。性别指示器就是这种索引的一个示例。这种指示器只包含值“M”和“F”,

因此,只需要搜索两个位图。再举例说,如果对 phone_number列使用位图索引,则需

要管理和搜索太多的位图,这种情况下效率非常低。所以,请对低基数列使用位图索引。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 214: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

B 树索引

索引条目头

键列长度

键列值

ROWID

分支

索引条目

B 树索引

B 树索引的结构

索引的顶层为根,它包含指向索引中下一层次的条目。下一层次为分支块,它又指向位于

索引中下一层次的块。位于最低层次的是叶节点,它包含指向表行的索引条目。叶块在

两个方向都是相互关联的,这便于按键值升序或降序扫描索引。

索引叶条目的格式

索引条目包括下列组成部分:

• 条目头,用于存储列数和锁定信息。

• 键列长度-值对,用于定义键中的列大小,后面跟着列值(这种对的数目就是索引中

的最大列数)。

• 包含键值的行的 ROWID。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 215: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

B 树索引(续)

索引叶条目的特性

在非分区表的 B 树索引中:

• 当多个行具有相同的键值时,如果不压缩索引,键值会出现重复。

• 当某行包含的所有键列为 NULL时,该行没有对应的索引条目。因此,当 WHERE子句指定了 NULL时,始终会导致全表扫描。

• 因为所有行属于同一个段,所以要使用受限的 ROWID指向表行。

对索引执行 DML 操作的效果

对表执行 DML 操作时,Oracle 服务器会维护所有索引。下面说明对索引执行 DML 命令

所产生的效果:

• 执行插入操作会导致在相应块中插入索引条目。

• 删除一行只会导致对索引条目进行逻辑删除。在删除块中的所有条目之前,已删除

行占用的空间不可用于新条目。

• 更新键列会导致对索引进行逻辑删除和插入。PCTFREE设置对索引没有影响,

但创建时除外。即使索引块的空间少于 PCTFREE指定的空间,也可以向索引块

添加新条目。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 216: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

位图索引

<Blue, 10.0.3, 12.8.3, 1000100100010010100>

<Green, 10.0.3, 12.8.3, 0001010000100100000>

<Red, 10.0.3, 12.8.3, 0100000011000001001>

<Yellow, 10.0.3, 12.8.3, 0010001000001000010>

键开始ROWID

结束ROWID 位图

索引

块 10

块 11

块 12

文件 3

位图索引

在以下特定情况下,位图索引比 B 树索引更有优势:

• 表具有数百万行且键列的基数较低时,也就是列的独特值极少时。例如,对于护照

记录表中的性别和婚姻状况列,位图索引可能比 B 树索引更可取。

• 经常使用涉及 OR 运算符的多个 WHERE 条件组合进行查询时。

• 键列上存在只读活动或较少更新活动时。

位图索引的结构

位图索引也可以按 B 树形式进行组织,但是,叶节点会存储每个键值的位图,而不是

ROWID列表。位图中每一位都对应于一个可能的 ROWID,如果已设置该位,则表示具有

对应 ROWID的行包含键值。

如图所示,位图索引的叶节点包含:

• 条目头,其中包含列数和锁定信息

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 217: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

位图索引(续)

位图索引的结构(续)

• 由每个键列的长度-值对组成的键值。在本示例中,键只包含一列,第一个条目的

键值为 Blue 。• 开始 ROWID,在本示例中它指定块号 10、行号 0 和文件号 3。• 结束 ROWID,在本示例中它指定块号 12、行号 8 和文件号 3。• 由位字符串组成的位图段。(如果对应行包含键值,则会设置位;如果对应行不包

含键值,则不会设置位。Oracle 服务器使用已获专利的压缩技术存储位图段。)

开始 ROWID是位图中位图段指向的第一行 ROWID,就是说,位图的第一个位对应于该

ROWID,位图的第二个位对应于块中的下一行。结束 ROWID是一个指针,它是指向由位

图段覆盖的表中的最后一行。位图索引使用受限的 ROWID。

使用位图索引

B 树用于定位叶节点,这些节点包含指定键值的位图段。开始 ROWID和位图段用于定位

包含键值的行。

更改了表中的键列后,也必须更改位图。这会导致相关的位图段处于锁定状态。由于锁是

在整个位图段上获得的,因此,在第一个事务处理结束之前,位图覆盖的行不能由其它事

务处理进行更新。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 218: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

索引选项

• 唯一索引可确保每个索引值是唯一的。

• 索引可按升序或降序存储其键值。

• 反向键索引以反向顺序存储其键值字节。

• 组合索引是基于多列的索引。

• 基于函数的索引是以函数返回值为基础的索引。

• 在压缩的索引中重复的键值已被删除。

索引选项

为了提高检索效率,在索引中按降序存储键可能更有益。这是根据最常用的数据访问方式

得出的结论。

反向键索引会按反向顺序存储索引值的字节。这可以减少索引中特定热点的活动量。如果

多个用户正按同一顺序处理数据,那么在任何给定时刻,(当前正在处理的)键值的前缀

部分是很接近。因此,在索引结构的该区域中会发生大量的活动。为反向字节样式的键值

建立索引后,反向键索引会将这些活动分布到整个索引结构中。

按多列组合创建的索引称为组合索引。例如,根据一个人的姓与名可创建一个索引:CREATE INDEX name_ix ON employees (last_name, first_name);

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 219: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

索引选项(续)

使用基于函数的索引可为函数返回值创建索引。这个函数可以是一个内置 SQL 函数、外

部提供的 PL/SQL 函数,或用户编写的函数。这样一来,服务器根据索引表达式执行搜索

时,不必为每个键值调用函数。以下示例为返回的树木材积建立索引,树木材积由函数根

据每一种树的树种、高度和树围(这些是 TREES表中的列)进行计算:CREATE INDEX tree_vol_ix ON TREES(volume(species,height,circumference));

然后,WHERE子句中包含表达式 volume(species,height,circumference)的任

何查询都能利用此索引,从而提高了执行速度,因为每一种树的材积已被计算出来。像普

通索引一样,基于函数的索引自动进行维护。

使用压缩索引可减少执行过程中占用的磁盘空间。由于删除了重复的键值,指定的磁盘空

间量可以容纳更多的索引条目,因此,相同的时间段内可以从磁盘读取更多的条目。必须

分别在写入索引和读取索引时执行压缩和解压缩。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 220: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建索引

CREATE INDEX my_index ON

employees(last_name, first_name);

创建索引

可以在“Administration(管理)”页的“Schema(方案)”标题下单击“Indexes(索

引)”链接,以查看“Indexes(索引)”页。可查看索引属性,或使用“Actions(操

作)”菜单查看索引的相关性。

根据对表设置的约束条件,可显式或隐式建立索引。定义主键就是隐式建立索引的一个

示例,此时为了对列强制实施唯一性,会自动建立唯一索引。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 221: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

什么是视图

CREATE VIEW v AS SELECT location_id, country_name

FROM locations l, countries c

WHERE l.country_id = c.country_id AND c.country_id

in ('AU','BR');

COUNTRY 表

LOCATION 表

视图

方案约束条件索引

> 视图…

什么是视图

视图是一个或多个表中或其它视图中的数据的自定义表示方式。由于视图可隐藏极其复杂

的条件、联接,以及其它复杂表达式和 SQL 构造,所以可认为视图是存储的查询。实际

上,视图并不包含数据,它们从所基于的表中获取数据。这些表称为视图的基表。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 222: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建视图

创建视图

像表一样,可以按照某些限制条件对视图执行查询、更新、插入和删除操作。对视图执行

的所有操作实际上都会影响到视图的基表。通过限制对表中预定义的一组行和列进行访问,

视图还提高了安全级别。此外,视图不仅可隐藏数据复杂性,还可存储复杂查询。

要查看数据库中定义的视图,请单击“Administration(管理)”页上“Schema(方案)”

标题下的“Views(视图)”链接。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 223: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

序列

序列是按照某种模式自动生成整数的一种机制。

• 序列具有名称,表明了请求下一个值时

引用序列的方式。

• 序列不与任何特定的表或列相关联。

• 增长方式可为升序,也可为降序。

• 编号之间的间隔可为任意大小。

• 达到限额时,序列可循环使用。

12345

方案约束条件索引视图

> 序列临时表数据字典

序列

要检索序列中的下一个值,请根据其名称引用它;序列与表或列之间没有关联。

如果没有将序列定义为循环序列,则指定编号出现后,不会再次出现。有时,应用程序会

请求一个值,但是数据库中从未使用过或存储过该值。这可能造成存储编号的表中包含不

连续的编号。

缓存序列号可以改善性能,因为为了加速访问,内存中预分配了一组编号。如果实例失败,

就不会使用任何缓存的序列号,这会造成序列号不连续。

注:如果应用程序要求序列号必须是连续的,那么应用程序应实施一个自定义编号生成器。

但是,此方法会导致性能下降。如果使用一个表存储一个值,而且每次请求后该值都会递

增,该表也会进行更新,那么这个进程会成为系统范围内的一个瓶颈。这是因为每个会话

都必须等待该机制,而为了确保不出现重复或不连续,该机制每次只能处理一个请求。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 224: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建序列

创建序列

通过在“Administration(管理)”页的“Schema(方案)”标题下单击“Sequences(序

列)”链接,可使用 Enterprise Manager 查看并创建序列。下面扼要叙述了序列创建选项:

• Name(名称):序列的名称,表示序列的引用方式。

• Schema(方案):序列的所有者。

• Maximum Value(最大值):指定序列可以生成的最大值。这是一个整数值,不能

超过 28 位数。它必须大于“Minimum Value(最小值)”和“Initial(初始值)”。

如果使用“Unlimited(无限制)”,则表示升序序列的最大值为 1027,降序序列的

最大值为 –1。默认值为“Unlimited(无限制)”。

• Minimum Value(最小值):指定序列的最小值。这是一个整数值,不能超过 28 位数。它必须小于或等于“Initial(初始值)”,且小于“Maximum Value(最大

值)”。如果使用“Unlimited(无限制)”,则表示升序序列的最小值为 1,降序序

列的最小值为 –1026。默认值为“Unlimited(无限制)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 225: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

创建序列(续)

• Interval(间隔):指定序列号之间的间隔。这个整数值可以是任意正整数或负整数,

但不能为零。它不能超过 28 位数。默认值为 1。• Initial(初始值):指定要生成的第一个序列号。使用此子句可按一个大于最小值的

值开始一个升序序列,或以一个小于最大值的值开始一个降序序列。

• Cycle Values(循环值):升序序列达到序列最大值后,会生成序列最小值。降序序

列达到序列最小值后,会生成序列最大值。如果没有选择此选项,则在检索值时若

序列已用尽就会返回错误。

• Order Values(顺序值):此选项可确保按请求顺序生成序列号。如果使用序列号作

为时间戳,则可以使用此子句。对用于生成主键的序列而言,确保顺序通常不重要。

如果使用安装了 Real Application Clusters 的 Oracle 数据库,仅在要确保按顺序生成

序列的情况下才需要此选项。

• Cache Options(缓存选项):指定为了加速访问,Oracle 数据库在内存中预分配并

保留的序列值的数量。这是一个整数值,不能超过 28 位数。此参数的最小值为 2。对循环序列而言,此值必须小于循环中的值的数量。因为缓存的值的数量不能多于

指定序列数字循环中可以容纳的数量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 226: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用序列

使用序列

请引用使用下列伪列的 SQL 语句中的序列值:

• CURRVAL:返回序列的当前值

• NEXTVAL:递增序列,返回下一个值

必须根据序列名称确认 CURRVAL和 NEXTVAL:sequence.CURRVAL sequence.NEXTVAL

首次引用 NEXTVAL会返回序列的初始值。对 NEXTVAL的后续引用会按照定义增量递增

序列值,并返回新值。对 CURRVAL的任何引用永远返回序列的当前值,它是上次引用

NEXTVAL所返回的值。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 227: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

临时表

临时表:

• 会话或事务处理结束时会自动清除存储数据

• 为每个会话提供专用数据存储

• 可供所有会话使用,而不影响各个会话的专用数据

方案约束条件索引视图序列

> 临时表数据字典

临时表

如果需要存储专用数据以执行某一任务,而且要在执行该任务后,事务处理或会话结束时

清除数据,则可以利用临时表。临时表提供了这种功能,这样您不必在其它会话中隐藏数

据,也不必在结束时删除所生成的数据。对于某一会话来说,唯一可见的临时表数据是该

会话已经插入的数据。

临时表可专用于事务处理,也可专用于会话。对于专用于事务处理的临时表而言,数据存

在于事务处理期间;对于专用于会话的临时表而言,数据存在于会话期间。在这两种情况

下,会话插入的数据专用于会话。每个会话仅可查看和修改自己的数据。因此,临时表的

数据从不会获得 DML 锁。下列子句控制着行的生存期:

• ON COMMIT DELETE ROWS:指定插入行的生存期仅为事务处理的持续时间

• ON COMMIT PRESERVE ROWS:指定插入行的生存期为会话的持续时间

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 228: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

临时表(续)

使用 CREATE GLOBAL TEMPORARY TABLE语句可创建临时表。在临时表中可以创建索

引、视图及触发器,还可以使用“Export and Import(导出和导入)”或“Data Pump(数

据泵)”导出和导入临时表的定义。但是,即使使用了 ROWS选项,也不会导出数据。

除了上述已经提到的会导致删除数据的事件,还可以使用 TRUNCATE TABLE命令有效地

强制删除数据。使用这个命令可删除所有已插入的数据。使用这个命令比使用 DELETE命令更有效。

在临时表中可以创建索引、视图及触发器。

单击“Create Table: Table Organization(创建表:表组织)页上的“Temporary(临时)”

选项,可以使用 Enterprise Manager 创建临时表。单击“Continue(继续)”,在下一页

中可指定临时表是专用于会话还是专用于事务处理。“Tablespace(表空间)”字段处于

禁用状态,因为总是在用户的临时表空间中创建临时表;不能指定其它表空间。

注:GLOBAL关键字是基于国际标准化组织 (ISO) 在 SQL 标准中指定的术语建立的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 229: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

临时表:注意事项

• 使用 GLOBAL TEMPORARY 子句创建临时表:

• 使用 TRUNCATE TABLE 命令删除表内容。

• 在临时表中可创建下列项:

– 索引

– 视图

– 触发器

CREATE GLOBAL TEMPORARY TABLE employees_temp

ON COMMIT PRESERVE ROWS

AS SELECT * FROM employees;

临时表:注意事项

使用 CREATE GLOBAL TEMPORARY TABLE语句可创建临时表。在临时表中可以创建索

引、视图及触发器,还可以使用“Export and Import(导出和导入)”或“Data Pump(数

据泵)”导出和导入临时表的定义。但是,即使使用了 ROWS选项,也不会导出数据。

除了上述已经提到的会导致删除数据的事件,还可以使用 TRUNCATE TABLE命令有效地

强制删除数据。使用这个命令可删除所有已插入的数据。使用这个命令比使用 DELETE命令更有效。

注:GLOBAL关键字是基于国际标准化组织 (ISO) 在 SQL 标准中指定的术语建立的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 230: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据字典:概览

SELECT * FROM dictionary;

索引

视图

用户

方案

过程

等等

方案约束条件索引视图序列临时表

> 数据字典

数据字典:概览

Oracle 的数据字典是对数据库的描述,其中包含了数据库中所有对象的名称和属性。创建

或修改任何对象都会导致对数据字典进行更新,以反映相应的更改。这些信息存储在由

Oracle 数据库维护的基表中,不过,可以使用预定义视图访问这些表,而不用直接读取表。

数据字典:

• 由 Oracle 数据库服务器使用,可用于查找关于用户、对象、约束条件和存储的信息

• 对象结构或定义发生更改时,由 Oracle 数据库服务器进行维护

• 可供任何用户用来查询关于数据库的信息

• 由 SYS用户所有

• 不得使用 SQL 直接进行修改

注:DICTIONARY数据字典视图或其 DICT同义词包含了数据字典中所有对象的名称和

说明。使用 DICT_COLUMNS视图可查看视图列及其定义。有关各种视图的完整定义,

请参阅“Oracle 数据库参考”文档。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 231: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据字典视图

ALL_ 视图

DBA_ 视图

下列项的

子集

除了缺少 OWNER 列,

通常与 ALL_ 相同。

某些视图有像 PUBLIC别名一样的简称

用户拥有的

所有对象

每个用户USER_

包括用户拥有的对象用户有权查看

的所有对象

每个用户ALL_

可能有其它仅限 DBA 使用的列

所有对象DBADBA_

注释内容谁可以查询

数据字典视图

视图前缀表明了指定用户可查看的数据类型或数据量。使用 DBA_前缀时,只有拥有

DBA 权限的用户才能访问全局视图的所有对象。下一个权限级别是 ALL_前缀级别,它

表示查询用户有权查看的所有对象,无论用户是否拥有这些对象。例如,如果 USER_A有权访问 USER_B所拥有的表,那么 USER_A会看到列在与表名称有关的任何 ALL_视

图中的表。前缀 USER_代表最小的可视范围。只显示查询用户所拥有的对象;即存在于

用户自己方案中的对象。

一般情况下,每个视图集都是拥有更高授权的视图集的子集,无论按行还是按列。并不是

指定视图集中的所有视图在其它视图集中都有一个对应的视图。这取决于视图中信息的性

质。例如,有一个 DBA_LOCK视图,但是并不存在 ALL_LOCK视图。这是因为只有 DBA 才对与锁有关的数据感兴趣。因此,为了满足需要,应确保选择了适当的视图集。如果您

有权访问 DBA视图,则仍可能要仅查询 USER版本的视图,因为您知道它属于自己,并

且不希望在您的结果集中添加其它对象。

拥有 SYSDBA或 SELECT ANY DICTIONARY权限的用户可查询 DBA_视图。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 232: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据字典:用法示例

SELECT USERNAME, ACCOUNT_STATUS FROMdba_users WHERE ACCOUNT_STATUS = 'OPEN';

SELECT table_name, tablespace_name FROM user_tables;

SELECT sequence_name, min_value, max_value, increment_by FROM all_sequences WHERE sequence_owner IN ('MDSYS','XDB');

a

b

c

DESCRIBE dba_indexes;d

静态数据字典:用法示例

幻灯片示例显示的查询回答了以下问题:

a. 方案中已创建的表的名称(以及表所在表空间的名称)是什么?

b. 有关您有权访问的数据库中任一序列的重要信息是什么?

c. 在此数据库中当前哪些用户可以登录?

d. DBA_INDEXES视图有哪些列?这会显示您在数据库中可以查看的有关所有索引的

信息。下面列出了此命令的部分输出:SQL> DESCRIBE dba_indexes; Name Null? Type --------------- -------- -------------OWNER NOT NULL VARCHAR2(30) INDEX_NAME NOT NULL VARCHAR2(30) INDEX_TYPE VARCHAR2(27) TABLE_OWNER NOT NULL VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 233: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 定义方案对象和数据类型

• 创建和修改表

• 定义约束条件

• 查看表列和表内容

• 创建索引

• 创建视图

• 创建序列

• 说明临时表的用法

• 使用数据字典

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 234: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理方案对象

本练习包含以下主题:

• 创建包含列的表

• 创建约束条件:

– 主键

– 外键

– 检查约束条件

• 创建索引

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 235: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理数据和并发处理

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 236: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 使用 SQL 管理数据

• 识别和管理 PL/SQL 对象

• 描述触发器和触发事件

• 监视和解决锁定冲突

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 237: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

通过 SQL 处理数据

SQL> INSERT INTO employees VALUES2 (9999,'Bob','Builder','[email protected]',NULL,SYSDATE,3 'IT_PROG',NULL,NULL,100,90);

1 row created.

SQL> UPDATE employees SET SALARY=60002 WHERE EMPLOYEE_ID = 9999;

1 row updated.

SQL> DELETE from employees2 WHERE EMPLOYEE_ID = 9999;

1 row deleted.

> SQL PL/SQL锁定

通过 SQL 处理数据

在数据库中使用基本数据操纵语言 (DML) 语句来处理数据。“移动数据”一课已简要说明

了这些语句,本课将进行详细讨论。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 238: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

INSERT 命令

• 一次创建一行。

• 插入另一个表中的多行。

INSERT 命令

使用基本的 INSERT语句一次可创建一行。如果使用所谓的子选择,则可以使用 INSERT命令将一个表中的若干行复制到另一个表。这种方法又称为 INSERT SELECT语句。幻

灯片示例使用的是以下 INSERT命令:insert into dept_80 (select * from employees where department_id = 80);

这种情况下,dept_80表拥有与 employees表完全相同的结构。如果不是这种情况,

则可命名每个表中的列。SELECT语句中选择的各个值与要插入的表中的各个列相关联。

列值按 INSERT和 SELECT语句中指定的顺序进行匹配。只要数据类型完全匹配即可。

例如:insert into just_names (first, last) (select first_name, last_name from employees);

其中 just_names表中仅有的两列的数据类型与 employees表中 first_name和

last_name列的数据类型相同。

使用 INSERT SELECT方法可将一个或多个表中的大量数据装入到另一个表中。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 239: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

UPDATE 命令

使用 UPDATE 命令可更改表的零行或多行。

UPDATE 命令

UPDATE命令用于修改表中的现有行。UPDATE命令所修改的行数取决于 WHERE条件。

如果省略了 WHERE子句,则会更改所有行。如果所有行都不满足 WHERE条件,则不修改

任何行。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 240: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

DELETE 命令

使用 DELETE 命令可从表中删除零行或多行。

DELETE 命令

DELETE命令用于从表中删除现有行。DELETE命令所修改的行数取决于 WHERE条件。

如果省略了 WHERE子句,则删除所有行。如果所有行都不满足 WHERE条件,则不删除任

何行。注意,此示例中未删除任何行,这并不表示出现了错误;返回的消息仅表明从表中

删除了零行。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 241: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

MERGE 命令

使用 MERGE 命令可通过一个命令同时执行 INSERT 和

UPDATE 操作。

MERGE 命令

使用 MERGE命令可在一个命令中执行 UPDATE和 INSERT。可将一个源中的数据合并到

另一个源,因而可选择插入新行和更新特定列(如果行已经存在)。

请考虑以下示例。JOBS表中的某些数据如下所示:

JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- -------------- ---------- ----------AD_PRES President 20000 40000 FI_ACCOUNT Accountant 4200 9000 ST_CLERK Stock Clerk 2000 5000 IT_PROG Programmer 4000 10000

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 242: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

MERGE 命令(续)

以下是 JOBS_ACQUISITION表的内容:

JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- -------------- ---------- ----------AD_PRES VP 20000 40000 DBA DB Admin 4200 9000 SA Sys Admin 2000 5000

使用 MERGE命令可将具有新 JOB_ID的所有行插入到 JOBS表中,如果 JOB_ID已存在,

则使用 JOB_TITLE更新现有 JOBS行。结果“President”职位更改为“VP”,并且添加

了新职务“SA”和“DBA”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 243: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

COMMIT 和 ROLLBACK命令

下面的命令用于结束事务处理:

• COMMIT:使更改成为永久性更改

• ROLLBACK:撤消更改

COMMIT 和 ROLLBACK 命令

默认情况下,不会提交输入的每个 DML 命令。几个工具(包括 iSQL*Plus)提供了一些

选项,使用这些选项可以基于每个命令进行提交,或基于一组命令进行提交。

在发出 COMMIT或 ROLLBACK之前,更改处于暂挂状态。仅执行更改的用户可以查看更

改后的数据。其他用户可选择相同数据,但只能看到更改之前的数据。其他用户不能对别

的用户已更改的数据发出 DML。

默认情况下,当一个用户尝试更改另一个用户正更改的行时,此用户必须等待,直到执行

更改的用户提交或回退更改为止。这由 Oracle 数据库的锁定机制自动进行控制。由于锁

定机制已经内置到行中,所以数据库绝不会用完锁。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 244: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

PL/SQL

Oracle 对 SQL 的过程语言扩展 (PL/SQL) 是第四代编程

语言 (4GL)。它提供了以下功能:

• 对 SQL 的过程扩展

• 平台和产品间的可移植性

• 更高级别的安全性和数据完整性保护

• 支持面向对象的编程

SQL > PL/SQL

锁定

PL/SQL PL/SQL 是 Oracle 专有的第四代编程语言,它提供了对 SQL 的过程扩展。PL/SQL 为Oracle 数据库和应用程序提供了一种公共编程环境,适用于所有操作系统或硬件平台。

借助 PL/SQL,可以使用 SQL 语句处理数据,并且还可以使用过程结构(如 IF-THEN、CASE和 LOOP)控制编程流。另外,还可以声明常量和变量,定义过程和函数,使用集

合和对象类型,以及使用陷阱来捕获运行时错误。在 PL/SQL 程序中还可调用使用其它语

言(如 C、C++ 和 Java)编写的程序。

PL/SQL 还提供了数据保护功能。调用方不必知道要读取或处理的数据结构便可进行调用。

另外,调用方不必具有访问这些对象的权限,只需要具有执行 PL/SQL 程序的权限就足够

了。可以选择使用另一种模式的权限来调用 PL/SQL,这种情况下,调用方必须有权执行

调用程序运行期间执行的每个语句。

因为 PL/SQL 代码在数据库内部运行,所以这种代码在执行数据量巨大的操作时非常有效,

并且可最大程度地降低应用程序的网络通信量。

有关 PL/SQL 的过程结构和用法的详细信息,请参阅《PL/SQL 用户指南与参考》中的

文档。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 245: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理 PL/SQL 对象

数据库管理员应可以:

• 找出存在问题的 PL/SQL 对象

• 建议适当的 PL/SQL 用法

• 将 PL/SQL 对象装入到数据库中

• 协助 PL/SQL 开发人员诊断故障

管理 PL/SQL 对象

作为 DBA,您通常不负责将 PL/SQL 代码装入到数据库中,也不负责协助开发人员诊

断故障。另外,通常不要求 DBA 使用 PL/SQL 来编写应用程序,但作为 DBA 应对不

同的 PL/SQL 对象有足够的了解,才能为应用开发人员提供建议,也才能找出存在问题的

对象。

在 Database Control 中,单击“Schema(方案)”中的“Administration(管理)”标签可

访问 PL/SQL 对象。单击对象类型时,可查看、修改和创建选定 PL/SQL 对象的类型。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 246: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

PL/SQL 对象

PL/SQL 数据库对象有多种类型:

• 程序包

• 程序包体

• 类型主体

• 过程

• 函数

• 触发器

PL/SQL 对象

• 程序包:程序包是由逻辑上相关的一些过程和函数组成的集合。程序包的这一部分

又称为说明,用于描述应用程序的接口;它声明了可供使用的类型、变量、常量、

异常错误、游标和子程序。

• 程序包体:程序包体完整地定义了游标和子程序,因此实施了说明。程序包体包含

实施明细和专用声明,这些内容不显示给调用方。

• 类型主体:类型主体是由与用户定义的数据类型相关联的一些方法(过程和函数)

组成的集合。有关用户定义的数据类型的详细信息,请参阅《Oracle 数据库应用程

序开发者指南:对象关系功能部件》。

• 过程:过程是用于执行特定操作的 PL/SQL 块。

• 函数:函数是使用 RETURN PL/SQL 命令返回单个值的 PL/SQL 块。它是具有返回值

的过程。

• 触发器:触发器是当数据库中发生特定事件时执行的 PL/SQL 块。这些事件可以基于

表,如在表中插入行时。也可以是数据库事件,如在用户登录数据库时。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 247: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

函数

函数

PL/SQL 函数通常用于计算值。有许多内置函数,如 SYSDATE、SUM、AVG和 TO_DATE。开发人员还可在编写应用程序时创建自己的函数。PL/SQL 函数的代码中必须包含

RETURN语句。如幻灯片所示,PL/SQL 函数是在输入名称、方案和源代码后创建的。

幻灯片中显示的 compute_tax函数是使用以下 SQL 命令创建的:CREATE OR REPLACE FUNCTION compute_tax (salary NUMBER) RETURN NUMBER AS BEGIN

IF salary<5000 THEN RETURN salary*.15;

ELSE RETURN salary*.33;

END IF; END; /

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 248: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

过程

• 用于执行特定操作

• 使用参数列表传入和传出值

• 可以使用以下命令进行调用:

– CALL命令(属于 SQL 语句)

– EXECUTE命令(属于 SQL*Plus 命令)

过程

PL/SQL 过程用于执行特定操作。与函数一样,过程可接受输入值,执行 IF-THEN、CASE和 LOOP等条件语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 249: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

程序包

程序包是由函数和过程组成的集合。每个程序包应由两个

对象组成:

• 程序包说明

• 程序包体

程序包说明

程序包

程序包是函数与过程的组合。将一些函数和过程组成一个程序包,性能和可维护性会有所

提高。每个程序包应由两个独立编译的数据库对象组成:

• 程序包说明:这个对象(有时称为程序包头)的对象类型为 PACKAGE,其中只包含

程序包中的过程、函数和变量的定义。

• 程序包体:这个对象的对象类型为 PACKAGE BODY,包含程序包说明中定义的子程

序的实际代码。

使用点符号可调用程序包中的过程和函数:package_name.procedure or function name

在幻灯片显示的程序包中,可按如下方式调用子程序:SQL> SELECT money.compute_tax(salary) FROM hr.employees

WHERE employee_id=107; SQL> EXECUTE money.give_raise_to_all;

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 250: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

程序包说明和程序包体

程序包体

程序包体:

• 与程序包说明是分开的。因此,可以更改并重新编译程序包体代码,此时不会将与

程序包说明相关的其它对象标记为无效。

• 包含程序包说明中定义的子程序的代码。这是负责完成工作的部分。程序包说明表

明了如何调用程序包中的子程序;程序包体是代码段。

• 只有在编译了程序包说明之后才能编译程序包体。可以在没有程序包体的情况下创

建程序包说明,但不能在没有程序包说明的情况下创建程序包体。

• 通过包装可隐藏代码明细。包装是一个可打乱 PL/SQL 源代码的独立程序,所以可在

不暴露源代码的情况下传送 PL/SQL 应用程序。有关包装用法的详细信息,请参阅

《PL/SQL 用户指南与参考》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 251: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

内置程序包

• Oracle 数据库带有 350 多个内置 PL/SQL 程序包,

这些程序包可用于:

– 管理和维护实用程序

– 扩展功能

• 可使用 DESCRIBE 命令查看子程序。

内置程序包

随 Oracle 数据库一起提供的内置 PL/SQL 程序包可用于访问扩展的数据库功能,例如高级队列、加密和文件输入/输出 (I/O),其中还包含许多管理和维护实用程序。

管理员可使用哪些程序包取决于数据库为之提供服务的应用程序的类型。以下是一些比较常用的管理和维护程序包:

• DBMS_STATS:用于收集、查看和修改优化程序统计信息

• DBMS_OUTPUT:通过 PL/SQL 生成输出

• DBMS_SESSION:通过 PL/SQL 访问 ALTER SESSION和 SET ROLE语句

• DBMS_RANDOM:生成随机数字

• DBMS_UTILITY:获取时间、CPU 时间和版本信息;计算散列值,以及执行许多其它功能

• DBMS_SCHEDULER:调度可从 PL/SQL 调用的函数和过程

• DBMS_CRYPTO:对数据库数据进行加密和解密

• UTL_FILE:通过 PL/SQL 读写操作系统文件

注:有关这些内置程序包及其它内置程序包的详细信息,请参阅《PL/SQL 程序包与类型参考》手册。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 252: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

触发器

触发器

触发器是存储在数据库中的 PL/SQL 代码对象,它们会在某些事件发生时自动运行或“触

发”。Oracle 数据库允许许多操作充当触发事件,包括插入到表中、用户登录数据库以及

尝试删除表或更改审计设置等操作。

触发器可以调用其它过程或函数。触发器的代码最好简短一些,需要较长代码的内容尽量

放置到单独的程序包中。

DBA 可使用触发器来协助执行基于值的审计(“实施 Oracle 数据库安全性”一课会对此

进行讨论)、强制设置复杂约束条件,以及自动处理很多任务。例如,幻灯片中显示的

SECURE_EMPLOYEES触发器将所有 DML 语句都记录到了保留表中。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 253: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

触发事件

事件示例事件类型

LOGON、LOGOFF、STARTUP、SHUTDOWN、SERVERERROR、SUSPEND

数据库

CREATE、DROP、ALTER、GRANT、REVOKE、RENAME

DDL

INSERT、UPDATE、DELETEDML

触发事件

有许多事件可用来触发触发器,这些事件分为三类。

• DML 事件触发器在通过语句修改数据时触发。

• DDL 事件触发器在通过语句创建或以某种方式修改对象时触发。

• 数据库事件触发器在数据库中发生特定事件时触发。

大多数触发器可指定为在事件发生前或事件发生后触发。对于 DML 事件,可将触发器

设计为在执行某一语句时触发一次,或者在修改每行时触发一次。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 254: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

锁定

• 使用锁定可防止多个会话同时更改同一数据。

• 锁定是在指定语句的最低可能级别自动获取的。

• 锁定不会升级。

SQL PL/SQL

> 锁定

SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id=100;

SQL> UPDATE employees2 SET salary=salary+1003 WHERE employee_id=100;

事务处理 1 事务处理 2

锁定

会话必须先锁定要修改的数据,之后数据库才允许会话修改相应数据。锁定后,会话拥有

对数据的独占控制权,这样在释放锁定之前,其它任何事务处理都不能修改锁定的数据。

事务处理可以锁定个别数据行、多个数据行、甚至整个表。Oracle Database 10g 支持手动

锁定和自动锁定。自动获取的锁定总是选择尽可能低的锁定级别,以尽量减少与其它事务

处理发生潜在冲突。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 255: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

锁定机制

• 高级数据并发处理:

– 执行插入、更新和删除时使用行级锁定

– 查询不需要任何锁定

• 自动队列管理

• 在事务处理(使用 COMMIT 或 ROLLBACK 操作)结束

之前一直保留锁定

事务处理 1

SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id=101;

SQL> UPDATE employees2 SET salary=salary+1003 WHERE employee_id=100;

事务处理 2

锁定机制

锁定机制用于在数据库中提供尽可能高的数据并发处理能力。事务处理修改数据时会获取

行级锁定,而不是块级或表级锁定。修改对象(如移动表)时会获取对象级锁定,而不是

整个数据库锁定或方案锁定。

数据查询不需要锁定,即使锁定了数据,查询也会成功进行(总是显示原始的、根据还原

信息重新构造的锁定之前的值)。

如果多个事务处理需要锁定同一资源,则第一个请求锁定的事务处理会获得锁定。其它

事务处理将等待,直到第一个事务处理完成为止。排队机制是自动进行的,不需要管理员

干预。

事务处理结束时会释放所有锁定。发出 COMMIT或 ROLLBACK后事务处理便会完成。如

果事务处理失败,同一后台进程会自动回退失败事务处理进行的所有更改,然后释放失败

事务处理持有的所有锁定。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 256: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据并发处理

UPDATE hr.employeesSET salary=salary+100 WHERE employee_id=xxx;

事务处理 x

......

UPDATE hr.employeesSET salary=salary+100 WHERE employee_id=102;

事务处理 3

UPDATE hr.employeesSET salary=salary+100 WHERE employee_id=101;

事务处理 2

UPDATE hr.employeesSET salary=salary+100 WHERE employee_id=100;

事务处理 1时间:

09:00:00

数据并发处理

默认情况下,锁定机制采用细粒度行级锁定模式。不同的事务处理可在同一个表内更新不

同的行,彼此不相互干扰。

尽管默认模式是行级锁定,但 Oracle 数据库在需要时也支持在更高级别执行手动锁定。SQL> LOCK TABLE employees IN EXCLUSIVE MODE; Table(s) Locked.

使用以上语句时,尝试更新锁定表中的行的任何其它事务处理都必须等待,直到发出锁定

请求的事务处理完成为止。EXCLUSIVE是最严格的锁定模式。下面列出了其它锁定模式:

• ROW SHARE:允许并发访问锁定的表,但禁止会话锁定整个表进行独占访问。

• ROW EXCLUSIVE:与 ROW SHARE相同,但是还禁止以 SHARE模式锁定。更新、

插入或删除数据时会自动获取 ROW EXCLUSIVE锁定。

• SHARE:允许并发查询,但禁止更新锁定的表。需要有(并且会自动请求)SHARE锁定才能创建表的索引。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 257: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

数据并发处理(续)

• SHARE ROW EXCLUSIVE:用于查询整个表,允许其他人查询表中的行,但禁止其

他人在 SHARE模式下锁定表或更新行。

• EXCLUSIVE:允许查询锁定表,但禁止对锁定表执行任何其它活动。需要有

EXCLUSIVE锁定才能删除表。

与任何锁定请求一样,手动锁定语句会一直等待,直到持有锁定(或先前请求锁定)的会

话释放锁定为止。LOCK命令接受用于控制等待行为的特殊参数 NOWAIT。

如果指定表已经由另一会话锁定,NOWAIT会立即将控制权还给您:

SQL> LOCK TABLE hr.employees IN SHARE MODE NOWAIT;

LOCK TABLE hr.employees IN SHARE MODE NOWAIT *

ERROR at line 1:

ORA-00054: resource busy and acquire with NOWAIT specified

通常不需要手动锁定对象。自动锁定机制提供大多数应用程序所需的数据并发处理能力。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 258: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

DML 锁定

事务处理 1 SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id= 106;

1 row updated.

SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id= 107;

1 row updated.

事务处理 2

每个 DML 事务处理必须获取两个锁定:

• 针对正在更新的一行或多行的 EXCLUSIVE 行锁定

• 针对包含这些行的表的 ROW EXCLUSIVE 表级锁定

DML 锁定

每个 DML 事务处理会获取两个锁定:

• 针对正在更新的一行或多行的 EXCLUSIVE行锁定

• 针对要更新的表的 ROW EXCLUSIVE表级锁定。这可避免在进行更改时另一会话

锁定整个表(可能会删除或截断表)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 259: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

排队机制

排队机制用于跟踪:

• 等待锁定的会话

• 请求的锁定模式

• 请求锁定的会话的顺序

排队机制

锁定请求会自动排队。只要持有某个锁定的事务处理一完成,行中的下一个会话就会获得

该锁定。

排队机制会跟踪请求锁定的顺序及请求的锁定模式。

已经持有锁定的会话可请求转换锁定,而不必排到队列末尾。例如,假定某个会话对表持

有 SHARE锁定。该会话可以请求将 SHARE锁定转换为 EXCLUSIVE锁定。只要没有其它

会话已经持有对表的 EXCLUSIVE或 SHARE锁定,持有 SHARE锁定的会话就会被授予

EXCLUSIVE锁定,不必重新在队列中等待。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 260: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

锁定冲突

commit;16:30:011 row updated.

会话继续进行。

在最后 7.5 个小时里进行了许多

选择、插入、更新和删除操作,

但未提交,也未回退!16:30:00

会话仍在等待!

SELECT sum(salary) FROM employees;

SUM(SALARY)

-----------

692634

9:00:05UPDATE employees SET

COMMISION_PCT=2 WHERE employee_id=101;

会话因锁定冲突而等待排队。

UPDATE employees SET salary=salary+100 WHERE employee_id=101;

1 row updated.

9:00:00UPDATE employees SET salary=salary+100 WHERE employee_id=100;

1 row updated.

事务处理 1 事务处理 2时间

锁定冲突

锁定冲突经常发生,但通常可通过时间机制和排队机制解决。极少数情况下,锁定冲突可

能需要管理员进行干预。如幻灯片所示,事务处理 2 在 9:00:00 获取了对某一行的锁定且

忘记了提交,从而留下了锁定。事务处理 1 在 9:00:05 尝试更新整个表,因此需要锁定所

有行。但事务处理 2 会阻塞事务处理 1,直到事务处理 2 在 16:30:01 提交为止。

这种情况下,用户要尝试执行事务处理 1,就必须与管理员联系以获得帮助,DBA 必须

检测冲突并解决冲突。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 261: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

锁定冲突的可能原因

• 未提交更改

• 长时间运行事务处理

• 不必要的高锁定级别

锁定冲突的可能原因

锁定冲突的最常见原因是未提交更改,但还有一些其它可能原因:

• 长时间运行事务处理:许多应用程序使用批处理来执行批量更新。通常会将这些批

作业安排在没有用户活动或者用户活动少时执行,但是,有些情况下,批作业在用

户活动少的期间内没有完成,或其运行时间过长。同时执行事务处理和批处理时通

常会发生锁定冲突。

• 不必要的高锁定级别:并不是所有数据库都支持行级锁定(Oracle 在 1988 年的发行

版 6 中添加了对行级锁定的支持)。某些数据库仍然在页级或表级上进行锁定。当

开发人员编写要在许多不同数据库上运行的应用程序时,他们会人为地使用高锁定

级别来编写应用程序,以使 Oracle 数据库与功能较少的数据库系统的操作方式相同。

如果开发人员不熟悉 Oracle,有时也会以高于 Oracle 数据库要求的锁定级别编写代

码,其实这是不必要的。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 262: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

检测锁定冲突

在“Performance(性能)”页选择“Blocking Sessions(阻塞会话)”。

单击“Session ID(会话 ID)”链接,查看关于锁定会话

的信息,包括实际 SQL 语句。

检测锁定冲突

使用 Enterprise Manager 中的“Blocking Sessions(阻塞会话)”页可找出锁定冲突。有冲

突的锁定请求以分层布局的形式显示,其中持有锁定的会话位于顶部,下面是排队请求锁

定的所有会话。

对于冲突中涉及的每个会话,会显示用户名、会话 ID 和会话已等待的秒数。选择会话 ID 可查看会话当前正在执行或请求的实际 SQL 语句。

自动数据库诊断监控程序 (ADDM) 还会自动检测锁定冲突,并且会就无效的锁定趋势提

出建议。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 263: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

解决锁定冲突

为了解决锁定冲突,您应该:

• 提交或回退持有锁定的会话

• 终止持有锁定的会话(作为最后的手段)

解决锁定冲突

要解决锁定冲突,持有锁定的会话必须释放锁定。让会话释放锁定的最好方式是与用户联

系,要求用户完成事务处理。

紧急情况下,管理员可以通过单击“Kill Session(终止会话)”按钮来终止持有锁定的会

话。请记住,终止会话后,当前事务处理中的所有工作都会丢失(回退)。会话终止后用

户必须再次登录,然后重做上次提交终止会话命令后所做的所有工作。

如果用户的会话已终止,用户下次尝试发出 SQL 语句时会收到以下错误:

ORA-03135: connection lost contact

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 264: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL 解决锁定冲突

SQL 语句可用来确定阻塞会话并终止会话。

SQL> alter system kill session '144,8982' immediate;

SQL> select sid, serial#, usernamefrom v$session where sid in(select blocking_session from v$session)

结果:

1

2

使用 SQL 解决锁定冲突

与在 Enterprise Manager 中执行的大多数其它任务一样,会话操作也可以通过发出 SQL 语句来完成。v$session表包含所有已连接的会话的明细。blocking_session是阻塞

会话的会话 ID。所以,如果查询 SID和 SERIAL#(其中 SID与阻塞会话 ID 相匹配),

则会获得执行 kill session操作所需的信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 265: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

死锁

事务处理 2事务处理 1

UPDATE employeesSET salary = salary x 1.1WHERE employee_id = 1000;

UPDATE employeesSET salary = salary x 1.1WHERE employee_id = 2000;

ORA-00060:Deadlock detected while waiting for resource

UPDATE employeesSET manager = 1342WHERE employee_id = 2000;

UPDATE employeesSET manager = 1342WHERE employee_id = 1000;

9:00

9:15

9:16

死锁

死锁是锁定冲突的特殊示例。两个或多个会话等待由对方锁定的数据时,就会发生死锁。

因为每个会话都在等待另一个会话释放锁定,所以任何一个会话都不能完成事务处理,也

不能解决冲突。

Oracle 数据库会自动检测死锁并终止语句,同时显示错误消息。更正这种错误的适当做法

是执行提交或回退,这样做会在一个会话中释放任何其它锁定,以便其它会话可继续完成

其事务处理。

在幻灯片示例中,事务处理 1 必须提交或回退,才能更正检测到的死锁错误。如果执行提

交,则需要再重新提交一次更新才能完成事务处理。如果执行回退,则必须同时重新提交

这两个语句才能完成事务处理。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 266: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 使用 SQL 管理数据

• 识别和管理 PL/SQL 对象

• 描述触发器和触发事件

• 监视和解决锁定冲突

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 267: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理数据和并发处理

本练习包含以下主题:

• 找出锁定冲突

• 解决锁定冲突

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 268: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 269: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

管理还原数据

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 270: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 说明 DML 和还原数据的生成过程

• 监视和管理还原数据

• 描述还原数据和重做数据之间的不同

• 配置还原保留期

• 确保还原保留期

• 使用还原指导

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 271: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据操纵

• 数据操纵语言 (DML) 包括以下 SQL 语句:

– INSERT

– UPDATE

– DELETE

– MERGE

• DML 始终作为事务处理的一部分执行,可以对其执行

以下操作:

– 回退(使用 ROLLBACK命令)

– 提交(使用 COMMIT 命令)

数据操纵

处理或修改数据时需使用 DML 类的 SQL 语句:INSERT、UPDATE、DELETE和 MERGE。这些语句作为事务处理的一部分执行,事务处理以第一个成功的 DML 语句为开始,以

COMMIT或 ROLLBACK命令为结束。事务处理不是完全提交,就是完全回退。

如果进程或系统失败,也可能发生回退。

注:使用 MERGE命令可合并执行插入与更新操作,将一个表中的数据合并到另一个表中。

“管理数据和并发处理”一课对此进行了介绍。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 272: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

还原数据

还原数据是:

• 原始的、修改之前的数据副本

• 针对更改数据的每个事务处理捕获的数据

• 至少保留到事务处理结束

• 用于支持:

– 回退操作

– 读取一致性和闪回查询

– 从失败的事务处理中恢复

用户

还原数据

当某个进程更改了数据库中的数据时,Oracle 数据库会保存旧值(还原数据)。按数据修

改前的原样存储数据。如果捕获了还原数据,则可以回退未提交的数据。还原数据还用于

支持读取一致性和闪回查询。

在读取一致性查询中,提供与查询开始时的数据一致的结果。如果要成功完成读取一致性

查询,原始信息必须仍作为还原信息存在。只要保留了还原信息,Oracle 数据库就能通过

重建数据来满足读取一致性查询的要求。

闪回查询是有目的地查询,可用来查找过去某个时间存在的某个版本的数据。只要过去那

个时间的还原信息仍存在,闪回查询就能成功完成。

还原数据也可用于从失败的事务处理中进行恢复。如果在用户决定提交或回退事务处理之

前用户会话异常结束(可能因为网络错误或客户机故障),就会导致事务处理失败。实例

崩溃也可能导致事务处理失败。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 273: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

还原数据(续)

如果事务处理失败,最安全的行为是选择让 Oracle 数据库撤销用户做出的所有更改,

从而恢复原始数据。

所有事务处理的还原信息都至少保留到事务处理结束,事务处理可通过以下方式结束:

• 用户还原事务处理(回退)

• 用户结束事务处理(提交)

• 用户会话异常终止(回退)

• 用户会话异常终止然后退出(提交)

保留的还原数据量及其保留时间取决于数据库活动量以及数据库配置。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 274: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

事务处理和还原数据

• 每个事务处理只分配给一个还原段。

• 一个还原段可以同时服务于多个事务

处理。

更新事务处理

旧值

新值还原段

事务处理和还原数据

事务处理开始时,就会将其分配到一个还原段。在事务处理的整个过程中,更改数据时,

原始(更改之前)值会被复制到此还原段。通过查看 v$transaction动态性能视图,

可以查看哪些事务处理被分配到哪些还原段。

还原段是为了支持事务处理,根据需要由实例自动创建的专用段。像所有段一样,还原段

由区组成,区又由数据块组成。还原段可根据需要自动增长和收缩,对于所分配的事务处

理它充当一个循环存储缓冲区。

事务处理会填充其还原段中的区,直至事务处理完成或占用了所有空间为止。如果填充完

区之后还需要更多的空间,事务处理则获取段中下一个区的空间。占用了所有区之后,事

务处理会自动转回到第一个区或请求系统为还原段分配新区。

注:并行 DML 操作实际上会导致事务处理使用多个还原段。要了解有关并行 DML 执行

的详细信息,请参阅《Oracle 数据库管理员指南 10g》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 275: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

存储还原信息

还原信息存储在还原段中,还原段又存储在还原表空间中。

还原表空间:

• 仅用于还原段

• 包含特殊的恢复注意事项

• 只能与单个实例相关联

• 要求在任意指定时间,对于一个给定实例只能有一个

还原表空间是当前可写还原表空间

存储还原信息

还原段只存在于特定形式的、称为还原表空间的表空间中。尽管数据库可能有许多还原表

空间,但一次只能有一个被指定为可写入还原数据的当前还原表空间。

还原段始终由 SYS拥有。由于还原段充当循环缓冲区,因此每个段最少包含两个区。默认

的最大区数取决于数据库块大小,但是此值非常大(块大小为 8 KB 时区数为 32,765)。

还原表空间是永久的、本地管理的表空间,可以自动分配区。可以像管理其它执行异常恢

复的表空间一样,管理这些还原表空间。由于需要有还原数据才能从失败的事务处理(如

实例崩溃时可能会导致事务处理失败)中进行恢复,所以还原表空间只在实例处于 MOUNT状态时可恢复。还原表空间的恢复注意事项在“执行数据库恢复”一课中有所介绍。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 276: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

还原数据与重做数据

多用户系统中出现读取不一致

还原段

回退、读取一致性、闪回

如何还原更改

还原

避免

存储于

用于

记录

前滚数据库更改

重做日志文件

数据丢失

如何重新生成更改

重做

还原数据与重做数据

还原数据和重做数据初看很相似,但是二者的作用却截然不同。在需要还原更改的情况下

需要用到还原数据,以便保持读取一致性和执行回退。因某种原因而丢失了更改时,如果

需要再次执行更改,就需要用到重做数据。

提交过程需要验证事务处理中所做的更改是否已写入重做日志文件。这个重做日志文件会

永久保存在磁盘上,而不保存在内存中。此外,一般情况下会多路复用它。因此,磁盘上

有重做数据的多个副本。即使更改尚未写入实际存储表块的数据文件,只要确保更改已写

入重做日志文件就够了。

如果在已提交的更改反映到数据文件中之前恰好发生了停电故障,则不会导致出现问题,

因为事务处理已提交。因此,当系统再次启动时,能够前滚到断电时尚未反映到数据文件

的任何重做记录。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 277: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

监视还原

还原通常不需要进行管理。要监视的区域包括:

• 还原表空间中的空闲空间

• “快照太旧”错误

DBA

监视还原

大多数时间,还原由实例自动进行管理,很少需要数据库管理员 (DBA) 进行干预。可能

需要管理员介入的一些情况包括:

• 还原空间不足

• 用户收到 ORA-01555 snapshot too old错误消息

还原信息始终保留,直至事务处理结束。这意味着如果删除或更新了大量的数据(插入操

作只占用极少的还原空间,因为插入数据的原始图像是空值)而没有提交,那么还原表空

间必须同样大以包含原始数据。假定使用以下命令删除了 50 GB 的表中的所有行:SQL> DELETE FROM reallybigtable;

还原表空间需要留出 50 GB 的空间存储原始信息,以备发出此语句的用户改变主意而要

回退更改。当还原表空间用完了用于存储还原数据的空间时,用户会收到如下错误消息:ORA-01650: unable to extend rollback segment

通过预防性监视,可在问题影响到用户之前就检测到还原表空间中的空间问题。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 278: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

监视还原(续)

管理员在还原信息时还可能遇到另一个问题,就是当查询需要访问还原信息时还原信息已

被覆盖。这可能发生在长时间运行的查询或闪回查询中。当查询需要过去某一时间的数据

“快照”,而重建快照需要的还原数据已不再存在时,查询会返回以下错误:ORA-01555: snapshot too old

之所以会发生这种情况,是因为 Oracle 数据库向用户展示的数据视图与查询开始运行时

的数据视图是一致的。如果查询的表有未提交的更改,Oracle 数据库会通过读取还原数

据来获取数据的已提交版本。这就是读取一致性。如果查询运行时间太长,其间修改已

被提交,随后其还原数据已释放且被覆盖,那么查询运行很长时间后看见的数据视图不再

与查询刚开始运行时看见的数据视图一致。因此,应根据运行时间最长的查询配置还原保

留期。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 279: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理还原

应对还原表空间进行管理,以防止:

• 还原表空间中出现空间错误:

– 正确调整还原表空间的大小。

– 确保定期提交大型事务处理。

• “快照太旧”错误:

– 配置适当的还原保留期间隔。

– 正确调整还原表空间的大小。

– 考虑确保还原保留期。

使用自动还原管理:

DBAUNDO_MANAGEMENT=AUTOUNDO_TABLESPACE=UNDOTBS1

管理还原

建议使用自动还原管理,将 UNDO_MANAGEMENT初始化参数设置为 AUTO即可完成配置。

为了向后兼容 Oracle8i 及较早版本,支持手动还原管理,但需要 DBA 进行更多干预。

使用自动还原管理时,通过使用 UNDO_TABLESPACE初始化参数控制实例使用哪个还原

表空间,DBA 可在表空间级管理还原。选择还原表空间之后,管理员只需要考虑提供足

够的空间并配置还原保留期间隔。

使用手动管理,DBA 还必须考虑:

• 调整段大小(包括最大区)和调整区大小

• 找出并清除阻塞事务处理

• 创建足够的回退段以处理事务处理(手动模式下,还原段也称为回退段)

• 选择表空间以包含回退段(还原表空间仅用于自动还原管理)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 280: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

配置还原保留期

UNDO_RETENTION 指定要将已提交的还原信息保留多长

时间(秒数)。在以下情况下必须设置这个参数:

• 还原表空间启用了 AUTOEXTEND 选项

• 要设置 LOB 的还原保留期

• 要确保保留期

DBA

配置还原保留期

UNDO_RETENTION指定了还原保留期的低阈值(秒数)。若是 AUTOEXTEND还原表空

间,系统至少将还原数据保留到这个参数指定的时间,并自动调整还原保留期以满足查询

的还原要求。若是固定大小的还原表空间,系统根据还原表空间大小和使用历史记录,自

动调整可能的最大还原保留期;系统会忽略 UNDO_RETENTION,除非启用了保留期确保

(retention guarantee)。因此,对于自动的还原管理时,列出的三种情况都使用了

UNDO_RETENTION设置。除这三种情况以外,均忽略此参数。

还原信息分为三类:

• 未提交的还原信息:支持当前运行的事务处理,如果用户要回退事务处理或事务处

理失败时,需要用到这类信息。绝不会覆盖未提交的还原信息。

• 提交的还原信息:不再需要用来支持运行的事务处理,但是为了符合还原保留期间

隔,仍要用到这类信息。这也称为“未过期”还原信息。如果活动事务处理不是因

为缺少空间而失败,就会保留已提交的还原信息。

• 过期的还原信息:不再需要用来支持运行的事务处理。活动事务处理需要空间时会

覆盖过期的还原信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 281: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

确保还原保留期

确保:15 分钟

生成的还原数据比可用空间多时事务处理会失败。

还原数据

始终满足运行 15 分钟或更少时间的 SELECT语句。

确保还原保留期

默认还原行为是覆盖已提交的但尚未过期的事务处理,以防止活动事务处理因缺少还原空

间而失败。

可以通过确保保留期来更改此行为。确保了保留期后,即使会导致事务处理失败,仍会强

制实施还原保留期设置。

RETENTION GUARANTEE是表空间属性而不是初始化参数。只能使用 SQL 命令行语句

来更改此属性。通过更改还原表空间来确保保留期的语法是:SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

要将有确保保留期的还原表空间返回到其常规设置,请使用以下命令:SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;

保留期确保仅适用于还原表空间。尝试对非还原表空间设置保留期会产生以下错误:SQL> ALTER TABLESPACE example RETENTION GUARANTEE; ERROR at line 1: ORA-30044: 'Retention' can only specified for undo tablespace

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 282: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

调整还原表空间的大小

当前表空间大小

还原占用率

调整还原表空间的大小

必须调整还原表空间的大小,以便还原表空间包含所有事务处理的原始信息。单击

Enterprise Manager 的“Administration(管理)”页上的“Undo Management(还原管理)”

链接,显示系统还原概览,包括当前设置、每分钟还原占用率及指定时期内运行时间最长

的查询的时间长度。

属于还原表空间的数据文件在用完空闲空间时可自动扩展。Oracle 公司建议,不要对与还

原表空间相关联的数据文件启用自动扩展,这与对其它表空间的建议不同。第一次确定还

原空间要求时,可能要对数据文件启用自动扩展,但在正确调整表空间的大小之后,必须

禁用自动扩展。通过对还原表空间数据文件禁用自动扩展,可避免单个用户因忽略提交事

务处理而无意中占用大量的磁盘空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 283: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用还原指导

使用还原指导

可通过“Undo Management(还原管理)”属性页访问还原指导。还原指导可估计满足指

定的还原保留期所需要的还原表空间大小。

输入期望的保留期,还原指导分析区域会显示支持保留期所需要的表空间大小。还可以通

过单击图上的一点来查看支持选定期间所需要的表空间大小。

选择了还原保留期之后,单击“OK(确定)”可实施新保留期。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 284: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 说明 DML 和还原数据的生成过程

• 监视和管理还原

• 描述还原数据和重做数据之间的不同

• 配置还原保留期

• 确保还原保留期

• 使用还原指导

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 285: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:管理还原段

本练习包含以下主题:

• 计算用于支持 48 小时保留期间隔的还原表空间大小

• 修改用于支持 48 小时保留期间隔的还原表空间

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 286: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 287: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

实施 Oracle 数据库安全性

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 288: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 说明 DBA 负责的安全工作

• 应用最少权限原则

• 启用标准数据库审计

• 指定审计选项

• 复查审计信息

• 维护审计线索

课程目标

从本课开始,将学习关于 Oracle 安全性的知识。有关更多信息,请参阅以下文档:

• Oracle 数据库概念 10g 发行版 2 (10.2) • Oracle 数据库管理员指南 10g 发行版 2 (10.2) • Oracle 数据库安全指南 10g 发行版 2 (10.2)

下列课程提供了其它培训:

• Oracle Database 10g:数据库管理-课堂练习 II (D17092GC30) • Oracle Database 10g:安全性 (D17499GC10)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 289: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

业界安全性要求

• 法律:

– Sarbanes-Oxley 法案 (SOX) – 安全信息流通和责任法案 (HIPAA) – 加利福尼亚州违约法

– 英国数据保护法案

• 审计

> 要求最少权限审计基于值FGADBA安全性更新

业界安全性要求

到目前为止,有关安全性的要求一直是业界关注的一个问题。过去,如果不涉及处理政府

或军事方面的数据,就不涉及什么法律要求。但是,这种情况在很短的时间内发生了变化。

目前,为了强制保护数据的隐私性和准确性,已经通过了各种各样的法律。伴随这些法律

而来的,还要求审计相应的安全措施。

法律:本课中列出的每项法律都有一些具体的要求。这里列出的只是全球已通过和要通过

的许多法律中的一些代表。勿庸置疑,各地的安全法会有所不同。

• Sarbanes-Oxley 法案 (SOX) 要求上市公司加强内部单据的控制能力,以避免由于个

人的欺骗性行为而泄漏公司的财务状况或影响公司财务报表的准确性。首席执行官

和首席财务官必须证实公司有足够的内部控制能力,还必须证实财务报表的准确性。

如果提供有欺骗性的报表,他们会受到罚款甚至监禁。SOX 中对用来生成报表的信

息和用来确保财务资料完整性的内部控制能力等有详细的要求。

• 安全信息流通和责任法案 (HIPAA) 用于防止个人身份安全信息被公之于众或被误用。

信息掌握者必须提供访问此数据的所有人的审计线索。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 290: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

业界安全性要求(续)

• 英国数据保护法案通过限制对个人身份数据的访问来保护个人隐私。这个法案包含

8 个要点,其中一个要点是要求保证数据的安全性。

• 其它法律:

- 家庭教育权利与隐私法案 (FERPA) 用于确保学校掌握的健康和个人信息的安全。

- 加利福尼亚州违约法要求掌握信用卡、驾照、身份证号之类的大量个人身份信

息 (PII) 的公司必须保护这些信息。如果泄漏了信息,公司必须通知涉及的所有

人。CA-SB-1386 和 CA-AB-1950 这两条法律适用于掌握 PII 的公司。

- 联邦信息安全管理法案 (FISMA) 通过美国国家标准局 (NIST) 管理的联邦信息

处理标准 (FIPS) 文档创建了安全指南和标准。这些标准适用于处理美国政府信

息的机构。

审计:许多法律都包括要求定期审计安全计划(内部控制能力)的条款。SOX 的要求不

太明确,以公司负责人的解释为准。实施细节可能会有很大的出入,这取决于公司负责人

要求的细节级别。虽然 SOX 的要求不太明确,但是处罚很严厉,所以一定要确保公司符

合其规定。实施安全措施的成本要与这种风险达到平衡。没有人能保证 100% 的安全性。

最好的解决方法是与业界达成共识。如果您履行了议定的最低安全方案,并且已尽职尽责,

就不会受到最不利的法律处罚。有一些可靠的资源提供了业界标准方案,如:美国系统管

理和网络安全审计协会 (SANS)、卡内基梅隆大学计算机系统防御系的 CERT/CC 以及

ISO-17799 认证标准,可从以下地址访问这些资源:

http://www.sans.org/index.php http://www.cert.org/nav/index.html http://www.iso17799software.com/

ISO-17799 认证标准是关于安全方案的国际标准,其中包括最佳方案、证书和风险评估。

它涵盖了各种各样的问题并包括一些预先制定的策略。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 291: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

责任划分

• 必须信任具有 DBA 权限的用户。请考虑以下两个因素:

– 滥用信任

– 审计线索会保护受信任的职位

• 必须由多人分担 DBA 责任。

• 一定不要共享帐户。

• DBA 和系统管理员必须由不同人员担任。

• 划分操作员与 DBA 的责任。

责任划分

为了满足责任划分,需要遵循以下主要要求。

必须信任 DBA:很难限制某个 DBA 去做什么。为了完成工作,DBA 需要具有很高的权

限。DBA 是受信任的职位,因此必须受到全面检查。即使是受信任的 DBA 也必须受到核

查。请考虑以下两个因素:

• 滥用信任:DBA 可能会误用 DBA_USERS视图中的加密密码。

• 审计线索会保护受信任的职位:谨慎实施审计且遵守准则之后,审计线索会表明特

定人员没有违反规程,也没有破坏性行为。如果有恶意用户试图让人怀疑受信任的

用户,设计适当的审计线索会捕获该行为。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 292: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库安全性

安全系统可确保所包含的数据的机密性。安全性包括以下

几个方面:

• 限制对数据和服务的访问

• 验证用户

• 监视可疑活动

数据库安全性

Oracle Database 10g 为业界提供了最佳安全系统框架。但是,要让这个框架起作用,数据

库管理员必须遵循最佳方案并持续监视数据库活动。

限制对数据和服务的访问

并不是所有用户对所有数据都具有访问权限。根据数据库中存储的内容,可按业务需要、

客户期望以及日益增加的法律限制条件来管理有限制的访问权限。必须保护信用卡信息、

健康保健数据、身份信息等,使之免受未授权访问。Oracle 数据库通过提供细粒度的授权

控制来限制数据库访问。限制访问时必须应用最少权限原则。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 293: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

数据库安全性(续)

验证用户

为了对敏感数据强制实施访问控制,系统必须首先知道谁尝试访问数据。如果验证信息泄

漏,则所有其它安全性预防措施都变得毫无用处。最基本的用户验证方式是要求用户提供

知道的验证信息,如口令。确保口令遵循简单的规则,这样可大大增强系统的安全性。比

较严格的验证方法包括要求用户提供掌握的某些验证信息,如令牌或公共密钥基础结构

(PKI) 证书。更严格的验证方法是,通过指纹、虹膜、骨组织模式等唯一生物学特征来识

别用户。Oracle 数据库通过高级安全选项支持高级验证技术,如基于令牌、生物学和证书

的身份识别技术。为了防止试图泄漏验证信息,必须锁定当前未使用的用户帐户。

监视可疑活动

即使经过授权和验证的用户有时也会泄漏系统信息。要查到信息失窃的原因,第一步就是

找出不寻常的数据库活动,如某个雇员突然开始查询大量的信用卡信息、研究结果或其它

敏感信息。为了跟踪用户活动和确定可疑活动的变化趋向,Oracle 数据库提供了很多审计

工具。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 294: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

最少权限原则

• 只在计算机上安装所需的软件。

• 只在计算机上激活所需的服务。

• 只允许需要访问的用户访问操作系统和数据库。

• 限制对 root 或管理员帐户的访问。

• 限制对 SYSDBA 和 SYSOPER 帐户的访问。

• 只允许用户访问完成工作所需的数据库对象。

要求> 最少权限

审计基于值FGADBA安全性更新

最少权限原则

首先在最低级别应用最少权限原则,继而在每一级别应用此原则。总是会出现一些新的、

不能预料的安全问题。通过应用这个原则,可降低发生问题的可能性,从而避免可能受到

的损害。

• 只在计算机上安装所需软件:通过减少安装的软件包数目,减少升级维护工作,降

低出现安全漏洞的可能性,减少软件冲突。

• 只在计算机上激活所需服务:服务越少意味着打开的端口越少,因而受到的攻击也

就越少。

• 只允许需要访问的用户访问操作系统 (OS) 和数据库:用户越少意味着口令和帐户越

少。这会降低公开帐户或帐户失效的可能性。帐户越少,管理员就越容易跟踪帐户

的最新活动。

• 限制对 root 或管理员帐户的访问:必须仔细保护和审计管理员帐户,决不能共享管

理员帐户。

• 限制对 SYSDBA和 SYSOPER帐户的访问:需要访问这两个角色的用户,必须各自

有自己的帐户并且必须经过审计。

• 只允许用户访问完成工作所需的数据库对象:如果用户访问的对象和服务超过需要

访问的范围,就有机会发生不当行为。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 295: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

应用最少权限原则

• 保护数据字典:

• 从 PUBLIC 撤消不必要的权限:

• 限制用户可访问的目录。

• 限制具有管理权限的用户。

• 限制远程数据库验证:

REVOKE EXECUTE ON UTL_SMTP, UTL_TCP, UTL_HTTP,UTL_FILE FROM PUBLIC;

O7_DICTIONARY_ACCESSIBILITY=FALSE

REMOTE_OS_AUTHENT=FALSE

应用最少权限原则

应用最少权限原则意味着必须仅为用户授予有效完成任务所需的那些权限。这会降低用户

无意中或恶意修改或查看他们本来无权修改或查看的数据的机率。

保护数据字典:默认情况下,O7_DICTIONARY_ACCESSIBILITY参数设置为 FALSE。如果没有很好的理由,一定不要更改这个设置,因为这会阻止具有 ANY TABLE系统权限

的用户访问数据字典的基表。这个参数设置还确保 SYS用户只能以 SYSDBA身份登录。

从 PUBLIC撤销不必要的权限:下列程序包对于需要这些程序包的应用程序非常有用,

但需要进行正确的配置,以便安全地使用它们。请从 PUBLIC撤销 EXECUTE权限,

在需要下列程序包时为角色授予 EXECUTE权限:UTL_SMTP、UTL_TCP、UTL_HTTP和 UTL_FILE。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 296: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

应用最少权限原则(续)

有些功能较强的程序包可能会被误用,这些程序包包括:

• UTL_SMTP:允许将数据库用作简单邮件传输协议 (SMTP) 邮件服务器来发送任意电

子邮件消息。如果将这个程序包授予 PUBLIC,可能会出现未经授权就交换电子邮

件消息的情况。

• UTL_TCP:允许数据库服务器与任何正在接收或等待的网络服务建立外出网络连接。

这样,便可以在数据库服务器和任何正在等待的网络服务之间发送任意数据。

• UTL_HTTP:允许数据库服务器通过 HTTP 请求和检索数据。如果将这个程序包授予

PUBLIC,可能会允许通过 HTML 形式将数据发送到恶意 Web 站点的行为。

• UTL_FILE:如果配置不当,则可能会允许访问主机操作系统上任何文本文件的行为。

即使配置正确,这个程序包也不会区分其调用应用程序;因此对 UTL_FILE具有访

问权的一个应用程序可能会将任意数据写到由另一个应用程序所写到的位置。

限制对操作系统目录的访问:通过数据库中的 DIRECTORY对象,DBA 可将目录映射到

操作系统路径,从而将对这些目录的权限授予给各个用户。

限制具有管理权限的用户:不要为数据库用户提供不必要的权限。一定不能将 DBA 角色

授予给管理员之外的人员。要实施最少权限原则,请限制下列类型的权限:

• 系统和对象的权限

• 连接到数据库的 SYS权限,如 SYSDBA和 SYSOPER

• 其它 DBA 类型的权限,如 DROP ANY TABLE

限制远程数据库验证:默认情况下,EMOTE_OS_AUTHENT参数设置为 FALSE。一定不

要更改这个设置,除非认为所有客户机都能适当地验证用户。

在远程验证过程中:

• 数据库用户在外部进行验证

• 远程系统对用户进行验证

• 用户登录数据库,不必进行进一步的验证

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 297: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

监视可疑活动

监视或审计是安全过程的一部分。请复查

下列各项:

• 强制性审计

• 标准数据库审计

• 基于值审计

• 细粒度审计 (FGA) • DBA 审计

要求最少权限

> 审计基于值FGADBA安全性更新

监视可疑活动

审计意味着捕获并存储关于系统中所发生情况的信息,这会增加系统需要执行的工作量。

审计必须有重点,以便只捕获有意义的事件。如果审计重点设置适当,则会最大程度地减

少对系统性能的影响。如果审计重点设置不当,则会对系统性能产生明显的影响。

• 强制性审计:不管其它审计选项或参数为何,所有 Oracle 数据库都会审计特定的操

作。由于数据库需要记录系统启动和关闭等数据库活动,所以存在强制性审计日志。

• 标准数据库审计:这是通过使用 AUDIT_TRAIL初始化参数在系统级别设置的。启

用审计后,可选择要审计的对象和权限。

• 基于值审计:这种审计扩展了标准数据库审计的功能,不仅会捕获已发生的审计事

件,还会捕获插入、更新或删除的实际值。基于值审计是通过数据库触发器实施的。

• 细粒度审计 (FGA):FGA 扩展了标准数据库审计的功能,这种审计可捕获已发出的

实际 SQL 语句,而不仅仅是发生了事件的 SQL 语句。

• DBA 审计:在 DBA 与审计者或安全管理员之间划分审计责任,审计者或安全管理

员在操作系统审计线索中负责监视 DBA 的活动。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 298: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

标准数据库审计

审计线索

参数文件

指定审计选项。

生成审计线索。

DBA 用户

执行命令。

数据库

操作系统或XML 审计线索

审计选项

服务器进程

1

2

3

启用数据库审计。

复查审计信息。

维护审计线索。4

标准数据库审计

启用数据库审计并指定审计选项(登录事件、系统活动和对象权限或使用的 SQL 语句)

后,数据库开始收集审计信息。

如果 AUDIT_TRAIL设置为 OS,审计记录将存储在操作系统的审计系统中。在 Windows 环境下,审计记录存储在事件日志中。在 UNIX 或 Linux 环境下,审计记录存储在文件中。

该文件的位置是 AUDIT_FILE_DEST参数指定的位置。

假定 AUDIT_TRAIL参数设置为 DB,则可复查 DBA_AUDIT_TRAIL视图中的审计记录,

这个视图是 SYS方案的一部分。

如果 AUDIT_TRAIL设置为 XML或 XML,EXTENDED,审计记录会写入

AUDIT_FILE_DEST参数指向的目录中的 XML 文件。使用 V$XML_AUDIT_TRAIL视图

可查看此目录中的所有 XML 文件。

维护审计线索是一项重要的管理任务。取决于审计选项的重点,审计线索会迅速增长。

如果维护不当,审计线索会占用大量的空间,以至影响系统的性能。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 299: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启用审计

在修改静态初始化参数之后需重新启动数据库。

ALTER SYSTEM SET audit_trail=“XML” SCOPE=SPFILE;

启用审计

必须在指定审计设置之前启用数据库审计。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 300: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

统一审计线索

使用 AUDIT_TRAIL 启用数据库审计

DBA_AUDIT_TRAIL DBA_FGA_AUDIT_TRAIL

DBA_COMMON_AUDIT_TRAIL

EXTENDED_TIMESTAMP,PROXY_SESSIONID, GLOBAL_UID,INSTANCE_NUMBER, OS_PROCESS, TRANSACTIONID, SCN, SQL_BIND, SQL_TEXT

STATEMENTID,ENTRYID

AUDIT_TRAIL=DB,EXTENDED

统一审计线索

要使用数据库审计,必须先将非动态 AUDIT_TRAIL参数设置为指向审计记录的存储位置,这样做可启用数据库审计。

启用标准审计和细粒度审计时,Oracle Database 10g 会跟踪相同的字段,这可方便您分析数据库活动。为实现这一点,标准审计线索和细粒度审计线索包含了彼此互补的属性。

标准审计收集的额外信息包括:

• 系统更改号 (SCN),记录对系统的每一项更改。

• 用户执行的确切 SQL 文本及与 SQL 文本一起使用的绑定变量。只有在初始化参数文件中指定了 AUDIT_TRAIL=DB时,才会显示这些列。

细粒度审计收集的额外信息包括:

• 每个审计记录的序列号

• 将源自一条语句的多个审计条目联系起来的语句编号

公共属性包括:

• 用全球标准时间 (UTC) 表示的全球时间戳。这个字段在监视不同地理位置和不同时区中的数据库时特别有用。

• 每个 Real Application Clusters (RAC) 实例的唯一实例编号。

• 用于分组一个事务处理的审计记录的事务处理标识符。

DBA_COMMON_AUDIT_TRAIL视图包含标准审计日志记录和细粒度审计日志记录的组合。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 301: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Enterprise Manager 审计页

Enterprise Manager 审计页

通过单击“Administration(管理)”标签,然后单击“Users & Privileges(用户和权限)”

区域中的“Audit Settings(审计设置)”链接,可访问“Database Control Home(数据库

控制主页)”中的“Audit(审计)”页。

“Audit(审计)”页包含下列区域:

• Configuration(配置):显示当前的配置参数值,包含用于编辑参数值的链接

• Audit Trails(审计线索):可轻松访问已收集的审计信息

可使用以下标签页设置审计选项和取消审计选项的设置:

• Audited Privileges(审计权限):显示审计的权限

• Audited Objects(审计对象):显示审计的对象

• Audited Statements(审计语句):显示审计的语句

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 302: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

指定审计选项

• 审计 SQL 语句:

• 审计系统权限(非重点和重点):

• 审计对象权限(非重点和重点):

AUDIT select any table, create any trigger;

AUDIT select any table BY hr BY SESSION;

AUDIT table;

AUDIT ALL on hr.employees;

AUDIT UPDATE,DELETE on hr.employees BY ACCESS;

指定审计选项

审计 SQL 语句:幻灯片中显示的语句可审计影响表的任何数据定义语言 (DDL) 语句,包

括 CREATE TABLE、DROP TABLE和 TRUNCATE TABLE等。可按用户名或者按成功或

失败来设置重点审计的 SQL 语句:SQL> AUDIT TABLE BY hr WHENEVER NOT SUCCESSFUL;

审计系统权限:可用来审计行使的任何系统权限(如 DROP ANY TABLE)。可按用户名

或者按成功或失败设置审计的重点。默认情况下,审计设置为 BY ACCESS。每次行使经

过审计的系统权限时,都会生成一条审计记录。可选择使用 BY SESSION子句来分组这

些记录,以便每个会话只生成一条记录。(这样,如果一个用户更新了属于另一个用户的

表中的 100,000 条记录,则只收集一条审计记录。)考虑使用 BY SESSION子句来限制

审计系统权限对性能和存储产生的影响。

审计对象权限:可用来审计对表、视图、过程、序列、目录和用户定义的数据类型执行的

操作。这种审计类型可按成功或失败设置审计的重点,而且可以按会话或访问权限分组。

与审计系统权限不同,默认情况下,审计对象权限时按会话分组。所以,如果要分离为每

个操作生成的审计线索记录,必须隐式指定 BY ACCESS。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 303: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用和维护审计信息

不使用审计选项时应禁用审计选项。

使用和维护审计信息

最佳方案提示:因为审计会增加系统的负荷,所以不使用审计时应禁用审计。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 304: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

基于值审计

用户进行了更改。

触发器触发。 触发器创建了审计记录。

在审计线索表中插入了审计记录。

用户进行了更改。

要求最少权限审计

> 基于值FGADBA安全性更新

基于值审计

进行数据库审计时会记录审计对象中发生的插入、更新和删除操作,但是不会捕获更改的

实际值。基于值审计扩展了数据库审计的功能,它能够捕获更改的实际值。基于值审计利

用了数据库触发器(事件驱动的 PL/SQL 构造)。

用户在连接了相应触发器的表中插入、更新或删除数据时,触发器通过后台工作将审计信

息复制到包含审计信息的表中。因为审计触发器代码在每次发生时插入、更新或删除操作

都必须执行,所以与标准数据库审计相比,使用基于值审计时,性能下降幅度比较大。性

能下降幅度取决于触发器代码的效率。仅在标准数据库审计捕获的信息不足的情况下,才

会使用基于值审计。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 305: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

基于值审计(续)

基于值审计的关键在于审计触发器。典型的审计触发器如下所示:CREATE OR REPLACE TRIGGER system.hrsalary_audit

AFTER UPDATE OF salaryON hr.employees REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW

BEGINIF :old.salary != :new.salary THEN

INSERT INTO system.audit_employees VALUES (sys_context('userenv','os_user'), sysdate, sys_context('userenv','ip_address'),:new.employee_id || ' salary changed from '||:old.salary|| ' to '||:new.salary);

END IF; END;

/

这个触发器将审计的重点设置为捕获对 hr.employees表薪水列的更改。更新某行后,

触发器就会检查薪水列。如果新旧薪水不相等,那么触发器会在 audit_employees表

(通过一个单独的操作在 SYSTEM方案中创建)中插入一条审计记录。审计记录包括用

户名、执行更改的 IP 地址、标识记录发生更改的主键及更改的实际薪水值。

如果标准数据库审计收集的数据不足,还可使用数据库触发器来捕获关于用户连接的信息。

通过使用登录触发器,管理员可以捕获用来标识连接到数据库的用户的数据。示例包括下

列内容:

• 登录人员的 IP 地址

• 用于连接到实例的程序名的前 48 个字符

• 用于连接到实例的终端名

有关用户参数的完整列表,请参阅《Oracle 数据库 SQL 参考》中的“SYS_CONTEXT”一节。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 306: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

细粒度审计

• 根据内容监视数据访问

• 审计 SELECT、INSERT、UPDATE、DELETE和 MERGE

• 可链接到表或视图,也可链接到一列或多列

• 可能会触发一个过程

• 使用 DBMS_FGA 程序包进行管理

employees

策略:AUDIT_EMPS_SALARY

SELECT name, salaryFROM employeesWHEREdepartment_id = 10;

要求最少权限审计基于值

> FGA DBA安全性更新

细粒度审计

与标准数据库审计或基于值数据库审计相比,FGA 可将审计重点的范围设置得比较窄。

可按表或视图中的单个列设置重点 FGA 审计选项,甚至可以将其设置为条件选项,以便

只在符合管理员定义的特定规范时才捕获审计。FGA 策略支持多个相关列。默认情况下,

如果其中任何一列出现在 SQL 语句中,就会审计该列。使用 DBMS_FGA.ALL_COLUMNS和 DBMS_FGA.ANY_COLUMNS,可根据语句中是使用了任一相关列还是全部相关列来进

行审计。

可使用 DBMS_FGA PL/SQL 程序包来创建目标表或视图的审计策略。如果查询块中返回的

任何行与审计列和指定的审计条件相匹配,那么审计事件会导致在审计线索中创建并存储

审计记录。审计事件还可以选择执行过程。FGA 会自动在语句级别设置审计重点,所以

一个会返回几千行的 SELECT语句只会生成一条审计记录。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 307: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

FGA 策略

dbms_fga.add_policy (object_schema => 'HR',object_name => 'EMPLOYEES',policy_name => 'audit_emps_salary',audit_condition => 'department_id=10',audit_column => 'SALARY',handler_schema => 'secure',handler_module => 'log_emps_salary',enable => TRUE,statement_types => 'SELECT' );

SELECT name, job_idFROM employees;

SELECT name, salaryFROM employeesWHERE

department_id = 10;

SECURE.LOG_ EMPS_SALARY

employees

• 定义:

– 审计标准

– 审计操作

• 是使用 DBMS_FGA.ADD_POLICY创建的

FGA 策略

幻灯片示例显示了使用 DBMS_FGA.ADD_POLICY过程创建的 FGA 策略。此过程接受下

列参数:

策略名

创建每个 FGA 策略时会指定其名称。幻灯片示例通过使用以下参数来命名

AUDIT_EMPS_SALARY策略:policy_name => 'audit_emps_salary'

审计条件

审计条件是一个 SQL 谓词,用于定义必须触发审计事件的时间。在幻灯片示例中,通过

使用以下条件参数来审计部门 10 中的所有行:audit_condition => 'department_id = 10'

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 308: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

FGA 策略(续)

审计列

审计列定义了要审计的数据。如果此列包括在 SELECT语句中或审计条件允许此选择,

就会发生审计事件。幻灯片示例使用以下参数来审计两列:audit_column => 'SALARY'

此参数是可选参数。如果未指定此参数,则仅由 AUDIT_CONDITION参数确定审计事件

是否必须发生。

对象

对象是要审计的表或视图。可通过以下两个参数传递对象:

• 包含对象的方案

• 对象的名称

幻灯片示例使用以下参数来审计 hr.employees表:object_schema => 'hr'object_name => 'employees'

处理程序

可选事件处理程序是一个 PL/SQL 过程,用于定义在审计期间必须执行的任何附加操作。

例如,事件处理程序可向管理员发送一个警报页。如果未定义审计事件处理程序,则在审

计线索中插入审计事件条目。如果定义了审计事件处理程序,则在审计线索中插入审计条

目并执行审计事件处理程序。

审计事件条目包括导致事件的 FGA 策略、执行 SQL 语句的用户、SQL 语句及其绑定变量。

可通过以下两个参数传递事件处理程序:

• 包含 PL/SQL 程序单元的方案

• PL/SQL 程序单元的名称

幻灯片示例使用以下参数执行 SECURE.LOG_EMPS_SALARY过程:handler_schema => 'secure'handler_module => 'log_emps_salary'

默认情况下,审计线索总是将 SQL 文本和 SQL 绑定信息写到 LOB。可以更改默认设置

(例如,系统性能下降时)。

状态

状态指示是否启用了 FGA 策略。在幻灯片示例中,以下参数会启用此策略:enable => TRUE

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 309: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

审计的 DML 语句:注意事项

• 如果满足 FGA 谓词并且引用了相关列,则会审计记录。

• 不管指定列是什么,都会审计 DELETE 语句。

• 会审计 MERGE 语句以及基础 INSERT 或 UPDATE 生成

语句。

UPDATE hr.employeesSET salary = 10WHERE department_id = 10;

UPDATE hr.employeesSET salary = 10WHERE employee_id = 111;

审计的 DML 语句:注意事项

使用为 DML 语句定义的 FGA 策略时,如果要处理的数据行(包括新行和旧行)符合策

略谓词标准,就会审计 DML 语句。

但是,如果同时在策略定义中指定了相关列,当数据符合 FGA 策略谓词并且语句引用了

定义的相关列时,就会审计语句。

对于 DELETE语句,在定义策略期间指定相关列没有用,这是因为 DELETE语句会访问

表中的所有列。因此,不管相关列是什么,总是要审计 DELETE语句。

FGA 支持 MERGE语句。如果基础 INSERT或 UPDATE语句符合任何定义的 INSERT或

UPDATE FGA 策略,则会审计这些语句。

使用以前定义的 FGA 策略时,会审计第一个语句而不审计第二个语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 310: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

FGA 准则

• 要审计所有语句,请使用 null 条件。

• 策略名必须唯一。

• 创建策略时,审计的表或视图必须已经存在。

• 如果审计条件语法无效,则访问审计对象时会发生ORA-28112 错误。

• 如果表中不存在审计的列,则不会审计任何行。

• 如果事件处理程序不存在,则不会返回任何错误但仍会

创建审计记录。

FGA 准则

对于 SELECT语句,FGA 会捕获语句本身而不是实际行。但是,FGA 与闪回查询组合

在一起时,会按实际行在该时间点存在的形式重新构造这些行。

有关闪回查询的详细信息,请参阅“执行闪回”一课。

有关 DBMS_FGA程序包的详细信息,请参阅《Oracle 数据库 PL/SQL 程序包和类型

参考》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 311: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

DBA 审计

具有 SYSDBA 或 SYSOPER 权限的用户

可在数据库处于关闭状态时进行连接。

• 审计线索必须存储在数据库外部。

• 总是审计以 SYSDBA 或 SYSOPER 身份进行的连接。

• 可使用 audit_sys_operations 启用对 SYSDBA或 SYSOPER 操作的附加审计。

• 可使用 audit_file_dest 控制审计线索。

要求最少权限审计基于值FGA

> DBA 安全性更新

DBA 审计

SYSDBA和 SYSOPER用户有权启动和关闭数据库。因为关闭数据库时这些用户可能做了

更改,所以这些权限的审计线索必须存储在数据库外部。Oracle 数据库会自动捕获

SYSDBA和 SYSOPER用户的登录事件。这为跟踪授权或未授权 SYSDBA和 SYSOPER操

作提供了一种有效方法,但只在复查操作系统审计线索时才有用。

除非专门启用了审计,否则 Oracle 数据库只捕获登录事件。通过设置初始化参数可启用

对 SYSDBA和 SYSOPER用户的审计:

audit_sys_operations=TRUE(默认设置为 FALSE。)

如果审计了 SYS操作,audit_file_dest初始化参数则会控制审计记录的存储位置。

在 Windows 平台上,默认情况下,审计线索存储在 Windows 事件日志中。在 UNIX 或Linux 平台上,审计记录存储在 $ORACLE_HOME/rdbms/audit中。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 312: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

维护审计线索

应该维护审计线索。遵循下列最佳方案准则:

• 复查和存储旧记录。

• 避免出现存储问题。

• 避免记录丢失。

维护审计线索

必须维护每种类型的审计线索。基本维护必须包括复查审计记录及删除数据库或操作系统

中的较旧记录。审计线索会不断增长,一直填满可用存储空间。如果文件系统已满,系统

可能会崩溃或只是导致性能问题。如果数据库审计线索填满了表空间,则审计操作不能完

成。如果审计线索填满了系统表空间,在审计操作停止之前,其它操作的性能会受到影响。

标准审计的审计线索存储在 AUD$表中。FGA 的审计线索存储在 FGA_LOG$表中。默认

情况下,这两个表都是在 SYSTEM表空间中创建的。使用导出和导入实用程序可将这两

个表移到另一表空间中。

注:不支持将审计表移到 SYSTEM表空间外部。

在从审计表中删除记录时,审计记录可能会丢失。

最佳方案提示:根据时间戳使用导出实用程序,然后根据同一时间戳删除审计线索中的行。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 313: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

安全更新

• Oracle 在 Oracle Technology Network Web 站点上公布了安全警报,其网址如下:

http://www.oracle.com/technology/deploy/security/alerts.htm

• Oracle 数据库管理员和开发人员单击“Subscribe to Security Alerts Here(订阅这里的安全警报)”链接

进行预订后,便可通过电子邮件得到有关严重安全警报

的通知。

要求最少权限审计基于值FGA DBA

> 安全性更新

安全更新

Oracle 安全警报包含关于安全漏洞、风险评估及与漏洞相关的泄漏程度、适用的解决方法

或补丁程序的简要描述。可使用 Enterprise Manager 管理补丁程序。Oracle 会就个人或机

构是否得到有关安全漏洞的通知进行确认。

安全警报被公布在 Oracle Technology Network Web 站点和 Oracle MetaLink 上。尽管安全

警报是向关心这些警报的所有人公布的,但是只有拥有当前客户支持标识 (CSI) 号的客户

才能下载补丁程序。

Oracle 感谢您通过及时、完善且机密的潜在安全漏洞通知来配合我们保护产品的安全。

如果您发现任何 Oracle 产品有安全漏洞,请通过 MetaLink 提交服务请求或将电子邮件

发送到 [email protected]来通知 Oracle。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 314: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

应用安全补丁程序

• 使用关键补丁程序更新进程。

• 应用所有安全补丁程序和解决方法。

• 与 Oracle 负责产品安全的团队联系。

应用安全补丁程序

关键补丁程序更新 (CPU) 方案

Oracle 在 2005 年 1 月启动了 CPU 方案。此方案按季度将关键补丁程序捆绑在一起。此方

案取代了安全警报补丁程序的发布。这些补丁程序是累积性补丁程序,其中包括用户经常

请求的必备补丁程序。每个季度发布的补丁程序中还包含风险评估体系,可用于确定对站

点的影响和站点存在的安全风险。请参阅 MetaLink 注释:290738.1“Oracle 关键补丁程序

更新方案一般常见问题解答”。必须预订 MetaLink 才能接收这些更新。

应用所有安全补丁程序和解决方法

总是对数据库所在的操作系统和 Oracle 软件,以及所有已安装的选件和组件应用所有相

关的最新安全补丁程序。

与 Oracle 负责产品安全的团队联系

如果您确信已经发现了 Oracle 软件中的安全漏洞,请按以下网址中“Security Alerts(安全警报)”链接提供的说明进行操作:http://otn.oracle.com 或http://www.oracle.com/technology/deploy/security/alerts.htm

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 315: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 说明 DBA 负责的安全工作

• 应用最少权限原则

• 启用标准数据库审计

• 指定审计选项

• 复查审计信息

• 维护审计线索

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 316: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:实施 Oracle 数据库安全性

本练习包含以下主题:

• 启用标准数据库审计

• 指定 HR.JOBS 表的审计选项

• 更新表

• 复查审计信息

• 维护审计线索

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 317: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

配置 Oracle 网络环境

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 318: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 使用 Enterprise Manager 来:

– 创建其它监听程序

– 创建 Oracle Net Service 别名

– 配置连接时故障转移

– 控制 Oracle Net Listener • 使用 tnsping 测试 Oracle Net 的连接性

• 确定何时使用共享服务器,以及何时使用专用服务器

资源

• Oracle 数据库网络服务管理员指南 10g 发行版 2 (10.2)(书号:B14212-01)• Oracle 数据库网络服务参考 10g 发行版 2 (10.2)(书号:B14213-01)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 319: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Net Services

应用程序

Oracle Net

RDBMS

Oracle Net

客户机或中间层数据库服务器

TCP/IP 网络

监听程序

Oracle Net 配置文件Oracle Net 配置文件

Oracle Net Services 使用 Oracle Net Services 可建立从客户机或中间层应用程序到 Oracle 服务器的网络连接。

建立网络会话之后,Oracle Net 充当客户机应用程序与数据库服务器的数据信使。它负

责建立并维护客户机应用程序和数据库服务器之间的连接,以及在二者之间交换消息。

Oracle Net 或 Oracle Net 的模拟程序,如 Java 数据库连接 (JDBC),位于需要与数据库服

务器建立会话的每台计算机上。

在客户机计算机上,Oracle Net 是一个用于连接到数据库的后台组件。

在数据库服务器上,Oracle Net 包括一个称为监听程序的活动进程。Oracle Net Listener 负责协调数据库与外部应用程序之间的连接。

Oracle Net Services 最常见的用法是允许传入数据库连接。可通过配置其它网络服务来允

许访问外部代码库 (EXTPROC),并通过 Oracle Heterogeneous Services 将 Oracle 实例连接

到非 Oracle 数据源,如 Sybase、Informix、DB2 和 SQL Server。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 320: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Oracle Net Listener

监听程序

<oracle_home>/network/admin/listener.orasqlnet.ora

Oracle 数据库

Oracle Net 配置文件

Enterprise ManagerDatabase

Control

Oracle Net Listener Oracle Net Listener 是所有非本地用户连接到 Oracle 实例的网关。单个监听程序可用于

多个数据库实例以及成千上万个客户机连接。

Enterprise Manager 是访问监听程序的一种方式。可以控制实际监听程序以及口令保护和

日志文件位置等常规参数的配置。

高级管理员还可以根据需要,通过使用标准操作系统 (OS) 文本编辑器(如 vi或 gedit)手动编辑配置文件来配置 Oracle Net Services。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 321: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

建立网络连接

要建立客户机或中间层连接,Oracle Net 要求客户机了解

下列事项:

• 运行监听程序的主机

• 监听程序监视的端口

• 监听程序使用的协议

• 监听程序处理的服务名

名称解析

建立网络连接

要让应用程序通过 Oracle Net Listener 连接到某服务,应用程序必须拥有关于该服务的

信息,包括监听程序所驻留的地址或主机、监听程序接受的协议,以及监听程序监视的

端口。确定监听程序的位置之后,应用程序所需的最后一项信息就是所要连接到的服务名。

确定此连接信息的进程被称为“名称解析”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 322: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

建立连接

监听程序

传入连接请求

建立连接

Oracle Net Names Resolution 完成之后,连接请求会从用户或中间层应用程序(此后称为

用户进程)传递到 Oracle Net Listener。监听程序会接收一个连接数据包,之后会检查这

个连接数据包请求的 Oracle Net 服务名是否有效。

如果未请求服务名(例如,tnsping请求),监听程序会通知连接请求,此外不执行

任何其它操作。如果请求的服务名无效,监听程序会向用户进程传输一个错误代码。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 323: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

用户会话

服务器进程

PGA

监听程序

用户会话

用户进程

用户会话

如果连接数据包请求的服务名有效,监听程序会衍生一个新进程来处理连接。这个新进程

被称为“服务器进程”。监听程序会连接到此服务器进程,并向其传递初始化信息,其中

包括用户进程的地址信息。此时,监听程序不再处理连接,所有工作都会传递到服务器

进程。

服务器进程会检查用户的验证身份证明(通常为口令),如果身份证明有效,就会创建

一个用户会话。

专用服务器进程:建立会话之后,服务器进程充当用户在服务器上的代理。服务器进程

负责:

• 分析和运行通过应用程序发布的任何 SQL 语句。

• 检查数据块执行 SQL 语句所需的数据库缓冲区高速缓存。

• 从磁盘数据文件读取必要的数据块,如果 SGA 中尚未存在数据块,就将其传入

系统全局区 (SGA) 的数据库缓冲区高速缓存部分。

• 管理所有排序活动。所谓的程序全局区 (PGA) 是服务器进程的一部分,其中包含

一个称为排序区域的内存区,这个内存区用于处理排序。

• 以某种方式将结果返回到用户进程,使应用程序可以处理信息。

• 读取审计选项并将用户进程报告给审计目标。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 324: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

配置和管理 Oracle Network 的工具

• Enterprise Manager 的“Net Services Administration(网络服务管理)”页

• Oracle Net Manager • 由 Oracle Universal Installer 启动的 Oracle Net

Configuration Assistant • 命令行

配置和管理 Oracle Network 的工具

可以使用以下任一工具或应用程序管理 Oracle Network 配置:

• Enterprise Manager:提供了配置和管理 Oracle Net Services 的集成环境。使用

Enterprise Manager 可在跨多个文件系统的任何 Oracle 主目录中配置 Oracle Net Services,还可配置 Oracle Net Services 来管理监听程序。

• Oracle Net Manager:提供一个图形用户界面 (GUI),通过这个界面可在本地客户机

或服务器主机的 Oracle 主目录中配置 Oracle Net Services。• Oracle Net Configuration Assistant:安装 Oracle 软件时通过 Oracle Universal

Installer 来启动。使用 Oracle Net Configuration Assistant 可配置 Oracle 数据库的

监听协议地址和服务信息。

• 命令行:用于启动、停止监听程序进程或查看监听程序进程的状态。由操作系统

用户(在本程中为 Oracle)启动或停止监听程序。如果未启动监听程序,则不能

使用 Enterprise Manager。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 325: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

监听程序控制实用程序

可以使用命令行 lsnrctl 实用程序(或通过 EM)控制

Oracle Net 监听程序。

$lsnrctlLSNRCTL for Linux: Version 10.2.0.0.0 on 12-MAY-2005 13:27:51Copyright (c) 1991, 2004, Oracle. All rights reserved.Welcome to LSNRCTL, type "help" for information.LSNRCTL> helpThe following operations are availableAn asterisk (*) denotes a modifier or extended command:

start stop statusservices version reloadsave_config trace spawnchange_password quit exitset* show*

监听程序控制实用程序

启动实例时,监听程序进程会建立一个指向 Oracle 数据库的通信路径。随后,监听程序

可接受数据库连接请求。

使用监听程序控制实用程序,您可以控制监听程序。使用 lsnrctl可以:

• 启动监听程序

• 停止监听程序

• 检查监听程序的状态

• 根据配置文件参数重新初始化监听程序

• 动态配置多个监听程序

• 更改监听程序口令

这个实用程序的基本命令语法为:LSNRCTL> command [listener_name]

发布 lsnrctl命令时,如果没有指定其它监听程序名称或执行 SET CURRENT_LISTENER命令,这个命令就充当默认的监听程序(名为“LISTENER”)。

如果监听程序名为 LISTENER,则可省略 listener_name参数。

幻灯片中显示了 lsnrctl的有效命令。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 326: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

监听程序控制实用程序的语法

可以从命令行或 LSNRCTL 提示符发布监听程序控制实用

程序的命令。

• UNIX 或 Linux 命令行语法:

• 提示符语法:

$ lsnrctl <command name>

$ lsnrctl start

$ lsnrctl status

LSNRCTL> <command name>

LSNRCTL> start

LSNRCTL> status

监听程序控制实用程序的语法

可以从实用程序内部(提示符语法)或命令行发布 lsnrctl命令。下面两个命令的效果

相同-第一个使用命令行语法:$ lsnrctl start

第二个使用提示符语法:$ lsnrctlLSNRCTL for Linux: Version 10.2.0.0.0 on 12-MAY-2005 Copyright (c) 1991, 2004, Oracle. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> start

通常,命令行语法用于执行单个命令或脚本命令。如果计划执行若干个连续的 lsnrctl命令,提示符语法最为有效。注意:listener_name参数已省略,因此 stop 命令会影

响名为 LISTENER的监听程序。如果监听程序受到口令的保护,则必须使用提示符语法。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 327: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

监听程序控制实用程序的语法(续)

请记住,如果监听程序名称不是 LISTENER,则语法中必须包含监听程序名称与命令,或

者使用 SET CURRENT_LISTENER命令。假定监听程序名为 BACKUP。以下是使用提示

符语法停止名为 BACKUP的监听程序的两个示例。LSNRCTL> stop backup Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521))) The command completed successfully

这个语法与下一个语法会产生相同的结果:LSNRCTL> set cur backup Current Listener is backup LSNRCTL> stop Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521))) The command completed successfully

注:在上面的语法中,current_listener已缩写为 cur。

使用命令行语法也可获得相同的结果:/home/oracle> lsnrctl stop backup LSNRCTL for Linux: Version 10.2.0.0.0 on 12-MAY-2005 15:19:33 Copyright (c) 1991, 2004, Oracle.All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5521))) The command completed successfully

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 328: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

监听程序主页

监听程序主页

可单击 Enterprise Manager 中的“Database(数据库)”主页上的“Listener(监听程序)”

链接来访问“Listener(监听程序)”主页。

在此页上,可看到:

• 最近 24 小时内监听程序的状态和可用性

• 监听程序版本和 Oracle 主页

• 监听程序的第一个监听地址

• 用于启动监听程序的配置文件的位置

• 监听程序的启动时间和主机信息

要启动监听程序,请转到“Database(数据库)”主页,单击监听程序名称打开“Listener(监听程序)”主页。单击“Stop(停止)”可停止运行的监听程序;如果监听程序未运

行,可单击“Start(启动)”启动监听程序。请以可启动和停止监听程序的操作系统用户

身份登录到主机。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 329: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

网络服务管理页

网络服务管理页

使用“Net Services Administration(网络服务管理)”页可在跨多个文件系统的任何

Oracle 主目录中配置 Oracle Net Services。此页还提供了监听程序的公用管理功能。

可以使用“Net Services Administration(网络服务管理)”页配置和管理以下各项:

• 监听程序:可以添加、删除、启动和停止监听程序,还可更改其跟踪特性和事件

记录特性。此外,还可查看监听程序的控制状态报表。

• 目录命名:可以定义简单的名称和连接标识符,并将定义的内容映射至连接描述符

以确定网络位置和服务标识。可以将数据库服务、网络服务和网络服务别名保存到

集中式目录服务中。

• 本地命名:将网络服务名称保存在 tnsnames.ora文件中。

• 概要文件:配置 sqlnet.ora参数。

• 文件位置:更改 Net Services 配置文件的位置。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 330: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建监听程序

1

2

34

创建监听程序

要创建 Oracle Net Listener,请单击“Listener(监听程序)”属性页“Related Links(相关链接)”区域中的“Net Services Administration(网络服务管理)”。请执行

下面的步骤:

1. 从“Administer(管理员)”下拉列表中选择“Listeners(监听程序)”,然后单击

“Go(执行)”。

2. 单击“Create(创建)”。

3. 输入一个监听程序名称。这个名称在此服务器上必须是唯一的。

4. 添加监听程序地址。每个监听程序必须至少有一个监听程序地址。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 331: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

添加监听程序地址

56

7

添加监听程序地址

创建监听程序的流程如下所示:

5. 选择网络协议。TCP/IP 是最常用的协议,也是默认协议。可以选择其它协议,

如 Internal Process Communication (IPC),这个协议一般用于连接到本地应用程序

(驻留于数据库服务器上),或者外部代码库 (EXTPROC)、命名管道 (NMP) 以及

带有 SSL 的 TCP/IP。注:使用“Other Services(其它服务)”标签可配置 NMP 和 EXTPROC 协议。

6. 输入监听程序要监视的端口。Oracle Net 的默认端口是 1521。如果选择使用 1521 之外的端口,监听程序或实例还需要进行其它配置。

7. 输入监听程序将运行的服务器名称或 IP 地址。

8. 对监听程序而言,其它所有配置步骤都是可选项。单击“OK(确定)”保存地址。

唯一必须进行的配置是监听地址和名称。单击“OK(确定)”保存更改。

9. 要启动新监听程序,请从“Actions(操作)”下拉列表选择“Start/Stop(启动/停止)”,然后单击“Go(执行)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 332: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库服务注册

数据库服务注册

为了将客户机连接转发到实例,监听程序必须了解实例名称以及实例的 ORACLE_HOME的位置。监听程序可通过下列两种方式查找此信息:

• 动态服务注册:Oracle8i、Oracle9i 和 Oracle Database 10g 实例会在启动数据库时

使用默认监听程序自动进行注册。默认监听程序不需要进行其它监听程序配置。

• 静态服务注册:Oracle 数据库的早期版本不会自动使用监听程序进行注册,因此,

监听程序配置文件需要包含一个监听程序为之提供服务的所有数据库服务的列表。

在较新版本中,如果存在以下情况,仍然可以选择使用静态服务注册:

- 监听程序所在的端口不是默认的 1521,您又不想将实例配置为使用非默认端口

进行注册。

- 应用程序要求进行静态服务注册。

要添加静态数据库服务,请单击“Edit Listener(编辑监听程序)”页上的“Static Database Registration(静态数据库注册)”,然后单击“Add(添加)”按钮。输入服务

名称(与全局数据库名 <DB_NAME>.<DB_DOMAIN>相同)、ORACLE_HOME路径和 SID(与实例名相同)。单击“OK(确定)”。您必须重新加载(使用 RELOAD命令)或重

新启动监听程序,更改才能生效。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 333: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

命名方法

Oracle Net 支持多种解析连接信息的方法:

• 简便连接命名:使用 TCP/IP 连接字符串

• 本地命名:使用本地配置文件

• 目录命名:使用符合 LDAP 的集中式目录服务器

• 外部命名:使用支持的非 Oracle 命名服务

客户机/应用程序服务器

Oracle Net

Oracle Net 配置文件

命名方法

Oracle Net 支持以下命名方法:

• 简便连接命名:使用简便连接命名方法,客户机可使用如下 TCP/IP 连接字符串

(由主机名、可选端口和服务名组成)连接到 Oracle 数据库服务器:CONNECT username/password@host[:port][/service_name]

简便连接命名方法不需要进行配置。

• 本地命名:本地命名方法将连接描述符(由其网络服务名标识)存储在客户机中名

为 tnsnames.ora的本地配置文件中。

• 目录命名:为了访问数据库服务,目录命名方法将连接标识符存储在符合轻型目录

访问协议 (LDAP) 的集中式目录服务器中。

• 外部命名:外部命名方法将网络服务名存储在支持的非 Oracle 命名服务中。支持的

第三方服务包括:

- 网络信息服务 (NIS) 外部命名

- 分布式计算环境 (DCE) 单元目录服务 (CDS)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 334: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

简便连接

• 默认情况下处于启用状态

• 不需要进行客户端配置

• 仅支持 TCP/IP(无 SSL)• 不支持高级连接选项,如:

– 连接时故障转移

– 源路由

– 负载平衡

SQL> CONNECT hr/[email protected]:1521/dba10g

无 Oracle Net 配置文件

简便连接

使用简便连接时,可作为连接字符串的一部分提供 Oracle Net 连接所需的所有信息。

简便连接的连接字符串采用以下形式:<username>/<password>@<hostname>:<listener port>/<service name>

监听程序端口和服务名为可选项。如果未提供监听程序端口,Oracle Net 就假定使用的是

默认端口 1521。如果未提供服务名,Oracle Net 假定连接字符串中提供的数据库服务名与

主机名相同。

假定监听程序使用 TCP 监听端口 1521,以及 SERVICE_NAMES=db和

DB_DOMAIN=us.oracle.com实例参数,则幻灯片中显示的连接字符串可简化为:SQL> connect hr/[email protected]

注:SERVICE_NAMES初始化参数可接受多个以逗号分隔的值。这些值中只能有一个值

必须为 db,此方案才能起作用。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 335: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

本地命名

• 需要客户端名称解析文件

• 支持所有 Oracle Net 协议

• 支持高级连接选项,如:

– 连接时故障转移

– 源路由

– 负载平衡

SQL> CONNECT hr/hr@orcl

Oracle Net 配置文件

本地命名

使用本地命名时,用户需要为 Oracle Net 服务提供一个别名。Oracle Net 会根据本地已知

服务的列表来检查别名,如果发现匹配名称,会将别名转换为主机、协议、端口和服务名。

本地命名的一个优势是,数据库用户仅需要记住简便连接所需的短别名,而不必记住很长

的连接字符串。

本地已知服务列表存储在文本配置文件中:<oracle_home>/network/admin/tnsnames.ora。这是 tnsnames.ora文件的

默认位置,但是,这个文件也可以位于使用 TNS_ADMIN环境变量的其它位置。

如果组织的 Oracle Net 服务配置不经常发生更改,则适合使用本地命名。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 336: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

目录命名

• 需要加载了 Oracle Net 名称解析信息的 LDAP:– Oracle Internet Directory – Microsoft Active Directory Services

• 支持所有 Oracle Net 协议

• 支持高级连接选项

SQL> CONNECT hr/hr@orcl

LDAP 目录

Oracle Net 配置文件

目录命名

使用目录命名时,用户需要为 Oracle Net 服务提供一个别名。Oracle Net 会根据外部已知

服务的列表来检查别名,如果发现匹配的名称,会将别名转换为主机、协议、端口和服务

名。与本地命名一样,数据库用户只需要记住短别名。

目录命名的一个优势是,新服务名添加到 LDAP 目录后,即可供用户连接使用。使用本

地命名时,数据库管理员 (DBA) 必须首先分发更新的 tnsnames.ora文件(这些文件

包含已更改的服务名信息),用户才能连接到新服务或修改过的服务。

如果组织的 Oracle Net 服务配置经常发生更改,则适合使用目录命名。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 337: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

外部命名方法

• 使用支持的非 Oracle 命名服务

• 包括:

– 网络信息服务 (NIS) 外部命名

– 分布式计算环境 (DCE) 单元目录服务 (CDS)

Oracle Net

非 Oracle 命名服务

外部命名方法

外部命名方法将网络服务名存储在支持的非 Oracle 命名服务中。支持的第三方服务包括:

• 网络信息服务 (NIS) 外部命名

• 分布式计算环境 (DCE) 单元目录服务 (CDS)

从概念上讲,外部命名类似于目录命名。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 338: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

配置服务别名

创建或编辑

配置服务别名

要创建本地 Oracle Net 服务别名,请从“Administer(管理)”下拉列表选择“Local Naming(本地命名)”,然后单击“Go(执行)”,再单击“Create(创建)”。

可以选择“Directory Naming(目录命名)”而不是“Local Naming(本地命名)”

来配置目录命名的服务别名。

注:如果尚未配置目录命名,则不能选择“Directory Naming(目录命名)”选项。

“Oracle 企业身份管理”课程以及《Oracle 高级安全管理》手册对目录命名进行了论述。

在“Create Net Service Name(创建网络服务名)”页的“Net Service Name(网络服务

名)”字段,输入一个唯一名称(这是用户使用此别名时所输入的名称)。输入要连接

到的数据库的服务名或系统标识符 (SID),然后单击“Add(添加)”按钮,输入服务名

的地址。

对于地址,输入监听程序对于要连接到的服务所使用的协议、端口和主机。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 339: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

高级连接选项

对于本地命名和目录命名 Oracle Net 支持以下高级连接

选项:

• 连接时故障转移

• 负载平衡

• 源路由

高级连接选项

通过高级连接选项,Oracle Net 可以充分利用监听程序的故障转移和负载平衡功能,以及

Oracle Connection Manager 源路由功能。

如果启用了连接时故障转移,则别名中会列出两个或多个监听程序地址。如果第一个地址

不可用,则尝试使用第二个地址。Oracle Net 会始终按列出的顺序试用地址,直至遇到起

作用的监听程序,或者试用完所有地址后失败。

如果启用了负载平衡,Oracle Net 会随机从地址列表中选择一个地址。

源路由与 Oracle Connection Manager 配合使用。Oracle Connection Manager 可以充当

Oracle Net 通信的代理服务器,使 Oracle Net 通信可以安全地通过防火墙进行路由。

Oracle Net 将地址视为中继列表,首先连接到第一个地址,然后请求从第一个地址传递

到第二个地址,直至到达目标位置。它与故障转移或负载平衡的不同之处在于,每次

进行连接时都会用到所有地址。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 340: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

高级连接选项(续)

请注意,连接时故障转移和负载平衡有五个选项。这五个选项如下所示:

无只使用第一个地址。

源路由按顺序使用每一个地址,直至到达目标位置。

负载平衡随机尝试所选的一个地址。

故障转移负载平衡

随机尝试每个地址,直至成功。

故障转移按顺序尝试每个地址,直至成功。

高级功能选项

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 341: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

测试 Oracle Net 连接性

tnsping 实用程序会测试 Oracle Net 服务别名:

• 确保客户机与 Oracle Net 监听程序之间的连接性

• 不验证所请求的服务是否可用

• 支持简便连接名称解析:

• 支持本地和目录命名:

tnsping db.us.oracle.com:1521/dba10g

tnsping orcl

测试 Oracle Net 连接性

tnsping相当于 Oracle Net 中的 TCP/IP ping 实用程序。它进行快速测试,以验证到

目标位置的网络路径是否正常。例如,在命令行窗口输入 tnsping orcl。

实用程序可验证主机名、端口以及协议是否能到达监听程序,并不实际检查监听程序

是否处理服务名。tnsping的另一个用途是指明了配置文件的位置。当系统中具有

多个 ORACLE_HOME位置时,这很有帮助。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 342: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

用户会话:专用服务器

服务器进程

服务器进程

用户会话

服务器进程

监听程序

用户会话:专用服务器

使用专用服务器进程时,服务器进程和用户进程之间是一对一的关系。每个服务器进程都

使用系统资源,包括 CPU 周期和内存。

在负荷很高的系统中,专用服务器进程会占用很多内存和 CPU 资源,因此会对系统可伸

缩性产生负面影响。如果专用服务器体系结构的资源需求对系统产生了负面影响,您可以

考虑以下两个选择:

• 通过增加更多的内存并扩大 CPU 容量来扩充系统资源

• 使用 Oracle 共享服务器体系结构

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 343: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

用户会话:共享服务器

监听程序

分派程序

服务器进程

服务器进程

服务器进程

用户会话

用户会话:共享服务器

参与共享服务器体系结构的每个服务至少有一个(通常为多个)分派程序进程。连接请求

到达时,监听程序不会衍生专用服务器进程,而是维护一个列表,此列表提供了可用于

每个服务名的分派程序,以及每个分派程序的连接负载(并发连接数量)。

连接请求被路由到为指定服务名提供服务的负载量最低的分派程序。用户在会话期间一直

连接到同一分派程序。

与专用服务器进程不同,单个分派程序可以管理成百上千个用户会话。

分派程序实际上并不处理用户请求,而是将用户请求传递到位于 SGA 共享池部分的公用

队列。

共享服务器进程会接收专用服务器进程的大部分工作,收集来自队列的请求并进行处理,

直至完成为止。

由于单个用户会话的请求可能由多个共享服务器进程来处理,因此通常存储在 PGA 中的

大部分内存结构必须位于共享内存位置(默认情况下,在共享池中)。但是,如果配置

了大型池,或为 Automatic Memory Management 设置了 SGA_TARGET,这些内存结构会

存储在 SGA 的大型池部分。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 344: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SGA 和 PGA

SGA

大型池和其它内存结构

PGA

Oracle 共享服务器:用户会话数据存储在 SGA 中。

用户会话数据

光标状态 排序数据

在调整 SGA 大小时切记要考虑共享服务器内存要求。

堆栈空间

SGA 和 PGA 使用专用服务器或共享服务器时,SGA 和 PGA 的内容会有所不同。

• 所有 SQL 语句的文本和分析形式都存储在 SGA 中。

• 光标状态包含 SQL 语句的运行时内存值,如检索到的行。

• 用户会话数据包括安全信息和资源使用情况信息。

• 堆栈空间包含进程的本地变量。

技术注释

SGA 和 PGA 中的更改对用户而言是透明的,但是,如果支持多个用户,则需要提高

LARGE_POOL_SIZE初始化参数值。每个共享服务器进程都必须访问所有会话的数据

空间,以便任何服务器都能处理来自任意会话的请求。每个会话在 SGA 中都分配有一定

的空间作为数据空间。可通过设置用户配置文件“General(常规)”页的“Database Services(数据库服务)”区域的 PRIVATE_SGA资源限制,限制每个会话可以分配的

空间量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 345: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

共享服务器:连接共享

客户机应用程序的空闲期已超出指定时间,

并且有传入的客户机请求连接。

最大连接数量配置为 255。

此客户机连接是到该服务器的第 256 个连接。

连接共享已打开,因此可接受此连接。

数据库服务器

空闲客户机

活动客户机

新客户机

共享服务器:连接共享

使用连接共享功能,数据库服务器可以使空闲会话超时,因而使用连接为活动会话提供服

务。空闲会话逻辑上仍处于断开状态,当该会话下次发出请求时会自动重新建立物理连接。

因此,Web 应用程序可使用现有硬件来满足大量并发用户的请求。连接共享是通过共享

服务器配置的。

在本示例中,Oracle 数据库服务器配置有 255 个连接。某个客户机的空闲期已超出了指定

时间。连接共享使此连接可用于第 256 个传入的客户机连接。如果空闲客户机还有其它任

务要执行,使用另一个客户机的空闲连接可为该客户机重新建立连接。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 346: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

不能使用共享服务器的情况

不能使用共享服务器执行下列特定类型的数据库任务:

• 数据库管理

• 备份和恢复操作

• 批处理和批量加载操作

• 数据仓库操作

分派程序 专用服务器进程

不能使用共享服务器的情况

Oracle 共享服务器体系结构是一个有效的进程和内存使用模型,但是并不适用于所有连接。

由于存在公共请求队列,以及存在大量用户会共享分派程序响应队列这样的事实,所以共

享服务器在处理大批数据的操作时性能并不是很好,如在处理仓库查询或执行批处理时。

使用 Oracle Recovery Manager(将在以后的课程中介绍)进行备份和恢复会话时,也会

处理大量的数据集,因此也必须使用专用连接。

一定不要(也无法)使用共享服务器连接执行大量的管理任务,包括启动和关闭实例、

创建表空间或数据文件、维护索引和表、分析统计操作,以及由 DBA 执行的多种其它

任务。所有 DBA 会话都必须选择专用服务器。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 347: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 使用 Enterprise Manager 来:

– 创建其它监听程序

– 创建 Oracle Net Service 别名

– 配置连接时故障转移

– 控制 Oracle Net Listener • 使用 tnsping 测试 Oracle Net 的连接性

• 确定何时使用共享服务器,以及何时使用专用服务器

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 348: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:使用 Oracle Network 组件

本练习包括以下内容:

• 配置本地名称解析以连接到其它数据库

• 为连接时故障转移创建另一个监听程序

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 349: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

主动维护

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 350: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 使用统计信息

• 管理自动工作量资料档案库 (AWR) • 使用数据库自动诊断监视程序 (ADDM) • 说明指导框架

• 设置预警阈值

• 使用服务器生成的预警

• 使用自动任务

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 351: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

主动维护

自动工作量资料档案库

服务器预警

自动任务

指导框架

数据库的数据仓库

自动收集重要统计信息

直接内存访问

自动 主动

有效

主动维护

技术高度成熟的 Oracle 数据库基础结构简化了主动维护工作。主要原理如下:

• 每个 Oracle 数据库中都有一个内置的资料档案库,即自动工作量资料档案库 (AWR)。Oracle 数据库会按固定间隔生成包括所有重要统计信息及工作量信息的快照,并将

这些信息存储在 AWR 中。用户可以对捕获的数据进行分析,也可以由数据库本身

进行分析,或者两者兼可进行。

• 通过分析 AWR 中存储的信息,数据库可确定是否需要执行常规维护任务,如执行

常规备份以便 大程度地提高可用性或刷新统计信息,这些常规维护任务用于优化

SQL 语句的执行。

• 当出现无法自动解决且需要通知管理员的问题(如用完空间时)时,Oracle 数据库

会提供服务器生成的预警。Oracle 数据库可监视数据库本身,并发送预警通知您

发生的任何问题。预警不仅通知您发生的问题,还会就如何解决报告的问题提供

建议案。

• 建议案是根据一些指导生成的,其中每个指导负责一个子系统。例如,有内存指导

和 SQL 指导。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 352: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

术语简介

• 自动工作量资料档案库 (AWR):是数据采集、

分析和提供解决方案建议案的基础结构

• 基线:指为性能比较而采集的“正常运行的数据库”

的数据

• 度量:指累积统计信息中的更改率

• 统计信息:指用于优化内部操作的数据集合,

如优化 SQL 语句的执行

• 阈值:指比较度量值时所根据的边界值

术语简介

自动工作量资料档案库 (AWR) 通过为内部 Oracle 服务器组件提供服务,收集、处理、维

护和利用性能统计信息,以检测问题和进行自优化。

活动会话的历史记录 (ASH) 是指存储在 AWR 中 近会话活动的历史记录。

统计信息是一些数据的集合,用于提供关于数据库及数据库对象的详细信息。查询优化程

序使用优化程序统计信息为每个 SQL 语句选择 佳执行计划。

基线数据应包括:

• 应用程序统计信息(事务处理量、响应时间)

• 数据库统计信息

• 操作系统统计信息

• 磁盘 I/O 统计信息

• 网络统计信息

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 353: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

优化程序统计信息

优化程序统计信息:

• 不是实时统计信息

• 每次重新启动实例后会变为永久信息

• 可自动收集

SQL> SELECT COUNT(*) FROM hr.employees;COUNT(*)

----------214

SQL> SELECT num_rows FROM dba_tables2 WHERE owner='HR' AND table_name = 'EMPLOYEES';NUM_ROWS

----------107

> 统计信息AWRADDM指导预警自动任务

优化程序统计信息

优化程序统计信息包括表、列、索引和系统的统计信息。表和索引的统计信息存储在数据

字典中。这些统计信息不提供实时数据,它们为优化程序提供数据存储和数据分发的正确

静态快照,优化程序会使用这个快照来决定如何访问数据。

收集的统计信息包括:

• 数据库块中表或索引的大小

• 行数

• 平均行大小和链计数(仅限表)

• 已删除的叶行的高度和数量(仅限索引)

插入、删除和修改数据后,这些统计信息会发生变化。由于维护实时数据分发统计信息会

对性能带来负面影响,因此,通过定期采集表和索引的统计信息来更新这些统计信息。

优化程序统计信息由预配置的 GATHER_STATS_JOB自动收集,这个作业在预定义维护

窗口中每日运行一次。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 354: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

优化程序统计信息(续)

如果大型表在 24 小时内的增长率(或缩减率)达到 10%,这种大型表通常被视为具有过

高的易失性,这种情况下一天收集一次统计信息就不够了。对这种变化程度的表,Oracle 建议要频繁一些收集统计信息, 好能保证表在两个收集期之间的变化不要超过 10% 。这需要手动收集统计信息。

使用 Enterprise Manager 可手动收集统计信息,或如下所示通过使用 DBMS_STATS程序包:SQL> EXEC dbms_stats.gather_table_stats(‘HR’,’EMPLOYEES’); SQL> SELECT num_rows FROM dba_tables

2 WHERE owner='HR' AND table_name = 'EMPLOYEES'; NUM_ROWS

----------214

注意,现在的行数正确反映了截止到采集统计信息时表中的行数。通过 DBMS_STATS还

可对整个方案甚至整个数据库启用手动收集统计信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 355: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用管理优化程序统计信息页

使用管理优化程序统计信息页

单击“Administration(管理)”标签页上的“Manage Optimizer Statistics(管理优化程序

统计信息)”,可转到用于管理优化程序统计信息的 Enterprise Manager 页。注意(如本

页所示),此时 GATHER_STATS_JOB已启用;已运行了九次; 后一次成功地收集了

97 个对象的统计信息,花费了一分多钟的时间。为了使 GATHER_STATS_JOB正常运行,

必须确保 STATISTICS_LEVEL初始化参数至少已设置为 TYPICAL。

注:这个作业的默认窗口在工作日的运行时间为 10:00 PM - 6:00 AM,周末运行时间为

星期六 12:00 AM -星期一 12:00 AM。默认情况下,维护窗口关闭时,调度程序会终止

GATHER_STATS_JOB。之后会在下一个维护窗口中处理剩余对象。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 356: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

使用管理优化程序统计信息页(续)

在此页上,可对统计信息执行下列任务:

• 手动采集优化程序统计信息。此操作会提交 GATHER_STATS_JOB自动提交的作业。

如果在两次自动采集作业之间表的内容发生了很大的变化,结果导致统计信息已不

能准确地表示表的内容,就应该执行这种操作。例如,当某个表在一天当中被截断,

或者某个运行的批作业在表中添加了大量数据时。

• 将优化程序统计信息还原到以前的某个时间点。选定的时间点必须位于优化程序统

计信息保留期内,默认为 30 天。

• 锁定优化程序统计信息以确保永远不覆盖某些对象的统计信息。如果在数据很有代

表性时计算了某个表的统计信息,而您又希望永远拥有这些统计信息,执行这个任

务就很有帮助。如果锁定了统计信息,表的任何波动都不会影响这些统计信息。

• 取消锁定优化程序统计信息以撤消以前执行的锁定。

• 删除优化程序统计信息以删除统计信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 357: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

自动工作量资料档案库 (AWR)

• 内置的性能信息资料档案库

• 每 60 分钟创建一次数据库度量快照,

保留期为 7 天• 所有自行管理功能的基础

MMON内存中

统计信息快照

AWRSGA

60 分钟

统计信息> AWR

ADDM指导预警自动任务

自动工作量资料档案库 (AWR)AWR 是为 Oracle Database 10g 组件提供服务的基础结构,通过这个基础结构可收集、维

护和利用统计信息,以便检测问题和进行自优化。可将这个基础结构视为包含数据库统计

信息、度量等内容的数据仓库。

默认情况下,数据库每隔 60 分钟从 SGA 中自动捕获一次统计信息,然后将其以快照形式

存储在 AWR 中。这些快照通过一个名为“易管理监视程序 (MMON)”的后台进程存储在

磁盘上。默认情况下,快照会保留七天。可以修改快照间隔和保留期。

AWR 中包含数百个表,所有这些表均属于 SYSMAN方案且存储在 SYSAUX表空间中。

Oracle 数据库不支持直接对资料档案库执行 SQL 访问。相反,它使用 Enterprise Manager 或 DBMS_WORKLOAD_REPOSITORY程序包来处理 AWR。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 358: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

AWR 基础结构

SGAV$ DBA_*

ADDM 自优化组件自优化组件 …内部客户机

外部客户机

EM SQL*Plus …

高效收集内存中统计信息的设备

AWR 快照MMON

AWR 基础结构

AWR 基础结构由以下两个主要部分组成:

• 一个内存中统计信息收集设备,Oracle Database 10g 组件使用它来收集统计信息。

考虑到性能原因,这些统计信息存储在内存中。可通过动态性能 (V$) 视图访问存储

在内存中的统计信息。

• 表示该设备永久部分的 AWR 快照。通过数据字典视图和 Enterprise Manager Database Control 可访问 AWR 快照。

考虑到以下几个原因,统计信息会存储在永久存储区中:

• 实例崩溃后统计信息需要继续保留。

• 某些分析需要使用历史数据来与基线数据进行比较。

• 可能会发生内存溢出。当旧统计信息因内存不足而被新统计信息替换时,可存储被

替换数据供以后使用。

MMON后台进程会定期将内存版本的统计信息转到磁盘上。使用 AWR 时,Oracle 数据库

可自动捕获历史统计信息,而不需要 DBA 进行干预。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 359: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

AWR 快照集

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE ( -start_snap_id IN NUMBER ,end_snap_id IN NUMBER ,baseline_name IN VARCHAR2);

以前的相关时段

AWR 快照集

快照集是一种机制,使用这种机制可标记重要时段的快照数据集。快照集是根据一对

快照定义的,这对快照用快照序列号 (snap_id) 来标识。每个快照集对应于一对且唯一

一对快照。

快照集可用用户提供的名称标识,也可用系统生成的标识符标识。通过执行

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE过程并指定一个名称和一对快照

标识符,便可创建一个快照集。会为新建的快照集指定一个快照集标识符。在数据库生命

周期内,快照集标识符是唯一的。

快照集用于保留快照数据。因此,属于某个快照集的快照会一直保留,直到删除该快照集。

通常,会为过去某些有代表性的时段创建快照集,用于与当前系统行为进行比较。另外,

可在 Database Control 中通过使用快照集来设置基于阈值的预警。

可直接从 DBA_HIST_SNAPSHOT或 Enterprise Manager Database Control 获取 snap_id。

注:有关 DBMS_WORKLOAD_REPOSITORY程序包的详细信息,请参阅《Oracle 数据库

PL/SQL 程序包和类型参考》指南。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 360: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Enterprise Manager 和 AWR

Enterprise Manager 和 AWR可通过选择“Administration > Database Administration > Statistics Management > Automatic Workload Repository(管理 > 数据库管理 > 统计信息管理 > 自动工作量资料档案库)”,

然后单击“Edit(编辑)”来更改设置。

在“Automatic Workload Repository(自动工作量资料档案库)”页上,可执行下列操作:

• 编辑工作量资料档案库设置

• 查看已创建的快照的详细信息,或者手动创建新快照

• 创建基线数据,又称保留的快照集

• 生成 AWR 报表

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 361: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理 AWR

• 保留期

– 默认值为 7 天– 考虑存储需要

• 收集间隔

– 默认值为 60 分钟

– 考虑存储需要和性能影响

• 收集级别

– Basic(禁用大多数 ADDM 功能)

– Typical(建议级别)

– All(将其它 SQL 优化信息添加到快照)

管理 AWR AWR 设置包括保留期、收集间隔和收集级别。请记住,如果降低其中任何设置,则会影

响依赖于 AWR 的组件(包括指导)的功能。

如果增大设置,虽然可改进指导建议案,但是会增加存储快照所需的空间,以及收集快照

信息的性能开销。

请考虑在优化新应用程序时将收集级别设置为 ALL。通过使用 ALL设置来收集 SQL 执行

计划和计时统计信息,可改进 SQL 指导的建议案。优化完成后,此设置应重新设回到

TYPICAL设置。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 362: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

统计信息级别

STATISTICS_LEVEL

BASIC TYPICAL ALL

建议的默认值用于手动 SQL 诊断的其它统计信息

自优化功能已禁用

统计信息级别

可使用 STATISTICS_LEVEL初始化参数来控制要捕获的统计信息集,可采用以下捕获

级别:

• BASIC:AWR 统计信息和度量的计算功能处于关闭状态。

• TYPICAL:只收集某些统计信息。这些统计信息是监视 Oracle 数据库行为通常所需

要的信息。这种自动采集统计信息级别可减少由于统计信息过期或无效而导致不正

确执行 SQL 语句的可能性。

• ALL:捕获所有可能的统计信息。除非在需要额外 SQL 诊断信息的某些极少数情况

下,否则不应使用这种捕获级别。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 363: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

数据库自动诊断监视程序 (ADDM)

• 在创建每个 AWR 快照之后运行

• 监视实例;检测瓶颈

• 在 AWR 中存储结果

快照

ADDM

AWR

EMADDM 结果

统计信息AWR

> ADDM 指导预警自动任务

数据库自动诊断监视程序 (ADDM) 与其它指导不同,ADDM 在创建每个 AWR 快照之后自动运行。每次创建快照后,

ADDM 都会分析与 后两个快照对应的时段。ADDM 会主动监视实例,以便在大多数

瓶颈问题成为严重问题之前就检测到这些问题。

多数情况下,ADDM 会为检测到的问题提供建议解决方案,甚至可以量化这些建议案的

优势。

ADDM 检测到的某些常见问题包括:

• CPU 瓶颈

• Oracle Net 连接管理不佳

• 锁争用

• 输入/输出 (I/O) 能力差

• Oracle 内存结构过小

• SQL 语句的负载过高

• PL/SQL 和 Java 时间过高

• 检查点负载过高及原因(例如,日志文件太小)

每次 ADDM 分析的结果都存储在 AWR 中,也可通过 Enterprise Manager 进行访问。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 364: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

ADDM 查找结果

1

2

3

ADDM 查找结果

在“Automatic Database Diagnostic Monitor (ADDM)(数据库自动诊断监视程序

(ADDM))”页上,可查看详细查找结果,以了解 近的 ADDM 运行。“Database Time(数据库时间)”表示数据库会话在分析期间所花费的非空闲时间之和。每个查找结果

都提供了特定的“Impact (%)(影响百分比)”。“影响”表示相应问题花费的时间与分

析期间数据库时间之比。在本幻灯片中,可看见下列内容:

1. 图中显示此时间点急剧增加的活动用户平均数量。主要问题是 Wait(等待)问题。

2. 图标显示页面底部出现的 ADDM 输出对应于此时间点。单击其它图标可转到过去

的时间(用于查看以前的分析)。

3. 这些查找结果提供了一个简短概要,作为可优化区域显示 ADDM 找到的问题。

单击特定问题可转到“Performance Finding Details(性能查找结果详细信息)”页。

单击“View Report(查看报表)”按钮,可获取以文本报表形式表示的性能分析详细

信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 365: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

ADDM 建议案

ADDM 建议案

“Performance Finding Details(性能查找结果详细信息)”页提供了用于解决相应问题

的某些建议案。这些建议案分为方案、SQL 优化、数据库配置和其它许多类别。

“Benefit (%)(缩时比率 (%))”列提供了实施建议时数据库用时的 大减少值。

ADDM 会考虑系统的各种更改,建议案中可能包括:

• 硬件更改:添加 CPU 或更改 I/O 子系统配置

• 数据库配置:更改初始化参数设置

• 方案更改:对表或索引进行散列分区,或者使用自动段空间管理 (ASSM) • 应用程序更改:使用序列的高速缓存选项或使用绑定变量

• 使用其它指导:针对高负载 SQL 运行 SQL 优化指导,或针对热对象运行段指导

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 366: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

指导框架

ADDM

SQL 优化指导

SQL 访问指导

内存

空间

PGA 指导

SGA

段指导

还原指导

缓冲区高速缓存指导

库高速缓存指导

PGA

备份 MTTR 指导

统计信息AWR ADDM

> 指导预警自动任务

指导框架

指导是一些服务器组件,可提供关于资源使用率和各个组件性能的有用反馈。

由于 ADDM 依赖于 AWR 中捕获的数据,所以 Oracle 数据库可通过 ADDM 诊断自身的

性能并确定如何解决发现的问题。ADDM 在每次捕获 AWR 统计信息后都会自动运行。

它可能还会调用其它指导。

下面是指导基础结构提供的主要优点:

• 对所有指导使用统一的接口。

• 通过使用工作量资料档案库,所有指导拥有共用的数据源和结果存储空间。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 367: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

指导框架(续)

数据库自动诊断监视程序 (ADDM)

ADDM 是一个基于服务器的专用软件,它每隔 60 分钟复查一次数据库的性能。ADDM 的目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。

内存指导

内存指导实际上是多项指导功能的集合,通过它可确定共享池、数据库缓冲区高速缓存和

程序全局区 (PGA) 的 佳设置。除了指导功能外,本页还提供了大型池和 Java 池的中心

控制点。

平均恢复时间 (MTTR) 指导

使用 MTTR 指导,可设置实例崩溃后数据库恢复所需的时间长度。

段指导

此指导用于查找占用空间多于所需空间的表和索引。此指导会在表空间级或方案级检查造

成低效率的空间消耗问题,如果可能,还会生成减少空间消耗的脚本。

SQL 访问指导

此指导用于分析在给定时段发出的所有 SQL 语句,并针对是否创建其它索引或实体化视

图来提高性能提供建议。

SQL 优化指导

此指导用于分析单个 SQL 语句,还针对改进该语句的性能提供建议案。建议案中可以包

括重写语句、更改实例配置或添加索引等操作。不会直接调用 SQL 优化指导,而是从其

它工具中调用它,如 Top SQL 或 Top Sessions,以帮助优化影响大的 SQL 语句。

还原管理指导

使用还原管理指导,可确定支持指定的保留期所需要的还原表空间大小。“管理还原数据”

一课介绍了还原管理及还原指导的用法。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 368: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

Enterprise Manager 和指导

Enterprise Manager 和指导

“Advisor Central(指导中心)”页是所有指导的主页。在 Database Control 主页的

“Related Links(相关链接)”列表中,单击“Advisor Central(指导中心)”链接可

访问此页。但是,在 Database Control 中这不是唯一可调用指导的地方。还可以在某些

上下文中访问指导。

在“Advisor Central(指导中心)”页上,可列出工作量资料档案库中注册的所有指导

任务。还可以按指导类型针对预定义的时段过滤此列表。

在“管理还原数据”、“性能管理”和“备份和恢复的概念”课中会更详细地介绍

一些指导。

注:使用“Change Default Parameters(更改默认参数)”页可更改将来所有任务的默认

到期时间(以天为单位)。还可以使用此页更改指导的某些重要参数。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 369: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

DBMS_ADVISOR程序包

创建由已接受的所有建议案组成的脚本GET_TASK_SCRIPT

将一个或多个建议案标记为已接受、

已拒绝或已忽略

MARK_RECOMMENDATION

修改任务参数SET_TASK_PARAMETER

更新任务属性UPDATE_TASK_ATTRIBUTES

恢复挂起的任务RESUME_TASK

为指定任务创建并返回文本报表GET_TASK_REPORT

挂起当前正在执行的任务INTERRUPT_TASK

开始执行任务EXECUTE_TASK

在资料档案库中删除任务DELETE_TASK

在资料档案库中创建新任务CREATE_TASK

说明过程

DBMS_ADVISOR 程序包

DBMS_ADVISOR程序包包含所有指导模块的所有常数和过程声明。可使用这个程序包通

过命令行执行任务。

要执行指导过程,必须具有 ADVISOR权限。使用 ADVISOR权限可对指导过程和视图进

行全权访问。

注:有关 DBMS_ADVISOR程序包中显示的所有过程的详细信息,请参阅《Oracle 数据库

PL/SQL 程序包和类型参考》指南。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 370: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

服务器生成的预警

服务器预警队列。

度量超出阈值。

AWR

Enterprise Manager

Oracle实例

统计信息AWR ADDM 指导

> 预警自动任务

服务器生成的预警

预警是当数据库处于不希望出现的状态且需要引起注意时发出的通知。默认情况下,

Oracle 数据库通过 Enterprise Manager Database Control 提供预警。还可以选择配置

Enterprise Manager 向管理员发送关于问题条件的电子邮件,以及在控制台上显示预警

信息。

另外,还可为系统的多个相关度量设置阈值。如果数据库偏离正常读数太多而达到了这些

阈值,Oracle Database 10g 会主动向您发送通知。潜在问题的早期通告使您可以快速作出

响应,因而常常在用户完全发现问题之前就解决了问题。

可提前提供问题通知的几个主要度量如下:

• 平均文件读取时间(厘秒)

• 转储区占用率 (%) • 响应时间(每事务处理)

• SQL 响应时间 (%) • 表空间占用率 (%) • 等待时间 (%)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 371: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

服务器生成的默认预警

可恢复会话已挂起 快照太旧恢复区空闲空间过少

85% 时发出警告

97% 时发出严重警告

表空间空间占用率Database Control:SYSTEM 度量

表空间

服务器生成的默认预警

默认情况下,以下服务器生成的预警处于启用状态:

• 表空间空间占用率(达到 85% 时发出警告,达到 97% 时发出严重警告)

• 快照太旧

• 恢复区空闲空间过少

• 可恢复会话已挂起

注:Enterprise Manager Database Control 会自动为 SYSTEM对象类型的服务器度量设置

阈值。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 372: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

设置阈值

设置阈值

要设置或编辑整个数据库的阈值,请在数据库主页的“Related Links(相关链接)”区域

中选择“Manage Metrics(管理度量)”。单击“Edit Thresholds(编辑阈值)”。输入所

需的“Warning Threshold(警告阈值)”和“Critical Threshold(严重阈值)”。数据库

达到指定值时会显示相应的预警。如果需要,可指定其它响应操作。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 373: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

创建和测试预警

1. 指定阈值。

2. 创建测试案例。

3. 检查预警。

21

3

创建和测试预警

还可以设置特定对象的阈值。

示例:您希望当 INVENTORY表空间中占用的空间超过 75% 时收到严重预警。(这个表

空间不允许其数据文件自动进行扩展。)要创建和测试预警,请执行以下步骤:

1. 在 Enterprise Manager 中,导航到表空间管理,然后设置所需的阈值。

2. 使用“类似创建”操作复制一个现有的表,然后使用 SQL*Plus 填充该表。

3. 收到有关此表无法扩展的错误后,检查“Database Instance(数据库实例)”

主页中的相关预警。

多数预警中都包含相关指导的名称,通过调用相关指导可获取详细的建议。对每一个

相应的预警消息,Database Control 都提供一个链接用于调用相应的指导。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 374: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

预警通知

预警通知

通知机制会使用用户界面,因为 Enterprise Manager 中已提供了这个界面。通知机制建立

在通知规则概念的基础上,通知规则为一组即将发出的预警确定了相应的通知机制。

可使用 Database Control 编辑通知规则。在主页上,单击“Preferences(首选项)”链接。

此时会显示“General(一般信息)”页,可在其中指定接收通知的电子邮件地址。

在“General(一般信息)”页中,单击“Notification(通知)”区域中的“Rules(规

则)”链接。选择“Database Availability and Critical States(数据库可用性和严重状态)”

规则,然后单击“Edit(编辑)”按钮。随后会转到“Edit Notification Rule Database Availability and Critical States(编辑通知规则数据库可用性和严重状态)”向导页,可在

其中选择度量(及其严重性),达到这些值时您就会收到通知。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 375: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

预警通知(续)

可以指定在出现特定预警时由 Enterprise Manager 直接向您发出通知。例如,如果您指定

要接收严重预警的电子邮件通知,并为每个调用度量的系统响应时间设置了严重阈值,

那么,您可以发送一封电子邮件,其中包含类似于以下内容的消息:Host Name=mydb.us.mycompany.com Metric=Response Time per Call Timestamp=08-NOV-2005 10:10:01 (GMT -7:00) Severity=Critical Message=Response time per call has exceeded the threshold.

See the latest ADDM analysis. Rule Name= Rule Owner=SYSMAN

该电子邮件包含指向主机名及 近的 ADDM 分析的链接。

默认情况下,“DB Down(数据库已关闭)”、“Generic Alert Log Error Status(一般预

警日志错误状态)”和“Tablespace Used(表空间占用率)”等严重状态下的预警已设

置为发送通知。但是,要收到这些通知,必须遵循以下步骤设置电子邮件信息:

1. 在任何 Database Control 页中,单击页眉和页脚区中显示的“Setup(设置)”链接。

2. 在“Setup(设置)”页中选择“Notification Methods(通知方法)”。

3. 在“Notifications Methods(通知方法)”页的“Mail Server(邮件服务器)”区域

中输入所需的信息。

还有其它通知方法,包括脚本和简化网络管理协议 (SNMP) 陷阱。后者可用于与第三方

应用程序进行通信。

要接收通知,请执行以下步骤:

1. 在任何 Database Control 页中,单击页眉和页脚区中显示的“Preferences(首选

项)”链接。

2. 在“Preferences(首选项)”页中选择“General(一般信息)”。在“E-mail Addresses(电子邮件地址)”区域中输入电子邮件地址。

3. 可以有选择地编辑通知规则,如更改接收通知的严重状态。要执行此操作,请选

择“Notification Rules(通知规则)”。此时会出现“Notification Rules(通知规

则)”页。有关配置通知规则的详细信息,请参阅“Oracle Enterprise Manager 高级配置”文档。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 376: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

对预警作出响应

• 例如,在需要时通过运行 ADDM 或其它指导采集更多

输入信息。

• 采取纠正措施。

• 确认不会自动清理的预警。

对预警作出响应

收到预警信息时,请按照预警提供的建议案进行操作,或考虑运行 ADDM 或其它适当的

指导,以便获取有关系统或对象行为的详细诊断信息。

问题的起因消失后,会自动清理大多数预警,如“Out of Space(空间不足)”预警。但

是,如果就“Generic Alert Log Error(一般预警日志错误)”等其它预警向您发送通知,

则需要进行确认。采取必要的纠正措施后,可通过清理或清除预警进行确认。清理某个预

警后,此预警会发送到预警历史记录,可在主页中的“Related Links(相关链接)”下浏

览此历史记录。清除一个预警后,会从预警历史记录中删除它。

要清理“Generic Alert Log Error(一般预警日志错误)”等预警,请在主页中的

“Diagnostic Summary(诊断概要)”下单击“Alert Log(预警日志)”链接。此时会出

现“Alert Log Errors(预警日志错误)”页。选择要清理的预警,然后单击“Clear(清

理)”。要清除一个预警,请选择这个预警,然后单击“Purge(清除)”。还可以使用

这些按钮执行“Clear Every Open Alert(清理每个打开的预警)”或“Purge Every Alert(清除每个预警)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 377: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

预警类型和清理预警

MMON

85% 时发出警告

97% 时发出严重警告 已清理

已清理

预警

快照太旧可恢复会话已挂起

恢复区空闲空间过少

基于度量

基于事件

阈值(有状态)

预警

非阈值(无状态)

预警

DBA_OUTSTANDING_ALERTS DBA_ALERT_HISTORY

预警类型和清理预警

服务器生成的预警有两种类型:阈值预警和非阈值预警。

大多数服务器生成的预警是通过对数据库度量设置警告阈值和严重阈值来配置的。

可对 120 多个度量定义阈值。例如:

• 每秒的物理读取次数

• 每秒的用户提交次数

• SQL 服务响应时间

除了表空间的空间占用率度量与数据库相关外,其它度量都与实例相关。阈值预警又称为

有状态预警。当预警条件消失后,会自动清理这些预警。有状态预警显示在

DBA_OUTSTANDING_ALERTS中,清理后会转到 DBA_ALERT_HISTORY。

服务器生成的其它预警对应于特定的数据库事件,如“快照太旧”错误、“恢复区空闲空

间过少”和“可恢复的会话已挂起”。这些都不是基于阈值的预警,又称为无状态预警。

无状态预警会直接转到历史记录表。只在 Database Control 环境中,清理无状态预警才有

意义,因为 Database Control 会在自身的资料档案库中存储无状态预警。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 378: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

自动维护任务

• 调度程序启动作业

• 作业在默认的维护窗口中运行

• 使用资源管理器限制维护对正常操作的影响

维护示例:

• 采集优化程序统计信息

• 采集段信息

• 备份数据库

统计信息AWR ADDM 指导预警

> 自动任务

自动维护任务

通过分析 AWR 中存储的信息,数据库可确定是否需要执行常规维护任务,如刷新优化程

序统计信息。在 Oracle 数据库使用自动维护任务基础结构可自动执行这些操作。这种基

础结构使用调度程序在预定义的“维护窗口”中运行这些任务。

默认情况下,维护窗口在每天晚上 10 点启动,然后持续到第二天早上 6 点;在周末一直

运行。维护窗口的所有属性都可自定义,这些属性包括起始时间和结束时间、频率、每周

几天等等。另外,通过将数据库资源管理器资源计划与维护窗口相关联,还可限制自动维

护任务对正常数据库操作的影响。

维护示例如下:

• 使用自动维护任务基础结构自动刷新优化程序统计信息。

• 段指导执行维护窗口中运行的默认作业。

• 使用 DBCA 创建数据库时,可启动常规数据库备份。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 379: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 使用统计信息

• 管理自动工作量资料档案库

• 使用数据库自动诊断监视程序

• 说明指导框架

• 设置预警阈值

• 使用服务器生成的预警

• 使用自动任务

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 380: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:主动维护

本练习包含以下主题:

• 使用 ADDM 主动管理数据库

– 准备一个问题进行分析

– 复查数据库的性能

– 实施解决方案

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 381: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

性能管理

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 382: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

课程目标

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

• 使用 Oracle Enterprise Manager 监视性能

• 使用 SQL 优化指导优化 SQL • 使用 SQL 访问指导优化 SQL • 使用自动共享内存管理 (ASSM) • 使用内存指导调整内存缓冲区的大小

• 查看与性能相关的动态视图

• 对无效和不可用对象进行故障诊断

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 383: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视

内存分配问题

内存分配问题

输入/输出设备争用

输入/输出设备争用

应用程序代码问题

应用程序代码问题

资源争用资源争用

网络瓶颈网络瓶颈

?DBA

> 性能监视优化指导访问指导内存统计信息无效对象

性能监视

要管理 Oracle Database 10g 并使其正常运行,数据库管理员 (DBA) 必须定期监视性能以

查找瓶颈所在,然后更正问题。

DBA 可以查看的性能度量有数百种,从网络性能和磁盘输入/输出 (I/O) 速度到运行单个

应用程序操作所花费的时间等等很多性能度量。这些性能度量通常称为数据库度量。

注:有关 Oracle 数据库性能的详细信息,请参阅 “Oracle Database 10g:SQL 优化-课堂

练习”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 384: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视

性能监视(续)

Enterprise Manager 中的“性能”标签页是一个门户,它提供了一组功能强大的性能监视

和优化工具。此页的第一个屏幕概述了进程和活动会话中的活动。“Average Active Sessions(平均活动会话)”图显示了 CPU 使用级别及是什么资源造成了大多数等待事件。

在幻灯片屏幕上,可以看到 CPU 使用率和用户 I/O、系统 I/O 及并发的等待时间 近都有

所增加。单击其中一个类别可查看关于等待时间的详细信息。I/O 数据被分为输入类型和

输出类型-例如日志文件读取、控制文件写入等。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 385: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视

性能监视(续)

选择特定的等待类别后,可查看特定五分钟间隔的详细信息,还可以看见这段时间内与

特定等待事件相关的顶级运行 SQL 和顶级运行会话。这样可针对系统速度减缓进行事后

分析,从而确定可能存在的原因。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 386: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视

性能监视(续)

另外,“Performance(性能)”标签主页还反映了实例磁盘 I/O 和实例吞吐量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 387: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视:顶级会话

性能监视:顶级会话

如果单击其中一个 I/O 类别名称,会看到“Top Consumers(顶级消耗者)”页,其中列

出了顶级服务、顶级模块、顶级操作、顶级客户机和顶级会话,其中包括逻辑和物理读写

计数、分析计数和排序计数等主要统计信息。如果单击 I/O 类别名称,显示的相关统计信

息就是列表的排序值。

此页的表中列出了按 CPU 使用排序的会话。这显示了 152 会话中的用户 SH 是这段特定

时间内 CPU 的 大消耗者。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 388: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

性能监视:顶级服务

性能监视:顶级服务

在多层系统中,如果存在共享数据库连接的应用程序服务器,就不能通过查看会话来提供

分析性能所需要的信息。按服务名对会话进行分组可更准确地监视性能。在幻灯片示例中

有三个服务:inventory、orcl和 hr。无论特定请求使用什么会话,当通过其中一个

服务连接会话时,捕获的会话性能数据都列在该服务名之下。从这个列表中可以清楚地看

出,这三个应用程序服务中,inventory服务是这段五分钟间隔内 活跃的服务。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 389: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SQL 优化指导:概览

添加缺少的索引运行访问指导

调整 SQL

优化 SQL 计划

(SQL 概要文件)

自动优化优化程序

SQL 分析优化模式

访问分析优化模式

计划优化优化模式

统计信息检查优化模式

检测过时或缺少的统计信息

综合 SQL 优化

SQL 优化指导

性能监视> 优化指导

访问指导内存统计信息无效对象

SQL 优化指导:概览

SQL 优化指导是优化过程中使用的主要驱动程序。它通过调用自动优化优化程序 (ATO) 来执行四种特定类型的分析:

• 统计信息分析:自动优化优化程序会检查与缺少或过时统计信息有关的每个查询

对象,然后提出收集相关统计信息的建议案。

• SQL 概要文件:ATO 会验证它自身的估计值并收集辅助信息以消除估计错误。它

使用辅助信息构建 SQL 概要文件并提出创建 SQL 概要文件的建议。创建 SQL 概要

文件后,查询优化程序可使用这个文件生成合理优化的计划。

• 访问路径分析:ATO 会检查新索引是否可明显地改进查询中每个表的访问性能,

并且在适当的时候提供创建这种索引的建议案。

• SQL 结构分析:ATO 会尝试找出使用错误计划的 SQL 语句并提供相关建议来调整

它们。建议的更改可能是语法方面的更改,也可能是语义方面的更改。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 390: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SQL 优化指导选项和建议案

SQL 优化指导选项和建议案

启动 SQL 优化指导之后,Enterprise Manager 会自动创建优化任务,前提是用户有相应的

ADVISOR权限来执行此操作。Enterprise Manager 会在“SQL Tuning Options(SQL 优化

选项)”页上显示优化任务及自动默认选项。在此页上,用户可更改优化任务的自动默认

值。为优化任务选择适当的范围非常重要。如果选中“Limited(有限制)”选项,SQL 优化指导会根据统计信息检查、访问路径分析和 SQL 结构分析来生成建议案。使用

“Limited(限制)”选项不会生成 SQL 概要文件建议。如果选中“Comprehensive(综

合)”选项,SQL 优化指导会生成“Limited(限制)”选项可生成的所有建议案,但是

如果适用,还另外在 SQL 概要文件模式下通过调用优化程序来构建 SQL 概要文件。使用

“Comprehensive(综合)”选项时,还可以指定优化任务的时间限制,这个时间限制的

默认值为 60 分钟。选择“Run SQL Tuning Advisor(运行 SQL 优化指导)”之后,请使

用“SQL Tuning Options(SQL 优化选项)”页配置优化任务。返回到“Top SQL(顶级

SQL)”页,单击优化的语句可转到显示“Recommendations(建议案)”历史记录的

“SQL Details(SQL 详细资料)”页。“Recommendations(建议案)”历史记录显示完

成的优化任务。单击此任务可查看一般建议信息。单击“View Recommendations(查看建

议案)”可查看有关任务的详细资料。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 391: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL 优化指导

• 使用 SQL 优化指导可分析 SQL 语句并获得性能建议案。

• 可以使用 SQL 优化指导分析的源

– 顶级 SQL:分析当前活动的顶级 SQL 语句

– SQL 优化集:分析用户提供的一组 SQL 语句

– 快照:分析快照

– 基线:分析基线

使用 SQL 优化指导

可以使用 SQL 优化指导分析 SQL 语句,并获得性能建议案。通常,会将此指导作为

ADDM 性能判断工具来运行。

另外,也可运行 SQL 优化指导来分析使用 多 CPU 时间、I/O 和内存的顶级 SQL 语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 392: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL 优化指导:示例

使用 SQL 优化指导:示例

可以通过执行以下步骤来调用 SQL 优化指导:

1. 在“Database(数据库)”主页中,单击“Related Links(相关链接)”区域的

“Advisor Central(指导中心)”。

2. 单击“SQL Tuning Advisor(SQL 优化指导)”。此时会显示“SQL Tuning Advisor Links(SQL 优化指导链接)”页。

可针对以下源之一运行此指导:

- 顶级活动: 后一小时内运行的负载 高的 SQL 语句

- 时段 SQL:持续 24 小时的 SQL 语句集

- SQL 优化集:您提供的 SQL 语句集

- 快照:来自 AWR 快照的 SQL 语句集

- 保留的快照集:来自保留的快照集的 SQL 语句集

3. 选择顶级 SQL。通过将灰色框拖到目标时间段,选择要分析的五分钟间隔。请选择

要在选定期间内分析的一个或多个语句。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 393: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

使用 SQL 优化指导:示例(续)

4. 单击“Run SQL Tuning Advisor(运行 SQL 优化指导)”。此时会出现“SQL Tuning Options(SQL 优化选项)”页,显示这个间隔内的 SQL 语句。提供任务的名称和描

述,选择“Comprehensive(综合)”作为范围,选择“Immediately(立即)”作为

起始时间。单击“OK(确定)”。

5. 重新导航到“Advisor Central(指导中心)”页。指导任务的状态列于结果区域中此

标题之下。请等待,直至任务状态为完成。单击浏览器中的“Refresh(刷新)”检

查状态。选择任务并单击“View Result(查看结果)”。此时会显示“SQL Tuning Result(SQL 优化结果)”页。

6. 选择 SQL 语句并单击“View Recommendations(查看建议案)”。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 394: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SQL 优化指导:SQL 统计信息

select count(*) from x where object_id < 340

select count(*) from x where object_id < 220

每个语句均会导致硬分析。

SQL 统计信息

SQL 优化指导还显示表示 SQL 语句的游标的统计信息。查看这两个游标中每一个游标的

统计信息,会发现每个游标都会导致对语句进行硬分析。这意味着语句在库高速缓存中

找不到匹配。这是因为使用文字代替了赋值变量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 395: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

SQL 优化指导:确定重复的 SQL

赋值变量候选项

确定重复的 SQL 通过单击“Performance(性能)”标签页上的“Duplicate SQL(重复的 SQL)”可确定

重复的 SQL。已确定为重复的 SQL(不考虑格式或文字的差异)会列在一起。这有助于

确定可合并应用程序中的哪一个 SQL,如此可降低对库高速缓存的要求,提高执行语句

的速度。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 396: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用 SQL 访问指导性能监视优化指导

> 访问指导内存统计信息无效对象

使用 SQL 访问指导

可以使用 SQL 访问指导来优化方案并提高查询性能。这个指导要求用户确定 SQL 工作量,

即访问方案的一组 SQL 语句。可以选择不同来源的工作量,包括当前 近的 SQL 活动、

SQL 资料档案库或用户定义的工作量,如开发环境的工作量。

SQL 访问指导可以针对给定工作量提供建议案,如创建索引或实体化视图来提高查询性能。

可执行以下步骤来调用 SQL 访问指导:

1. 在“Database(数据库)”主页中,单击“Related Links(相关链接)”区域的

“Advisor Central(指导中心)”。

2. 单击“SQL Access(SQL 访问)”启动向导。此时会显示“SQL Access Advisor: Workload Source(SQL 访问指导:工作量来源)”页。

3. 指定工作量来源,然后单击“Next(下一步)”。此时会显示“SQL Access Advisor: Recommendation Options(SQL 访问指导:建议选项)”页。

4. 指定是否希望指导提供有关索引、实体化视图或这两者的建议。

5. 指定采用限制模式或综合模式。采用限制模式时会重点处理成本 高的语句,因此

运行速度较快。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 397: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

使用 SQL 访问指导(续)

6. 单击“Next(下一步)”。此时会显示“SQL Access Advisor: Schedule(SQL 访问

指导:调度)”页。接受默认值立即执行,或者计划在以后执行。

7. 单击“Next(下一步)”。此时会显示“SQL Access Advisor: Review(SQL 访问指

导:复查)”页。

8. 复查所选的选项,然后单击“Submit(提交)”以开始作业。

结果会显示在“Advisor Central(指导中心)”页中。SQL 访问指导提出的建议案按成本

获益排序。例如,某个建议可能包括有一个或多个 CREATE INDEX语句的 SQL 脚本,

可通过单击“Schedule Implementation(调度实施)”来实施这个建议。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 398: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

管理内存组件

• 自动共享内存管理:

– 建议用于简化管理

– 允许您通过一个初始参数指定 SGA 总内存

– 使 Oracle 服务器可管理分配给共享池、Java 池、缓冲区

高速缓存、流池和大型池的内存量

• 手动设置共享内存管理:

– 通过多个初始化参数调整组件的大小

– 使用内存指导提出建议案

性能监视优化指导访问指导

> 内存统计信息无效对象

管理内存组件

SGA 包含多个组件。许多组件的大小可由 Oracle 服务器通过自动共享内存管理 (ASMM) 功能来管理。这就简化了内存管理任务。

也可以通过设置其它多个初始化参数手动管理组件的大小。如果以后 Oracle 服务器通知

您出现了与共享全局区 (SGA) 或程序全局区 (PGA) 大小相关的性能问题,可以使用内存

指导确定适当的新设置。内存指导可以建模参数更改的效果。还可以指定 Oracle 服务器

必须在条件发生更改时自动优化重要内存参数。此时,建议使用自动优化。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 399: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

启用自动共享内存管理 (ASMM)

单击“Enable(启用)”可启用自动共享内存管理。

启用自动共享内存管理

如果在配置数据库时未启用此功能,则可执行以下步骤来启用:

1. 在“Administration(管理)”页的“Database Configuration(数据库配置)”区域

中,单击“Memory Parameters(内存参数)”。

2. 单击“Enable(启用)”。

此时会出现“Enable Automatic Shared Memory Management(启用自动共享内存管

理)”页。

3. 指定 SGA 总大小。单击“OK(确定)”。

以后可通过增加 SGA_TARGET初始参数的值增加 SGA 总大小,但是这个参数的设置值

不能大于 SGA_MAX_SIZE参数指定的值。有关详细信息,请参考《Oracle 数据库管理员

指南》。

注:Oracle 建议使用自动共享内存管理来简化内存管理任务。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 400: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

启用自动共享内存管理(续)

如果启用了 ASMM, 初不应设置 ASMM 为其管理内存的特定组件的初始参数。看到

ASMM 分配的效果之后,如果决定要调整特定组件的分配值,则可指定那些组件的值。

那些值可视为各个组件的 小内存大小。这个操作会限制可用于自动调整的内存量,但是

如果环境需要进行 ASMM 不能满足的特殊大小调整,就可使用这个功能。相关的初始化

参数如下:

• SHARED_POOL_SIZE

• LARGE_POOL_SIZE

• JAVA_POOL_SIZE

• DB_CACHE_SIZE

• STREAMS_POOL_SIZE

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 401: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

手动设置共享内存管理

手动设置共享内存管理

如果不使用自动共享内存管理,则必须提供用于安装和数据库创建的 SGA 各个组件的值。

请执行下列操作:

1. 在“Administration(管理)”页的“Database Configuration(数据库配置)”区域中,

单击“Memory Parameters(内存参数)”链接,访问“Memory Parameters(内存

参数)”页。

2. 单击“Advice(建议)”,调用任一个内存指导。

3. 有关内存指导工作方式的其它信息,请单击“Help(帮助)”查看联机帮助。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 402: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

使用内存指导

使用内存指导

内存指导有助于用户优化内存结构的大小。只有已禁用了自动优化内存功能时才能使用此指导。

内存指导包括三个指导,可以就以下内存结构向用户提供建议案:

• 系统全局区 (SGA) 中的共享池

• SGA 中的缓冲区高速缓存

• 程序全局区 (PGA) 可执行以下步骤来调用内存指导:

1. 在“Database(数据库)”主页中,单击“Related Links(相关链接)”区域的

“Advisor Central(指导中心)”。

2. 在“Advisor Central(指导中心)”页中,单击“Memory Advisor(内存指导)”。

此时会显示“Memory Parameters(内存参数)”页。此页提供了详细的 SGA 的内存

使用情况。注:要运行此指导,必须禁用自动共享内存管理设置。

3. 单击“Shared Pool(共享池)”值或“Buffer Cache(缓冲区高速缓存)”值旁边的

“Advice(建议)”,调用各自的指导。

4. 单击“PGA”访问 PGA 属性页。单击“Advice(建议)”调用 PGA 指导。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 403: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

动态性能统计信息

V$SYSTEM_EVENT• event• total_waits• total_timeouts• time_waited• average_wait• time_waited_micro

V$SYSSTAT• statistic# • name• class• value• stat_id

V$SESSION_EVENT• sid• event• total_waits• total_timeouts• time_waited• average_wait• max_wait• time_waited_micro• event_id

V$SESSTAT• sid• statistic# • value

V$SERVICE_EVENT• service_name• service_name_hash• event• event_id• total_waits• total_timeouts• time_waited• average_wait• time_waited_micro

V$SERVICE_STATS• service_name_hash• service_name• stat_id• stat_name• value

系统范围 特定会话 特定服务

累积统计信息

等待事件

…访问指导内存

> 统计信息无效对象

动态性能统计信息

要有效地诊断性能问题,必须提供统计信息。Oracle 会在不同粒度级生成多种类型的统计

信息。在系统范围级、会话级和服务级,都会计算等待事件和累积统计信息。视图顶行显

示累积统计信息。底行显示等待事件的视图。分析以上任一范围内的性能问题时,通常会

查看感兴趣的某一时段内统计信息的变化(差值)。所有可能存在的等待事件都列入

V$EVENT_NAME视图目录。所有统计信息都列入 V$STATNAME视图目录,Oracle 数据库

中大约提供了 360 种统计信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 404: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

动态性能统计信息(续)

显示系统范围的统计信息

例如:SQL> SELECT name, class, value FROM v$sysstat; NAME CLASS VALUE ------------------------------- ------ ----------... table scans (short tables) 64 135116 table scans (long tables) 64 250 table scans (rowid ranges) 64 0 table scans (cache partitions) 64 3 table scans (direct read) 64 0 table scan rows gotten 64 14789836 table scan blocks gotten 64 558542 ...

系统范围的统计信息按优化主题和调试目的分类。分类包括一般实例活动、重做日志缓冲

区活动、锁定、数据库缓冲区高速缓存活动等。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 405: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

故障诊断和优化视图

实例/数据库V$DATABASE V$INSTANCE V$PARAMETER V$SPPARAMETER V$SYSTEM_PARAMETER V$PROCESS V$BGPROCESS V$PX_PROCESS_SYSSTATV$SYSTEM_EVENT

磁盘V$DATAFILE V$FILESTAT V$LOG V$LOG_HISTORY V$DBFILE V$TEMPFILE V$TEMPSEG_USAGE V$SEGMENT_STATISTICS

争用V$LOCK V$UNDOSTAT V$WAITSTAT V$LATCH

内存V$BUFFER_POOL_STATISTICS V$LIBRARYCACHE V$SGAINFO V$PGASTAT

故障诊断和优化视图

幻灯片中列出了一些视图,可访问这些视图来确定导致性能问题的原因或分析数据库的

当前状态。

有关这些视图的完整描述,请参考《Oracle 数据库参考手册》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 406: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

无效和不可用对象

对性能的影响:

• 重新编译 PL/SQL 代码对象。

• 重建索引。

性能监视优化指导访问指导内存统计信息

> 无效对象

无效和不可用对象

可通过查询数据字典来查看某些数据库对象的当前状态。这部分内容将在“管理方案对象”

一课进行介绍。如果查找到 INVALID状态的 PL/SQL 对象,需要回答的第一个问题是

“此对象曾经处于 VALID状态吗?”应用程序开发人员常常忘了清除不起作用的代码。

如果 PL/SQL 对象因代码错误而无效,则在解决错误之前几乎不能执行任何处理。如果该

过程在过去曾经有效, 近才变为无效,则可选择以下两种方法解决这个问题:

• 不做任何处理。在需要时,大多数 PL/SQL 对象在调用时会自动重新编译。用户在

对象重新编译时会经历短暂的延迟。(大多数情况下,这种延迟不十分明显。)

• 手动重新编译无效对象。

使用 Enterprise Manager 或通过 SQL 命令可手动重新编译无效的 PL/SQL 对象:ALTER PROCEDURE HR.add_job_history COMPILE;

要手动重新编译 PL/SQL 数据包,需要执行以下两个步骤:ALTER PACKAGE HR.maintainemp COMPILE; ALTER PACKAGE HR.maintainemp COMPILE BODY;

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 407: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

无效和不可用对象(续)

通过重建不可用索引来重算指针,可使不可用索引变为有效。重建不可用索引会在新位置

重新创建索引,然后会删除不可用索引。使用 Enterprise Manager 或通过 SQL 命令可完成

此操作:ALTER INDEX HR.emp_empid_pk REBUILD; ALTER INDEX HR.emp_empid_pk REBUILD ONLINE; ALTER INDEX HR.email REBUILD TABLESPACE USERS;

如果省略了 TABLESPACE子句,则在曾经存在的相同表空间中重建索引。使用 REBUILD ONLINE子句,用户可以在重建时继续更新索引表。(如果不使用 ONLINE关键字,用户

必须等待重建完成后才能对受影响的表执行 DML。)

Enterprise Manager 使用“Reorganize(重组)”操作修复 UNUSABLE索引。

注:重建索引时需要有可用于重建的空闲空间。请在尝试重建前验证是否有足够的空间。

Enterprise Manager 会自动检查空间要求。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 408: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

小结

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

• 使用 Oracle Enterprise Manager 监视性能

• 使用 SQL 优化指导优化 SQL • 使用 SQL 访问指导优化 SQL • 使用自动共享内存管理

• 使用内存指导调整内存缓冲区的大小

• 查看与性能相关的动态视图

• 对无效和不可用对象进行故障诊断

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 409: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

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

练习概览:监视和改进性能

本练习包含以下主题:

• 检测和修复不可用索引

• 使用 SQL 优化指导

• 使用 Enterprise Manager 中的“Performance(性能)”页

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 410: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 411: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

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

备份和恢复的概念

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 412: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 确定 Oracle 数据库中可能出现的故障类型

• 说明优化实例恢复的方法

• 明确检查点、重做日志文件和归档日志文件的重要性

• 配置 ARCHIVELOG 模式

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 413: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-3

版权所有 © 2009,Oracle。保留所有权利。

部分工作内容

管理员的职责包括:

• 尽量避免数据库出现故障

• 延长平均故障间隔时间 (MTBF) • 缩短平均恢复时间 (MTTR) • 最大程度地保护数据不会丢失

部分工作内容

数据库管理员 (DBA) 的目标是确保数据库处于打开状态,以供用户在需要时使用。要实

现这个目标,DBA 需要(通常与系统管理员合作):

• 预计导致故障的常见原因并努力避免这些原因

• 努力延长平均故障间隔时间 (MTBF),确保硬件尽量可靠,也就是通过冗余方式保

护关键组件,定期执行操作系统维护。Oracle 数据库提供了高级配置选项,可用于

延长 MTBF,其中包括:

- Real Application Clusters(“Oracle Database 10g:Real Application Clusters”一课会对此进行介绍)

- Streams (“Oracle Database 10g:实施流”一课会对此进行介绍)

• 缩短平均恢复时间 (MTTR),提前确定恢复过程方案并配置备份,以便在需要时随

时可用

• 最大程度地保护数据不会丢失。DBA 按照接受的最佳方案配置数据库,以便永远

不会丢失提交的事务处理。有助于实现此目标的实体包括:

- 归档日志文件(本课稍后会介绍)

- 备用数据库和 Oracle Data Guard(“Oracle Database 10g:Data Guard 管理”

一课会对此进行介绍)

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 414: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-4

版权所有 © 2009,Oracle。保留所有权利。

故障类别

故障通常可分为以下几类:

• 语句故障

• 用户进程故障

• 网络故障

• 用户错误

• 实例故障

• 介质故障

故障类别

故障主要可分为以下几类:

• 语句故障:单个数据库操作(选择、插入、更新或删除)失败。

• 用户进程故障:单个数据库会话失败。

• 网络故障:与数据库的连接断开。

• 用户错误:用户成功完成了操作,但是操作不正确(删除了表,或输入了错误

数据)。

• 实例故障:数据库实例意外关闭。

• 介质故障:丢失了一个或多个数据库文件(也就是说,文件已删除或磁盘出现了

故障)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 415: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-5

版权所有 © 2009,Oracle。保留所有权利。

语句故障

可能的解决方法典型问题

与开发人员合作来更正程序错误。应用程序中存在逻辑错误。

• 启用可恢复的空间分配。

• 增加所有者限额。

• 增加表空间的空间。

尝试分配空间失败。

提供适当的对象或系统权限。尝试执行操作,但权限不足。

与用户合作来验证并更正数据。尝试在表中输入无效的数据。

语句故障

单个数据库操作失败后,DBA 可能需要进行干预,才能更改用户权限或数据库空间分配

中的错误。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 416: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-6

版权所有 © 2009,Oracle。保留所有权利。

用户进程故障

可能的解决方法典型问题

通常不需要 DBA 执行任何操作就

可解决用户进程故障。实例后台进

程会回退未提交的更改并解除锁定。

观察变化趋势。

用户执行了异常断开连接操作。

用户会话已异常终止。

用户遇到了程序错误并终止了

会话。

用户进程故障

与实例异常断开的用户进程中可能包含正在进行的、需要回退的未提交任务。为了确保

服务器进程会话仍保持连接,进程监视程序 (PMON) 后台进程会定期轮询服务器进程。

如果 PMON 发现某个服务器进程的用户不再处于连接状态,PMON 会从任何实时事务

处理中进行恢复;还会回退未提交的更改并解除失败会话持有的任何锁定。

从用户进程故障中进行恢复时不需要 DBA 干预,但是管理员必须观察变化趋势。有一个

或两个用户异常断开时不必担心。少量的用户进程故障是正常的。一致性故障和系统性故

障表示还存在其它问题。异常断开连接比例较高时可能表示用户需要接受培训(包括学习

如何注销程序,而不是仅仅终止程序)。此外,还可能表示存在网络或应用程序问题。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 417: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-7

版权所有 © 2009,Oracle。保留所有权利。

网络故障

可能的解决方法典型问题

配置备份网络连接。网络连接失败。

配置多个网卡。网络接口卡 (NIC) 故障。

配置备份监听程序和连接时故障

转移。

监听程序失败。

网络故障

网络故障的最佳解决方法是为网络连接提供冗余路径。通过备份监听程序、网络连接和

网络接口卡,可降低网络故障影响系统可用性的可能性。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 418: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-8

版权所有 © 2009,Oracle。保留所有权利。

用户错误

可能的解决方法典型原因

从回收站恢复表。用户删除了表。

回退或使用闪回查询进行恢复。用户无意中删除或修改了数据。

Oracle LogMiner

用户错误

用户可能会无意中删除或修改数据。如果发生这种情况,DBA 可能需要帮助用户从错误

中进行恢复。如果用户尚未提交或退出程序,则只能回退操作。如果用户提交了更改,

则可以使用闪回查询来确定以前的值是什么(然后,为还原原始信息而更新数据):SQL> SELECT salary FROM employees WHERE employee_id=100; SALARY ------25 SQL> SELECT salary FROM employees 2 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL’10’ minute) 3 WHERE employee_id=100; SALARY ------24000

在因超出了还原保留期而无法使用闪回查询的情况下,DBA 仍可通过使用 OracleLogMiner 来恢复原始信息。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 419: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-9

用户错误(续)

可使用 Oracle LogMiner 通过 SQL 接口来查询联机重做日志和归档的重做日志。事务处理

数据保留在联机重做日志中的时间可能比保留在还原段中的时间长,如果配置了对重做信

息进行归档,重做信息在删除归档文件之前将一直保留。

“Oracle Database 10g:数据库管理-课堂练习 II”课程和《Oracle 数据库:实用程序》

参考手册中介绍了 Oracle LogMiner。

通过将表闪回到删除前的状态,用户删除表后可从回收站中恢复表。有关详细说明,

请参阅“执行闪回”一课。

如果清空了回收站,或者用户使用 PURGE选项删除了表,那么在正确配置数据库的情况

下,仍然可通过使用时间点恢复 (PITR) 来恢复删除的表。

PITR 将在“Oracle Database 10g:数据库管理-课堂练习 II”课程和《Oracle 数据库:

Oracle 备份和恢复高级用户指南》中进行介绍。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 420: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-10

版权所有 © 2009,Oracle。保留所有权利。

实例故障

一个后台进程出现故障

可能的解决方法典型原因

紧急关闭过程

硬件故障

使用“startup”命令重新启动实例。

从实例故障进行恢复是自动执行的,

其中包括前滚重做日志中的更改和回

退任何未提交的事务处理。

使用预警日志、跟踪文件和

Enterprise Manager 调查出现错误

的原因。

断电

实例错误

如果在同步所有数据库文件之前关闭了数据库实例,就会发生实例错误。存在软硬件故障,

或者使用 SHUTDOWN ABORT和 STARTUP FORCE紧急关闭命令时,也会发生实例错误。

从实例故障进行恢复时,管理员所做的仅限于重新启动实例和努力避免将来发生这种情况。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 421: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-11

版权所有 © 2009,Oracle。保留所有权利。

后台进程和恢复:检查点 (CKPT)

CKPT 负责:

• 在检查点向 DBWn 发出信号

• 使用检查点信息更新数据文件头

• 使用检查点信息更新控制文件

检查点(CKPT)

数据库写进程

(DBWn)

SGA

数据库缓冲区高速缓存

控制文件

数据文件

后台进程和恢复:检查点 (CKPT) 要了解实例恢复,需要了解特定后台进程的功能。

每隔三秒(或频率更高),CKPT 进程就在控制文件中存储一次数据,以记录 DBWn 从

SGA 写入到磁盘的已修改数据块。这就称为“检查点”。检查点的用途是标识联机重做

日志文件开始进行实例恢复的位置(这个位置称为“检查点位置”)。

如果使用日志切换,CKPT 进程还会将这个检查点信息写入到数据文件头。

使用检查点的原因如下:

• 确保定期将内存中的已修改数据块写入磁盘,以便在系统或数据库出现故障的情况

下不会丢失数据

• 减少实例恢复所需的时间。在进行恢复时只需处理跟在最后一个检查点后面的联机

重做日志文件

• 确保在关闭过程中所有已提交数据都写入到数据文件中

由 CKPT 进程写入的检查点信息包括检查点位置、系统更改号、联机重做日志文件中开始

恢复的位置、关于日志的信息等等。

注:CKPT 进程并不将数据块写入到磁盘,也不将重做块写入到联机重做日志文件。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 422: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-12

版权所有 © 2009,Oracle。保留所有权利。

后台进程和恢复:重做日志文件和日志写进程

重做日志文件:

• 记录数据库的更改

• 应多路复用以避免文件丢失

日志写进程何时执行写入:

• 提交时

• 达到三分之一满时

• 每隔三秒

• DBWn 执行写入之前组 3

日志写进程(LGWR)

重做日志组 1

重做日志组 2

重做日志缓冲区

SGA

重做日志组 3

后台进程和恢复:重做日志文件和日志写进程

重做日志文件记录因执行事务处理和 Oracle 服务器内部操作而对数据库所做的更改。

(事务处理是逻辑工作单元,由用户运行的一个或多个 SQL 语句组成。)重做日志文件

可保护数据库的完整性,避免断电、磁盘故障等因素所导致的系统故障。重做日志文件

必须多路复用,以确保在出现磁盘故障事件时不会丢失其中存储的信息。

重做日志由重做日志文件组组成。重做日志文件组又由重做日志文件和其多路复用的副

本组成。每个相同的副本都是该组的一个成员,每个组按编号标识。日志写进程 (LGWR) 进程将重做记录从重做日志缓冲区写入到重做日志组的所有成员,直至文件已填满或请

求了日志切换操作。然后,会切换至下一组中的文件并执行写入。重做日志组以循环方式

使用。

最佳方案提示:多路复用的重做日志文件应尽量驻留在不同的磁盘中。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 423: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-13

版权所有 © 2009,Oracle。保留所有权利。

后台进程和恢复:归档程序 (ARCn)

归档进程 (ARCn):• 是一个可选的后台进程

• 将数据库设置为ARCHIVELOG 模式时

会自动归档联机重做

日志文件

• 保留对数据库进行的

所有更改的记录

日志写进程(LGWR)

归档进程(ARCn)

重做日志缓冲区

SGA

联机重做日志

归档日志文件

后台进程和恢复:归档程序 (ARCn)ARCn 是一个可选的后台进程。但是,在丢失磁盘后恢复数据库时,这个进程至关重要。

联机重做日志组填满后,Oracle 实例便开始对下一个联机重做日志组执行写入。从一个联

机重做日志组切换到另一个联机重做日志组的过程称为日志切换。ARCn 进程在每次进行

日志切换时都会对已填满的日志组进行归档。它会在重新使用日志组之前自动归档联机重

做日志组,因此会保留对数据库所做的所有更改。这样,即使磁盘驱动器损坏,也可以将

数据库恢复到故障点。

DBA 必须决定是将数据库配置为在 ARCHIVELOG模式下运行,还是在 NOARCHIVELOG模式下运行。

• 在 NOARCHIVELOG模式下,每次发生日志切换时,都会覆盖联机重做日志文件。

• 在 ARCHIVELOG模式下,必须先归档非活动的已填满联机重做日志文件组,才能

再次使用这些组。

注:对大多数备份策略而言,ARCHIVELOG模式是必须选择的模式(并且极易配置)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 424: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-14

版权所有 © 2009,Oracle。保留所有权利。

实例恢复

实例恢复或崩溃恢复:

• 原因是尝试打开一个数据库,该数据库中的文件在关闭

时没有进行同步

• 是自动执行的

• 使用重做日志组中存储的信息来同步文件

• 涉及到两个不同的操作:

– 前滚:数据文件还原到实例出现故障之前所处的状态。

– 回退:已执行但尚未提交的更改会返回到初始状态。

实例恢复

Oracle Database 10g 会从实例故障自动进行恢复。DBA 需要执行的操作就是正常启动实例。

实例会装载控制文件,然后尝试打开数据文件。如果发现数据文件在关闭时没有进行同步,

则使用重做日志组中包含的信息将数据文件前滚到关闭时的状态,然后回退所有未提交的

事务处理(因为还原表空间也已前滚)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 425: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-15

版权所有 © 2009,Oracle。保留所有权利。

实例恢复的阶段

1. 数据文件不同步

2. 前滚(重做)

3. 文件中已提交和未提交的数据

4. 回退(还原)

5. 文件中已提交的数据

数据库

还原

实例

后台进程

数据文件SCN:99

数据文件SCN:129

数据文件SCN:140

控制文件SCN:143

控制文件SCN:143

重做日志组SCN 74-101

重做日志组SCN 102-143

SGA

实例恢复的阶段

数据文件头中包含的系统更改号 (SCN) 必须与数据库控制文件中存储的当前 SCN 匹配,

这样实例才能打开一个数据文件。

如果编号不匹配,实例会应用联机重做日志中的重做数据,并按顺序“重做”事务处理,

直到数据文件处于最新状态。所有数据文件与控制文件同步后,就会打开数据库,此时用

户可登录。

应用重做日志后,会应用所有事务处理,使数据库返回到出现故障时的状态。这通常包括

正在进行但尚未提交的事务处理。打开数据库之后,会回退那些未提交的事务处理。在实

例恢复的回退阶段结束时,数据文件只包含已提交的数据。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 426: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-16

版权所有 © 2009,Oracle。保留所有权利。

优化实例恢复

• 在实例恢复期间,必须将检查点位置与重做日志末尾

之间的事务处理应用于数据文件。

• 通过控制检查点位置与重做日志末尾之间的差异可优化

实例恢复。

重做日志末尾检查点位置

事务处理

实例恢复

优化实例恢复

在实例为事务处理返回 commit complete(提交完成)之前,事务处理信息始终记录

在重做日志组中。重做日志组中的信息用于确保在出现故障时可以恢复事务处理。另外,

事务处理信息还需要写入到数据文件中。由于数据文件写操作比重做写操作要慢很多,

因此,数据文件写操作通常发生在信息已记录到重做日志组中之后。(数据文件随机写

操作比重做日志文件连续写操作要慢。)

每隔三秒,检查点进程就会在控制文件中记录一次关于重做日志中检查点位置的信息。

因此,Oracle 数据库认为此时间点之前记录的所有重做日志项对数据库恢复来说都不是

必需的。在幻灯片图形中,带条纹的块尚未写入到磁盘。

实例恢复所需的时间是指将数据文件由其最后一个检查点返回到控制文件中记录的最新

SCN 所需的时间。管理员可通过设置 MTTR 目标(以秒为单位)并通过重做日志组的大

小来控制这个时间。检查点位置与重做日志组末尾之间的距离,永远不能大于最小重做

日志组的 90%。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 427: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-17

版权所有 © 2009,Oracle。保留所有权利。

使用 MTTR 指导

• 以秒或分钟为单位指定所需的时间。

• 默认值为 0(禁用)。

• 最大值为 3,600 秒(1 个小时)。

MTTR 指导

要获得有关设置 MTTR 目标的帮助,请选择“Enterprise Manager > Administration > Advisor Central > MTTR Advisor(Enterprise Manager > 管理 > 指导中心 > MTTR 指导)”。

这个指导可将 FAST_START_MTTR_TARGET值转换为多个参数,以便在所需时间内或者

在尽量接近此时间的范围内启用实例恢复。

如果将 FAST_START_MTTR_TARGET参数显式设置为 0,则会禁用自动检查点优化。另

外,如果将 FAST_START_MTTR_TARGET参数显式设置为大于 0 的值,则会启用重做日

志指导。

必须将 FAST_START_MTTR_TARGET参数设置成一个支持系统的服务级协议的值。如果

MTTR 目标的值较小,则 I/O 开销会因数据文件写入次数增加而增加(从而影响性能)。

但是,如果 MTTR 目标设置得过大,实例崩溃后要花费更长的时间进行恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 428: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-18

版权所有 © 2009,Oracle。保留所有权利。

介质故障

磁盘控制器故障

删除或损坏了数据库文件

可能的解决方法典型原因

1. 从备份中还原受影响的文件。

2. 如果需要,通知数据库关于新

文件的位置。

3. 如果需要,通过应用重做信息来

恢复文件。

磁盘驱动器故障

介质故障

Oracle Corporation 将介质故障定义为导致一个或多个数据库文件(数据文件、控制文件或

重做日志文件)丢失或损坏的任何故障。

要从介质故障进行恢复,需要还原并恢复缺失的文件。为确保能从介质故障恢复数据库,

请遵循后面几页中概述的最佳方案。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 429: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-19

版权所有 © 2009,Oracle。保留所有权利。

进行配置以提高可恢复性

要配置数据库以使可恢复性达到最大,必须:

• 计划常规备份

• 多路复用控制文件

• 多路复用重做日志组

• 保留重做日志的归档副本

进行配置以提高可恢复性

要最有效地保护数据,必须:

• 计划常规备份:大多数介质故障需要从备份还原丢失或损坏的文件。

• 多路复用控制文件:与数据库关联的所有控制文件是完全相同的。丢失一个控制文

件后进行恢复并不难。但是丢失了所有控制文件后进行恢复则很困难。为了避免丢

失所有控制文件,至少要有三个副本。

• 多路复用重做日志组:要从实例故障或介质故障进行恢复,可使用重做日志信息将

数据文件前滚到最后一个提交的事务处理。如果重做日志组依赖于一个重做日志文

件,那么这个文件丢失了很可能意味着数据也丢失了。在不同的磁盘控制器中,如

果可能的话,至少要确保每个重做日志组有两个副本。

• 保留重做日志的归档副本:如果某个文件丢失后通过备份已还原,实例就必须应用

重做信息,以便将该文件返回到控制文件中包含的最新 SCN。使用默认设置时,重

做信息写入到数据文件后,数据库会覆盖这些信息。可将数据库配置为在重做日志

的归档副本中保留重做信息,也就是将数据库置于 ARCHIVELOG模式下。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 430: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-20

版权所有 © 2009,Oracle。保留所有权利。

控制文件

多路复用控制文件可避免数据库出现故障。建议数据库满足

以下条件:

• 控制文件至少有两个副本(Oracle 建议三个)

• 每个磁盘上一个副本

• 至少在单独的磁盘控制器上有一个副本

控制文件

控制文件

控制文件是一个二进制小文件,用于说明数据库的结构。只要装载或打开了数据库,

Oracle 服务器就必须能够写入这个文件。如果这个文件不存在,就不能装载数据库,

因此需要恢复或重新创建控制文件。数据库必须至少在不同的磁盘上有两个控制文件

(最好三个),才能将丢失某个控制文件所造成的影响减至最低。

如果数据库是使用 Oracle Managed Files (OMF) 通过 Database Configuration Assistant (DBCA) 创建的,则有两个控制文件。如果没有使用 OMF,则有三个控制文件。

因为所有控制文件必须随时可用,所以丢失单个控制文件会导致实例出错。但是,这种

情况下进行恢复是一项简单的工作,只需复制一个控制文件即可。丢失了所有控制文件

后,要进行恢复则困难一些,但这种故障通常也不是灾难性故障。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 431: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-21

版权所有 © 2009,Oracle。保留所有权利。

重做日志文件

多路复用重做日志组可避免介质故障和数据丢失。建议重做

日志组满足以下条件:

• 每个组至少有两个成员(文件)

• 每个成员都位于一个独立的磁盘驱动器上

• 每个成员都位于一个独立的磁盘控制器上

注:写入重做日志

会严重影响性能。

组 1 组 2 组 3

磁盘 1

磁盘 2

成员 1 成员 2 成员 1

成员 2 成员 1 成员 2

重做日志文件

重做日志组由一个或多个重做日志文件组成。组中的每个日志文件都是其它日志文件的

副本。Oracle 建议每个重做日志组至少包含两个文件,这两个文件要分布在不同的磁盘

或控制器上,这样单个设备出现故障时就不会损坏整个日志组。

丢失了整个日志组可以算是一种最严重的介质故障,因为这会导致丢失数据。但丢失了

包括多个成员的日志组中的一个成员是微不足道的,这并不影响数据库运行,只会导致

在预警日志中发布预警。如果要在丢失了整个日志组后进行恢复,需要掌握高级恢复技

术。“Oracle Database 10g:数据库管理-课堂练习 I”中对此进行了介绍。

请记住,由于不能在事务处理信息写入到日志之前完成提交,所以重做日志会严重影响

数据库的性能。必须将重做日志文件置于速度最快的磁盘中,由速度最快的控制器为其

提供服务。如果可能,请不要将其它任何数据库文件与重做日志文件保存在同一磁盘上。

由于在给定时间只能写入一个组,因此,同一磁盘中包含多个组的成员不会有什么损害。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 432: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-22

版权所有 © 2009,Oracle。保留所有权利。

多路复用重做日志

多路复用重做日志

通过在现有日志组中添加成员可多路复用重做日志。要在重做日志组中添加成员(数据库

已打开,且不影响用户性能),请执行以下步骤:

1. 导航到“Redo Log Groups(重做日志组)”页。

2. 选择一个组并单击“Edit(编辑)”按钮,或者单击组编号链接。此时会出现“Edit Redo Log Group(编辑重做日志组)”页。

3. 在“Redo Log Members(重做日志成员)”区域中,单击“Add(添加)”。此时会

显示“Add Redo Log Member(添加重做日志成员)”页。

4. 输入文件名和文件目录。单击“Continue(继续)”。

注:建议将成员存储在单独的驱动器中,以避免在出现磁盘故障时重做日志项全部

丢失。

针对现有的每个组重复以上步骤。

向组中添加重做日志成员时,已添加的日志文件状态会设置为 INVALID,可以在

v$logfile视图中看到这些文件。由于尚未写入组成员,所以此状态为预期状态。发生

日志切换或无效组变为当前组时,此状态会改为 CURRENT。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 433: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-23

版权所有 © 2009,Oracle。保留所有权利。

归档日志文件

要保留重做信息,请通过执行以下步骤,创建重做日志文件

的归档副本。

1. 指定归档日志文件命名惯例。

2. 指定一个或多个归档日志文件的位置。

3. 将数据库切换到 ARCHIVELOG 模式。

联机重做日志文件 归档日志文件

归档日志文件

实例会将联机重做日志组视为一个可在其中存储事务处理信息的循环缓冲区,因而会填充

一个组,然后转到下一个组。写入所有组后,实例开始覆盖第一个日志组中的信息。

要配置数据库以获得最大的可恢复性,必须在允许数据库覆盖重做信息之前,指示数据库

生成联机重做日志组的副本。这些副本又称为归档日志。为了帮助创建归档日志文件,必

须执行以下步骤:

1. 指定归档日志的命名惯例。

2. 指定用于存储归档日志的一个或多个目的地。

3. 将数据库置于 ARCHIVELOG模式。

• 如果使用的是快速恢复区,则步骤 1 和 2 是不必要的。

• 将数据库置于 ARCHIVELOG模式之前,该目的地必须存在。如果将某个目录指定为

一个目的地,则该目录名的末尾应加上斜杠。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 434: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-24

版权所有 © 2009,Oracle。保留所有权利。

归档日志文件:命名与目的地

归档日志文件:命名与目的地

单击“Maintenance(维护)”页上的“Configure Recovery Settings(配置恢复设置)”,

可配置归档日志文件名和目的地。

每个归档日志文件必须有一个唯一的名称,这样可避免覆盖较旧的日志文件。请指定命名

格式,如幻灯片所示。为了帮助创建唯一文件名,Oracle Database 10g 允许在名称格式中

使用多个通配符:

• %s:包含日志序列号作为文件名的一部分

• %t:包含线程号作为文件名的一部分

• %r:包含重置日志 ID 可确保归档日志文件名是唯一的,甚至在使用某些高级恢复

技术重置了日志序列号之后也是如此

• %d:包含数据库 ID 作为文件名的一部分

格式必须包含 %s、%t 和 %r。%d 是可选的,但是如果多个数据库共享同一归档日志目

的地,则必须包含这个通配符。

归档日志文件最多可以写入到十个不同的目的地。目的地可以是本地目的地(目录),

也可以远程目的地(备用数据库的 Oracle Net 别名)。本地目的地必须以斜杠“/”(如果使用的是 Windows,则为反斜杠“\”)结束。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 435: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-25

归档日志文件:命名与目的地(续)

默认目的地(编号 10)将归档日志文件发送到 DB_RECOVERY_FILE_DEST初始化参数

确定的位置。DB_RECOVERY_FILE_DEST又称为快速恢复区。这个目的地显示在

“Configure Recovery Settings(配置恢复设置)”属性页的底部,其名称为“Flash Recovery Area Location(快速恢复区位置)”。如果不希望将归档日志文件发送到此位置,

请删除 USE_DB_RECOVERY_FILE_DEST。

要更改恢复设置,必须以 SYSDBA或 SYSOPER身份建立连接。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 436: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-26

版权所有 © 2009,Oracle。保留所有权利。

ARCHIVELOG模式

• 要将数据库置于 ARCHIVELOG 模式下,请执行以下

步骤:

1. 选中“ARCHIVELOG Mode(ARCHIVELOG模式)”

复选框。

2. 单击“Apply(应用)”。只能在 MOUNT状态下将数据库

设置为 ARCHIVELOG 模式。

3. 系统询问是否要重新启动数据库时,请单击“Yes(是)”。

4. 备份数据库。

• 处于 ARCHIVELOG 模式下的数据库可访问所有备份和

恢复选项。

ARCHIVELOG 模式

通过将数据库置于 ARCHIVELOG模式,可避免在归档重做日志之前覆盖这些日志。使用

以下 SQL 命令可将数据库置于 ARCHIVELOG模式:SQL> ALTER DATABASE ARCHIVELOG;

只有在数据库处于 MOUNT状态时才能发出此命令,因此,必须重新启动实例才能完成此

最后一步。重新启动数据库期间,系统会提示您指定操作系统并提供数据库身份证明。

数据库身份证明必须是具有 SYSDBA权限的用户的身份证明。

重新启动实例后,对归档进程、日志格式和日志目的地所做的更改就会生效。

数据库处于 NOARCHIVELOG模式(默认模式)时,只能将数据恢复到上次备份时的状态。

备份后执行的所有事务处理都会丢失。

在 ARCHIVELOG模式下,可以将数据恢复到上次提交时的状态。大多数生产数据库都在

ARCHIVELOG模式下运行。

注:在切换到 ARCHIVELOG模式后要备份数据库,因为在该模式下数据库只能从上次备

份进行恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 437: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-27

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,应该已经学会如何:

• 确定 Oracle 数据库中可能出现的故障类型

• 说明优化实例恢复的方法

• 明确检查点、重做日志文件和归档日志文件的重要性

• 配置 ARCHIVELOG 模式

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 438: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 14-28

版权所有 © 2009,Oracle。保留所有权利。

练习概览:进行配置以提高可恢复性

本练习包含以下主题:

• 多路复用控制文件

• 多路复用重做日志组

• 将数据库置于 ARCHIVELOG 模式

• 确保创建冗余的归档日志

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 439: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

版权所有 © 2009,Oracle。保留所有权利。

执行数据库备份

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 440: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-2

版权所有 © 2009,Oracle。保留所有权利。

课程目标

学完本课后,应能完成以下工作:

• 创建一致的数据库备份

• 在不关闭数据库情况下备份数据库

• 创建增量备份

• 使数据库自动进行备份

• 监视快速恢复区

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 441: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-3

版权所有 © 2009,Oracle。保留所有权利。

备份解决方案:概览

可使用以下各项来进行备份:

• Recovery Manager • Oracle Secure Backup • 用户管理的方案

备份解决方案:概览

如本课后半部分所述,Recovery Manager (RMAN) 是推荐使用的备份 Oracle 数据库的

方法。

Oracle Secure Backup 由于添加了备份到磁带功能和网络备份功能,可作为现有功能的

补充。

用户管理的备份是基于脚本的,因此 DBA 必须编写脚本。这种方法已逐渐被淘汰,

因为它需要较多的人工参与。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 442: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-4

版权所有 © 2009,Oracle。保留所有权利。

Oracle Secure Backup

• Oracle Secure Backup 和 RMAN 为 Oracle 环境提供

了端到端备份解决方案:

– 对文件系统数据和 Oracle 数据库使用集中式磁带备份管理

– 对 RMAN 备份使用以最合理方式进行了集成的介质管理层

– 可备份网络任何位置的任何数据

• 在整个备份解决方案中使用一种技术支持资源,可加速问

题的解决过程。

• 确保以较低的成本和复杂性实现可靠的数据保护。

Oracle Secure Backup Oracle 当前用于备份和恢复数据库的产品是 Recovery Manager。Oracle Secure Backup 通过

以下方式对现有功能提供补充:

• 完整的备份解决方案:Oracle Secure Backup 为数据库数据和非数据库数据提供数据

保护以保护整个 Oracle 环境。

• 介质管理:Oracle Secure Backup 为 RMAN 数据库备份到磁带提供了介质管理层。

在 Oracle Secure Backup 出现之前,客户必须购买价格昂贵的第三方介质管理产品来

实现与 RMAN 磁带备份的集成。

• 在网络中的任何位置进行备份:Oracle Secure Backup 可将连接到网络的多个计算机

系统中的数据备份到网络中的三级存储资源。Oracle Secure Backup 支持服务器、客

户机、网络附加存储 (NAS) 服务器的各种配置,支持三级存储设备,并且可以保护

网络存储环境。

将 RMAN 和 Oracle Secure Backup 组合在一起可以在 Oracle 产品堆栈内实现完整的端到

端备份解决方案。这样,因为由 Oracle 公司负责提供整个备份解决方案,所以可以为客

户提供更好的支持。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 443: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-5

版权所有 © 2009,Oracle。保留所有权利。

用户管理的备份

用户管理的方案:

• 指通过手动过程来跟踪备份需求和状态。

• DBA 需要编写脚本。

• 需要将数据库文件置于正确的模式

以进行备份。

• 依赖操作系统命令来备份文件。

用户管理的备份

要进行用户管理的备份,必须编写用于执行备份的脚本。可运行的方案有多种,必须编写

脚本来处理这些方案。以下是脚本必须采取的一些步骤:

• 查询 v$datafile以确定需要备份的数据文件及其当前状态。

• 查询 v$logfile以标识联机重做日志文件。

• 查询 v$controlfile以标识要备份的控制文件。

• 将每个表空间置于联机备份模式下。

• 查询 v$backup以查看哪些数据文件是置于联机备份模式下的表空间的一部分。

• 发出操作系统复制命令,将数据文件复制到备份位置。

• 使每个表空间退出联机备份模式。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 444: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-6

版权所有 © 2009,Oracle。保留所有权利。

术语

• 备份策略可包括:

– 整个数据库(整体备份)

– 部分数据库(部分备份)

• 备份类型可表明:

– 包含所有数据文件中的所有信息(完全备份)

– 仅包含自以前某次备份以来更改过的信息(增量备份)

• 备份模式可为:

– 脱机(一致备份或冷备份)

– 联机(非一致备份或热备份)

术语

整个数据库备份包括所有数据文件和至少一个控制文件。(请记住,数据库中的所有控制

文件都是相同的。)

部分数据库备份可能包括零个或多个表空间、零个或多个数据文件、一个控制文件(也可

能不包括备份控制文件)。

完全备份会创建所备份的文件中包含数据的所有数据块的副本。

增量备份会创建一个包含自以前某次备份以来更改过的所有数据块的副本。Oracle Database 10g 支持两个级别的增量备份(0 和 1)。级别 0 或基线备份等同于完全备份,

其中包含所有数据块。级别 1 增量备份可以采用以下两种类型之一:累积或差异。累积

备份会备份自上次级别 0 备份以来的所有更改。差异备份会备份自上次增量备份以来的

所有更改(可以采用级别 0 或级别 1)。

脱机备份(也称为一致备份)是在未打开数据库的情况下进行的。之所以称为一致备份,

是因为进行备份时,数据文件头中的系统更改号 (SCN) 与控制文件中的 SCN 相匹配。

联机备份(也称为热备份或非一致备份)是在打开数据库的情况下进行的。之所以称为

非一致备份,是因为在打开了数据库的情况下不能确保数据文件与控制文件同步。如果

使用了非一致备份,则需要按顺序进行恢复。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 445: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-7

版权所有 © 2009,Oracle。保留所有权利。

术语

备份可存储为:

• 映像副本

• 备份集

数据文件 #2

数据文件 #3

数据文件 #4

数据文件 #5

数据文件 #1

数据文件 #6映像副本

备份集

数据文件 #6数据文件 #5

数据文件 #4数据文件 #3

数据文件 #2数据文件 #1

术语(续)

映像副本是指数据或归档日志文件的副本(类似于只使用操作系统命令复制文件)。

备份集是一个或多个二进制文件的集合,其中包含一个或多个数据或归档日志文件。使用

备份集时,不会存储空数据块,因此备份集在磁盘或磁带上占用的空间比较小。通过压缩

备份集可进一步降低备份的空间要求。

映像副本必须备份到磁盘上。备份集可发送到磁盘或直接发送到磁带。

将备份存储为映像副本的优势在于改善了还原操作的粒度。使用映像副本时,只需要从

磁带检索一个或多个文件。使用备份集时,必须先从磁带检索整个备份集,然后才能提

取所需的文件。

将备份存储为备份集的优势在于可更好地利用空间。大多数数据库都包含 20% 或更多的

空块。映像副本会备份每个数据块,即使数据块为空也备份。备份集可明显地降低备份

所需的空间。在多数系统中,备份集的优势强于映像副本的优势。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 446: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-8

版权所有 © 2009,Oracle。保留所有权利。

Recovery Manager (RMAN)

• 在 Enterprise Manager 中使用 Recovery Manager (RMAN) 执行备份和恢复操作。

• RMAN:

– 是可提供高级功能的命令行客户机

– 具有强大的控制能力和脚本编写语言

– 具有一个已公布的 API,可用来连接到大多数常用

备份软件

– 可备份数据、控制文件、归档日志文件和服务器参数

文件

– 可将文件备份到磁盘或磁带

Recovery Manager (RMAN) RMAN 是 Oracle Database 10g 中用于执行备份和恢复操作的一个组件。使用它可执行

一致备份或非一致备份,增量备份或完全备份,还可以备份整个数据库或部分数据库。

RMAN 使用自己的强大的作业控制能力和脚本编写语言,以及一个已公布的 API。可使

用该 API 可将 RMAN 连接到许多常用的备份软件解决方案。

为了快速进行恢复,RMAN 将备份存储在磁盘上,也可以将备份存储在磁带上以便长期

存储。为了让 RMAN 将备份存储在磁带上,必须配置到磁带设备的接口,磁带设备也称

为介质管理库 (MML)。

Enterprise Manager 提供了一个图形界面来显示 常用的 RMAN 功能。可通过 RMAN 的命令行客户端访问高级备份和恢复操作。有关 RMAN 高级功能的详细信息,请参阅

“Oracle Database 10g:数据库管理-课堂练习 II”或《Oracle 备份和恢复高级用户

指南》。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 447: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-9

版权所有 © 2009,Oracle。保留所有权利。

配置备份设置

配置备份设置

导航到“Maintenance(维护)”页,然后单击“Configure Backup Settings(配置备份设

置)”。在这个属性页上,可管理用于创建备份的永久备份设置。磁盘和磁带都另外有

单独的设置。磁带设置取决于介质管理库功能。磁盘设置包括:

• 并行度:要创建多少个单独的备份信息流?并行度的 佳设置取决于硬件。如果只

有一个 CPU、一个磁盘控制器或一个磁盘服务器,则并行备份不会带来什么益处。

随着硬件资源的增加,相应的并行度也会增加。

• 磁盘备份位置:备份应存储在何处?默认位置是快速恢复区。如果更改了这个设置,

请单击“Test Disk Backup(测试磁盘备份)”,验证 RMAN 是否可写入到新位置。

• 磁盘备份类型:选择映像副本、备份集或压缩备份集。

单击“Backup Set(备份设置)”标签,设置备份集文件的 大大小。此 大值用于将备

份集划分为称为“备份片段”的单元,以方便进行归档。

在 Enterprise Manager 中需要提供主机身份证明,才能保存对备份设置所做的任何更改。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 448: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-10

版权所有 © 2009,Oracle。保留所有权利。

配置备份设置

配置备份设置(续)

单击“Policy(策略)”标签,可执行以下操作:

• 自动备份每次备份的控制文件和服务器参数文件 (SPFILE)。如果不希望将备份转到

快速恢复区,可另外为这些备份指定一个位置。

• 通过不备份某些文件来优化备份,前提是这些文件与属于已保留备份部分的一个文

件完全匹配。使用这个设置可跳过只读和脱机数据文件。

• 启用块更改跟踪功能并指定跟踪文件的位置。如果要创建增量备份,使用这个设置

可减少选择增量备份中包括的块时所需的时间。

• 从整个数据库备份中排除表空间。有些管理员不备份某些表空间,因为可以很容易

地重新创建这些表空间包含的数据或对象(如索引或频繁成批加载的数据)。

• 指定保留策略:RMAN 应将备份保留多长时间?如果使用快速恢复区存储备份,

RMAN 会通过自动删除旧备份来为新备份腾出空间(如果保留策略允许)。默认情

况下,只保留上一次备份。可将保留策略指定为备份数或天数。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 449: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-11

版权所有 © 2009,Oracle。保留所有权利。

计划备份:策略

选择备份整个数据库或部分数据库。

计划备份:策略

在“Maintenance(维护)”属性页的“Backup/Recovery(备份/恢复)”区域中,单击

“Schedule Backup(计划备份)”。选择 Oracle 建议的备份策略或自定义策略。Oracle 建议的备份策略是执行一次性整个数据库备份,这个备份是联机执行的。这是基线增量

级别 0 备份。自动备份策略随后会计划以后每天执行增量级别 1 备份。

通过选择“Customized(自定义)”,可访问更多的配置选项。请选择要备份的对象-

整个数据库(默认值)或单个表空间、数据文件、归档日志,或当前驻留在磁盘上的任何

Oracle 备份(将这些备份移到磁带)。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 450: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-12

版权所有 © 2009,Oracle。保留所有权利。

计划备份:选项

计划备份:选项

选择完全备份类型或增量备份类型。如果执行完全数据库备份,可以选择“Use as the base of an incremental backup strategy(用作增量备份策略的基础)”,使完全数据库备份

成为增量级别 0 备份。如果使用映像副本,可以选中“Refresh the latest datafile copy on disk to the current time using the incremental backup(使用增量备份将磁盘上 近的数据文

件副本刷新至当前时间)”复选框,以更新现有备份,而不是创建新映像副本。

单击“Delete obsolete backups(删除过时备份)”,可删除超出以前配置的保留策略的

备份。如果是备份到快速恢复区,RMAN 会自动删除过时备份。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 451: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-13

版权所有 © 2009,Oracle。保留所有权利。

计划备份:设置

计划备份:设置

请选择备份是转到磁盘,还是转到磁带。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 452: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-14

版权所有 © 2009,Oracle。保留所有权利。

计划备份:计划

计划备份:计划

选择希望如何计划备份-是一次性作业还是循环过程。

要配置数据库以获得 大可恢复性,Oracle 建议定期计划备份。自动备份可减少管理员的

工作量。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 453: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-15

版权所有 © 2009,Oracle。保留所有权利。

计划备份:复查

单击“Edit RMAN Script(编辑 RMAN 脚本)”可复查

RMAN 命令。

计划备份:复查

RMAN 使用自己的命令语法和脚本编写语言。单击“Edit RMAN Script(编辑 RMAN 脚本)”按钮可查看备份调度程序根据输入生成的命令。

使用这一页,可根据需要来自定义 RMAN 脚本,或复制这些脚本以便进行记录。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 454: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-16

版权所有 © 2009,Oracle。保留所有权利。

将控制文件备份到跟踪文件

控制文件有一个附加备份选项。

控制文件跟踪备份可用来在丢失了所有控制文件之后进行

恢复。

将控制文件备份到跟踪文件

在“Administration(管理)”属性页上的“Storage(存储)”区域中,单击“Control Files(控制文件)”,可管理数据库控制文件。控制文件有一个附加备份选项,可以将

控制文件备份到跟踪文件。当丢失了所有控制文件时,控制文件跟踪备份包含重新创建

控制文件所需要的 SQL 语句。

尽管正确配置的数据库(控制文件的多个副本放置在不同磁盘和不同控制器上)同时丢

失所有控制文件的可能性很小,但还是有可能发生。因此,每次数据库物理结构发生更

改(添加了表空间或数据文件,或添加了其它重做日志组时)后,管理员都应将控制文

件备份到跟踪文件。

使用 Enterprise Manager(如幻灯片所示),单击“Administration(管理)”属性页上的

“Control File(控制文件)”,或者通过使用以下 SQL 命令创建控制文件的跟踪副本:SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

跟踪备份的创建位置由 USER_DUMP_DEST初始化参数指定,文件名为

sid_ora_pid.trc。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 455: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-17

将控制文件备份到跟踪文件(续)

跟踪文件包含关于归档日志目的地(后跟用于创建替换控制文件并恢复数据库的命令)的信息:

CREATE CONTROLFILE REUSE DATABASE ORCL NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 226

LOGFILE GROUP 1 '/oracle/oradata/orcl/redo01.log' SIZE 10M, GROUP 2 '/oracle/oradata/orcl/redo02.log' SIZE 10M, GROUP 3 '/oracle/oradata/orcl/redo03.log' SIZE 10M

DATAFILE '/oracle/oradata/orcl/system01.dbf', '/oracle/oradata/orcl/undotbs01.dbf', '/oracle/oradata/orcl/sysaux01.dbf', '/oracle/oradata/orcl/users01.dbf', '/oracle/oradata/orcl/example01.dbf'

CHARACTER SET WE8ISO8859P1; -- Commands to re-create incarnation table -- Below log names MUST be changed to existing filenames on -- disk. Any one log file from each branch can be used to -- re-create incarnation records. -- ALTER DATABASE REGISTER LOGFILE

'/oracle/flash_recovery_area/ORCL/archivelog/2003_12_05/o1_mf_1_1_%u_.arc';

-- ALTER DATABASE REGISTER LOGFILE '/oracle/flash_recovery_area/ORCL/archivelog/2003_12_05/o1_mf_1_1_%u_.arc';

-- Recovery is required if any of the data files are restored backups,

-- or if the last shutdown was not normal or immediate. RECOVER DATABASE -- All logs need archiving and a log switch is needed. ALTER SYSTEM ARCHIVE LOG ALL; -- Database can now be opened normally. ALTER DATABASE OPEN; -- Commands to add tempfiles to temporary tablespaces. -- Online tempfiles have complete space information. -- Other tempfiles may require adjustment. ALTER TABLESPACE TEMP ADD TEMPFILE

'/oracle/oradata/orcl/temp01.dbf' SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE

32767M;

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 456: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-18

版权所有 © 2009,Oracle。保留所有权利。

管理备份

管理备份

在“Maintenance(维护)”属性页上,单击“Manage Current Backups(管理当前备份)”

可管理现有备份。在这一页上,可以查看备份的完成时间、创建位置(磁盘或磁带)以及

备份是否仍可用。

在“Manage Current Backups(管理当前备份)”页的顶端可看到四个按钮,使用这些按钮

可处理现有备份:

• Catalog Additional Files(将其它文件列入目录):尽管 RMAN(通过 Enterprise Manager 运行)是推荐使用的创建备份的方法,但是有些映像副本或备份集可能是通

过其它方法或在其它环境下创建的,这样 RMAN 就找不到这些备份。执行这个任务后

会找到这些文件,还会将这些文件添加到目录中。

• Crosscheck All(交叉检验全部备份):RMAN 可自动删除过时备份,但用户也可使用

操作系统命令删除这些备份。如果备份不是使用 RMAN 删除的,那么在目录与目录实

际内容之间执行交叉检验之前,目录并不知道是否缺失备份。

• Delete All Obsolete(删除所有过时备份):执行这个任务会删除早于保留策略的备份。

• Delete All Expired(删除所有过期备份):执行这个任务会删除执行交叉检验时未找

到的任何备份的目录列表。

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 457: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-19

版权所有 © 2009,Oracle。保留所有权利。

快速恢复区

通过监视快速恢复区,可执行以下操作:

• 配置闪回事件记录

• 调整恢复区的大小

• 查看当前空间占用情况

快速恢复区

快速恢复区是磁盘上用于包含归档日志、备份、闪回日志、镜像的控制文件以及镜像的

重做日志的保留空间。

如果已将归档日志配置为写入这个位置(其中一个位置中有 USE_DB_RECOVERY_AREA标记),则必须监视这个空间,以确保没有到达容量限制。如果实例因缺乏空间而无法

创建归档日志,实例就会暂停,直到管理员更正了这种情况为止。

单击“Maintenance(维护)”属性页上的“Recovery Settings(恢复设置)”,可转到

“Flash Recovery Area(快速恢复区)”设置。在此页上,可执行以下操作:

• 指定快速恢复区的位置

• 指定快速恢复区的大小(Oracle 建议至少为数据库大小的两倍,以便可保留一个

备份和若干归档日志。)

• 确定已占用了多少快速恢复区

• 配置闪回数据库。闪回数据库在“执行闪回”一课中会进行介绍

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 458: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-20

版权所有 © 2009,Oracle。保留所有权利。

小结

在本课中,应该已经学会如何:

• 创建一致数据库备份

• 在不关闭数据库情况下备份数据库

• 创建增量备份

• 执行自动数据库备份

• 监视快速恢复区

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 459: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Oracle Database 10g:数据库管理 - 课堂练习 I 15-21

版权所有 © 2009,Oracle。保留所有权利。

练习概览:创建数据库备份

本练习包含以下主题:

• 配置数据库进行备份

• 在数据库处于打开状态以供用户执行操作的情况下备份

数据库

• 计划每晚对数据库执行自动增量备份

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y

Page 460: CE%A2%CB%BC%CD%F8%C2%E7OCP_D… · 版权所有 © 2009 , Oracle 。保留所有权利。 免责声明 本文档包含专有权信息,并受版权法和其它知识产权法的保护。您可以

Ora

cle

Inte

rnal

& O

racl

e A

cade

my

Use

Onl

y