1

Similar documents
System Global Area, Oracle Background process Oracle, Server Process user process, user process : SQL*PLUS SYSTEM SQL> select name from v$datafile; NA

Oracle数据库应用技术4 [兼容模式]

Microsoft Word - WJ01.doc

ebook10-5

回滚段探究

Insert title here



水晶分析师


Oracle数据库高级实验课程(IBM AIX环境)

Oracle高级复制配置手册_业务广告_.doc

数据库朊务

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

作 者 Tom Best Maria Billings 技 术 撰 稿 人 和 审 稿 人 Celia Antonio Larry Baumann Tammy Bednar Howard Bradley M.J. Bryksa Sandra Cheevers Steve Friedberg Joel

Microsoft PowerPoint - Oracle University Mini lesson_Oracle Database 11g New Features Overview.ppt

PowerPoint Presentation


燃烧器电子控制系统 目录 2

Oracle Database 11g: New Features for Administrators

How to Find SHOUG?

untitled

ebook 96-16

数 据 库 管 理 第 章 (1) 创 建 一 个 简 单 的 表 空 间 Create tablespace user1 datafile 'e:\database\oracle\user1_data.dbf' size 00M; () 指 定 数 据 文 件 的 可 扩 展 性 Create t

é ê

Microsoft Word - ORA doc

上海现代设计集团建筑协同设计平台研究与应用

ebook 132-2

????????


ebook 185-6

,,,,,,, ;,, ;, ;, (, / ),, ;,,.,,,,,,,,,,,,,,,,, ;,,,,,,, 1, :,,, ;,,,, (, ),,,,, 1,,, (,, )

ORACLE Enterprise Linux 6.3下ORACLE11g的安装

ebook 132-6

孙 蓝等 基于目标导向的研究生英语学习模式创新

untitled

使用SQL Developer

目錄

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

SiteView技术白皮书

Microsoft Word - 刘盛ACOUG Library2.docx

Microsoft Word - Functional_Notes_3.90_CN.doc

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

安全救护教学设计 一 教学导入 教学过程设计 二 学情了解 三 学习新课 1. 指压止血法

校友会系统白皮书feb_08

1

<4D F736F F F696E74202D20B5DABEC5D5C220CAFDBEDDBFE2B0B2C8ABD0D42D6E6577>

# # # # # # # # #


旅游科学

泛型编程与C++标准库

Oracle Database 10g: SQL (OCE) 的第一堂課

中科曙光DBStor100备份存储系统

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

二 政府事权划分标准的理论分析 一 公共物品受益理论

使用前须知 Windchill ProductPoint 1.1 M030

Data Storage Handbook

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

目 录 汉 邦 高 科 介 绍 局 域 网 设 置 广 域 网 设 置 网 络 访 问 常 见 问 题 销 售 服 务 网 络 2

营 销 策 划 岗 部 门 招 聘 职 位 招 聘 人 数 岗 位 职 责 基 本 要 求 岗 位 任 职 要 求 6 参 与 项 目 产 品 研 究 客 户 需 求 研 究 竞 争 环 境 研 究 价 格 研 究 等 项 目 市 场 研 究 ; 7 公 司 经 纪 业 务 的 品 牌 管 理, 对

习题1

Slide 1

PowerPoint 演示文稿

通过动态路由协议实现链路备份

国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 的 e-hr 属 于 第 二 或 第 三 阶 段 比 如 A 集 团 公 司 是 国 内 知 名 的 汽 车 企 业, 人 力 资 源 部 门 有 100 名

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

第6章  数据库技术基础

幻灯片 1

关 于 我 姓 名 : 葛 云 杰 网 名 :Dylan Oracle OCM Oracle 用 户 组 年 轻 专 家 中 国 OCM 联 盟 成 员 山 东 Oracle 用 户 组 联 合 创 始 人 齐 鲁 IT 联 盟 联 合 创 始 人 软 件 研 发 工 程 师 具 有 十 年 以 上


幻灯片 1

D77758CN20_SG2.pdf

137677_Eta_press Folder-cn用的.indd

中国与欧洲关系 年

epub 61-2

项目 3 创建和管理表 任务实现 Office Visio PK 3 FK FK1 3.1 相关知识 SQL Server 一 制订表规划 1. 表要存储什么对象 2. 表中每一列的数据类型和长度 059

Corporate PPT Template

季刊9web.indd

untitled

01

01

研究问题 自主学习中心 研究对象 研究方法 自主学习中心参与度以及学生对其认可度

一次SQL Tuning引出来的not in , not exists 语句的N种写法


Sun Fire V440 Server Administration Guide - zh_TW

数据库系统概论讲义

幻灯片 1


ESOL-CN-Bleed.pub

抗战时期沦陷区的电影检查 #

信息

f2.eps

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

2015年数据漏洞威胁分析报告

¹ º» ¼ ½ ¹ º» ¼ ½

PureSCM enhances competitive advantage with an integrated approach to IT service level management

设计一个学生管理关系数据库,包括学生关系、课程关系和选课关系


! " # +(!"# $%& (!"!#$%& (&%!)*) +,)) )!#$%&+!$%-./! $*0! +,)) 1*23!% %*2$*23 1!%%*$*2,2#%!,) )4542*$ *0!2$*1*#,$*&2!! 1!%%*$*2 $#!"!)!" "

Oracle数据库实验指导书

Transcription:

第 1 章数据库体系结构概述... 1 1.1 基本组件概览... 3 1.2 例程与服务器... 5 1.2.1 ORACLE 服务器... 5 1.2.2 ORACLE 例程... 5 1.2.3 ORACLE 数据库... 6 1.2.4 建立连接与创建会话... 6 1.3 ORACLE 数据库物理结构和内存结构... 8 1.4 系统全局区 (SGA) 介绍... 10 1.4.1 共享池... 10 1.4.2 数据库缓冲区高速缓存... 11 1.4.3 重做日志缓冲区... 11 1.4.4 大型池... 11 1.4.5 JAVA 池... 12 1.5 程序全局区 (PGA) 介绍... 13 1.6 进程结构... 15 1.6.1 数据库写入程序 (DBWn)... 16 1.6.2 日志写入器 (LGWR)... 17 1.6.3 系统监控程序 (SMON)... 18 1.6.4 过程监视器 (PMON)... 18 1.6.5 检查点 (CKPT)... 18 1.6.6 归档程序 (ARCn)... 18 1.7 数据库的逻辑结构... 19 1.7.1 数据块... 20 1.7.2 区... 20 1.7.3 段... 20 1.7.4 表空间... 21 第 2 章创建数据库... 22 2.1 计划和组织数据库... 23 2.1.1 最佳灵活体系结构 (OFA)... 23 2.1.2 创建数据库的前提条件... 25 2.1.3 数据库管理员的验证方法... 25 2.2 创建数据库... 27 2.2.1 配置操作系统环境... 27 2.2.2 使用 Database Configuration Assistant 创建数据库... 28 2.2.3 手动创建数据库... 29 2.2.4 使用 Oracle 管理文件 (OMF) 创建数据库... 32 2.2.5 建库的故障排除... 33 2.3 数据库的创建结果... 34 第 3 章使用数据字典和动态性能视图... 35 3.1 随数据库创建的其他对象... 36 3.2 数据字典... 37 3.2.1 基表和数据字典视图... 37 3.2.2 创建基表... 38 Page 1

3.2.3 数据字典的内容... 38 3.2.4 数据字典的使用方式... 38 3.2.5 数据字典视图的类别... 39 3.2.6 数据字典示例... 39 3.3 动态性能表... 41 3.3.1 动态性能表示例... 42 3.3.2 管理脚本的约定... 42 第 4 章参数文件管理... 44 4.1 参数文件介绍与分类... 45 4.2 PFILE 介绍... 47 4.3 PFILE 介绍... 48 4.4 数据库的参数修改... 50 4.4.1 使用 ALTER 命令修改数据库参数... 50 4.4.2 更改参数的例子... 51 4.4.3 利用 PFILE 进行参数的修改... 51 4.2.4 SPFILE 和 PFILE 的互相备份... 51 4.2.5 从 SPFILE 中移除参数... 52 4.5 数据库启动与参数文件... 54 4.5.1 NOMOUNT 阶段... 55 4.5.2 NOMOUNT 阶段... 55 4.5.3 OPEN 阶段... 56 4.5.4 准备参数文件... 56 4.5.5 数据库启动时寻找参数的顺序... 57 4.5.6 STARTUP 命令启动数据库... 58 4.5.7 SHUTDOWN 命令关闭数据库... 59 4.6 告警日志... 61 4.7 跟踪文件... 63 第 5 章控制文件管理... 64 5.1 控制文件的用途... 65 5.2 列出控制文件的内容... 66 5.3 对控制文件进行多元备份和管理... 67 5.3.1 使用 SPFILE 时对控制文件进行多元备份... 67 5.3.2 使用 PFILE 时对控制文件进行多元备份... 68 5.4 使用 OMF 管理控制文件... 69 5.5 获取控制文件信息... 70 第 6 章维护重做日志文件... 71 6.1 联机重做日志文件的用途... 72 6.2 联机重做日志文件的结构... 73 6.3 重做日志文件如何发挥作用... 75 6.3.1 日志切换... 75 6.3.2 检查点... 76 6.3.3 强制执行日志切换和检查点... 76 6.4 对联机重做日志文件进行多元备份和维护... 78 6.4.1 添加联机重做日志文件组... 78 Page 2

6.4.2 添加联机重做日志文件成员... 79 6.4.3 删除联机重做日志文件组... 81 6.4.4 删除重做日志文件成员... 81 6.4.5 重定位或重命名联机重做日志文件... 83 6.4.6 重定位或重命名联机重做日志文件... 83 6.5 使用 OMF 管理联机重做日志文件... 85 6.6 获取联机重做日志的信息... 87 6.7 归档的重做日志文件... 89 第 7 章管理表空间和数据文件... 91 7.1 表空间和数据文件... 92 7.2 表空间的类型... 93 7.3 创建表空间... 94 7.4 表空间的空间管理... 95 7.4.1 本地管理表空间... 95 7.4.2 字典管理表空间... 96 7.5 其他类型表空间... 97 7.5.1 还原表空间... 97 7.5.2 临时表空间... 97 7.5.3 只读表空间... 98 7.6 表空间的管理... 99 7.6.1 使表空间脱机... 99 7.6.2 更改表空间的存储结构... 99 7.6.3 调整表空间的大小... 100 7.6.4 移动数据文件... 100 7.6.5 删除表空间... 101 7.6 表空间的管理... 102 7.7 获取表空间信息... 103 第 8 章还原 ( 回滚 ) 数据管理... 104 8.1 还原数据的用途... 105 8.1.1 还原段... 105 8.1.2 还原段的用途... 106 8.1.3 读一致性... 107 8.1.4 还原段的类型... 108 8.2 自动还原管理... 109 8.2.1 自动还原管理的概念... 109 8.2.2 自动还原管理的配置及参数... 109 8.2.3 创建 UNDO 表空间... 110 8.2.4 改变 UNDO 表空间... 111 8.2.5 切换 UNDO 表空间... 111 8.2.6 删除 UNDO 表空间... 112 8.2.7 自动还原管理的其它参数... 112 8.2.8 还原数据统计信息... 113 8.2.9 调整 UNDO 表空间的大小... 114 8.2.10 还原限额... 114 Page 3

8.3 从数据字典获取还原段信息... 116 第 9 章管理表... 118 9.1 各种存储数据的方法... 119 9.1.1 分区表简介... 119 9.1.2 按索引组织的表简介... 120 9.1.3 集簇表简介... 120 9.2 各种 Oracle 数据类型... 121 9.2.1 标量数据类型... 121 9.2.2 LONG LONG RAW 和大型对象 (LOB) 数据类型... 122 9.2.3 ROWID 和 UROWID 数据类型... 123 9.2.4 集合数据类型... 123 9.2.5 关系数据类型 (REF)... 124 9.2.6 用户定义的数据类型... 124 9.3 区分扩展的和受限的 ROWID... 125 9.4 概括行的结构... 128 9.5 创建表... 130 9.5.1 创建关系表或对象表... 130 9.5.2 使用 OEM 对象表... 132 9.5.3 创建表的原则... 132 9.5.4 创建临时表... 132 9.5.5 设置 PCTFREE 和 PCTUSED... 133 9.5.6 行移植和行链接... 133 9.6 管理表内的存储结构... 135 9.7 重新组织 截断和删除表... 137 9.8 删除表内的列... 139 9.8.1 直接删除列... 139 9.8.2 使用 UNUSED 选项... 140 9.8.3 删除列的限制... 141 9.9 查询表的信息... 141 第 10 章管理索引... 143 10.1 各种类型的索引及其用途... 144 10.2 B 树索引与位图索引简介... 146 10.3 比较位图索引和 B 树索引... 150 10.4 创建 B 树索引... 152 10.5 创建位图索引... 155 10.6 重新组织索引... 157 10.7 维护索引... 160 10.8 监视索引的使用... 162 10.9 删除索引... 164 10.10 获取索引信息... 166 第 11 章维护数据完整性... 167 11.1 约束的类型... 168 11.2 约束的状态... 169 11.3 约束检查... 171 Page 4

11.4 约束的注意事项... 173 11.5 创建约束... 175 11.5.1 创建表时定义约束... 175 11.5.2 创建表后定义约束... 176 11.6 约束定义的原则... 178 11.7 启用约束... 179 11.8 使用 EXCEPTIONS 表... 181 11.9 获取约束的信息... 183 第 12 章数据库安全管理... 186 12.1 配置文件管理... 186 12.2 口令的管理... 189 12.2.1 用户的锁定... 189 12.2.2 口令的有效期... 191 12.2.3 历史口令限制... 192 12.2.4 口令校验... 192 12.3 资源管理... 194 12.3.1 启用资源限制... 194 12.3.2 会话级资源限制... 194 12.3.3 调用级资源限制... 196 12.3.4 配置文件内参数的修改... 196 第 13 章管理用户... 198 13.1 用户和方案... 198 13.2 创建新的数据库用户... 200 13.3 管理用户的验证方式... 203 13.3.1 操作系统验证... 203 13.3.2 密码文件验证... 205 13.4 改变和删除现有的数据库用户... 207 13.4.1 更改用户的表空间限额... 207 13.4.2 删除用户... 207 13.4 监视现有用户的信息... 209 第 14 章管理角色... 210 14.1 创建和修改角色... 211 14.2 控制角色的可用性... 212 14.3 角色的撤销... 216 14.4 角色的删除... 218 14.5 PUBLIC 的角色... 219 14.6 使用预定义角色... 221 14.7 显示数据字典中角色的信息... 222 第 15 章管理权限... 223 15.1 权限相关视图... 224 15.2 SYSDBA 和 SYSOPER 权限... 226 15.3 SYS 方案... 227 15.4 授权和撤销系统权限... 230 15.5 授权和撤销对象权限... 232 Page 5

第 16 章审计... 234 16.1 审计介绍... 234 16.2 语句审计... 237 16.2.1 语句审计... 237 16.2.2 会话及访问审计... 241 16.2.3 审计成功与失败的语句... 243 16.2.4 通过用户名审计... 243 16.2.5 审计记录 SQL 语句... 244 16.3 对象审计... 245 16.4 权限审计... 247 16.5 会话审计... 249 16.6 获取审计的信息... 251 第 17 章 ORACLE NET 体系架构... 253 17.1 连接步骤... 253 17.1.1 连接数据库的方式... 254 17.1.2 客户端与 ORACLE 的连接步骤 ( 专用服务器模式 )... 255 17.2 监听器的启用与配置... 257 17.2.1 启动监听器... 257 17.2.2 监听器的配置... 258 17.3 配置文件... 260 17.4 SERVICE_NAME 初始化参数与动态注册... 266 17.4.1 动态注册与静态注册... 266 17.4.2 SERVICE_NAMES... 268 17.5 使用非 1521 端口... 269 17.4.1 静态注册... 269 17.4.2 动态注册... 270 第 18 章共享服务器... 274 18.1 共享服务器的工作原理... 274 18.2 共享服务器的配置... 279 18.1.1 调度程序... 279 18.1.2 共享服务器进程... 279 18.1.3 配置共享服务器... 280 18.1.4 MAX_DISPATCHERS 与 MAX_SHARED_SERVERS... 282 18.1.5 初始化参数 :SHARED_SERVER_SESSIONS... 284 18.1.6 初始化参数 CIRCUITS... 284 18.1.7 PGA 和 SGA... 286 18.1.8 大池 LARGE_POOL_SIZE... 286 18.3 共享服务器总结... 287 Page 6

序 言 本篇主要介绍 Oracle 数据库体系结构, 在学习体系结构之前, 用一个例子来让他更形象一些 体系结构到底是什么呢? 每个人都会认识新的朋友, 当你认识一个新朋友的时候, 你是通过什么来定位这个朋友的特点呢? 是通过他的鼻子, 或者通过他的眼睛, 或者通过他的脸? 都不是, 你通过的是他的整体, 他的声音是什么样的, 他的性格是什么样的, 他的体形是什么样的, 当你想到这个朋友的时候, 在你脑海里面, 出现的是他的很多特征, 这些特征组合起来, 才是你的朋友 体系结构就是 ORACLE 的整体概览和每个大的组件的介绍, 在不同的组件里面, 会详细介绍该组件的内容, 通过学习体系结构, 我们会对 ORACLE 有一个整体的概念, 方便我们后续的学习 体系结构主要介绍下面的内容 : 1 ORACLE 实例 包括内存结构与后台进程 2 ORACLE 数据库 物理操作系统文件的集合 3 内存结构的组成 4 后台进程的作用 5 数据库的物理文件 6 各种逻辑结构 ORACLE 数据库和数据库的物理结构, 就如同人的身体结构一样, 展现了一个人的外部特征,ORACLE 实例如同人的神经, 展现了一个人对事务的内部反应,ORACLE 的逻辑结构, 如同人的不同的内部组织, 执行着人生存的基本功能 无论你之前学了关于 ORACLE 数据库的哪些内容, 如果你希望能够学习好 ORACLE 数据库, 请认真学习它的体系结构, 它是学习 ORACLE 的基石, 是其他所有学习的根本 第一章 Page 1

第 1 章数据库体系结构概述 您将学习 : 1. 基本组件概览 2. 例程与服务器 3. ORACLE 数据库物理结构和内存结构 4. 系统全局区 (SGA) 介绍 5. 程序全局区 (PGA) 介绍 6. 进程结构 7. 数据库的逻辑结构 Page 2

第一节基本组件概览 基本组件概览,Oracle 的基本组件包括 : 内存组件 进程结构 文件结构 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.1 基本组件概览 完成本节的学习后, 您应该能达到下列目标 : 概括 Oracle 体系结构及其主要组件, 列出在用户连接到 Oracle 例程过程中涉及的结构 ORACLE 数据库的基本组件结构如图 1.1: Page 3

图 1.1 基本组件概览 Page 4

第二节 例程与服务器 ORACLE 服务器 ORACLE 例程 ORACLE 数据库 建立连接与创建会话 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.2 例程与服务器 1.2.1 ORACLE 服务器 Oracle 服务器是一个数据库管理系统, 它为信息管理提供了开放 综合和集成的方法包括 Oracle 例程和 Oracle 数据库 1.2.2 ORACLE 例程 Oracle 例程, 是一种访问 Oracle 数据库的方式, 始终打开一个, 并且只打开一个数据库由内存结构和后台进程结构组成 如图 1.2 所示 : Page 5

图 1.2 ORACLE 服务器和 ORACLE 例程 1.2.3 ORACLE 数据库 Oracle 数据库是一个被统一处理的数据集合, 包括三类文件, 如图 6.3: 图 1.3 ORACLE 数据库包含的文件 1.2.4 建立连接与创建会话 连接到 Oracle 例程包括 : 建立用户连接, 创建会话 图 6.4 给出了建立连接和创建会 话的过程 : Page 6

图 1.4 建立连接和创建会话 Page 7

第三节 ORACLE 数据库物理结构与内存结构 物理结构 : 控制文件 数据文件 重做日志文件 内存结构 : 系统全局区 (SGA) 与程序全局区 (PGA) Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.3 ORACLE 数据库物理结构和内存结构 ORACLE 数据库的物理结构包含以下三种类型的文件 : 控制文件 数据文件 重做日志文件 ORACLE 数据库的内存结构由两个内存区组成, 分别是 : 系统全局区 (SGA) : 在例程启动时分配, 是 Oracle 例程的基本组件 程序全局区 (PGA) : 在服务器进程启动时分配 图 1.5 给出了 ORACLE 数据库的内存结构图 : Page 8

图 1.5 ORACLE 数据库内存结构图 Page 9

第四节系统全局区 (SGA) 介绍 系统全局区 (SGA) 包括 : 共享池 数据库缓冲区高速缓存 重做日志缓冲区 大型池 JAVA 池 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.4 系统全局区 (SGA) 介绍 SGA 包括以下几种内存结构 : 共享池 数据库缓冲区高速缓存 重做日志缓冲区 其它结构 ( 例如锁定和闩锁管理以及统计数据 ) 在 SGA 中还可配置其它两种内存结构 : 大型共享池 Java 池 SGA 是动态的, 大小由 SGA_MAX_SIZE 参数指定, 由 SGA 组件以粒组为单位进行分配和跟踪 它是连续的虚拟内存分配, 粒组大小由估算的 SGA_MAX_SIZE 总计大小确定 1.4.1 共享池 共享池用于存储 : 最近执行的 SQL 语句, 最近使用的数据定义 它包括以下两个与性能相关的关键内存结构 : 库高速缓存, 数据字典高速缓存 其大小由 SHARED_POOL_SIZE 参数确定, 可以使用下面的命令修改 : Page 10

ALTER SYSTEM SET SHARED_POOL_SIZE = 64M; 库高速缓存用于存储有关最近使用的 SQL 和 PL/SQL 语句的信息启用常用语句共享由 最近最少使用算法 (LRU) 管理, 它包括以下两个结构 : 共享的 SQL 区 共享的 PL/SQL 区 大小由共享池的大小确定 数据字典高速缓存是数据库中最近使用的定义的集合, 包括与数据库文件 表 索引 列 用户 权限和其它数据库对象相关的信息, 在语法分析阶段, 服务器进程会在数据字典中查找用于解析对象名和验证访问的信息, 将数据字典信息高速缓存到内存中, 可缩短查询和 DML 的响应时间, 大小由共享池的大小决定 1.4.2 数据库缓冲区高速缓存 数据库缓冲区高速缓存存储已从数据文件中检索到的数据块的副本, 能够大幅提高获取和更新数据时的性能, 通过 LRU 算法管理, 主块的大小由 DB_BLOCK_SIZE 确定 它由独立的子高速缓存组成 : DB_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE 大小可以进行动态调整 : ALTER SYSTEM SET DB_CACHE_SIZE = 96M; 设置 DB_CACHE_ADVICE 可收集用于预测不同高速缓存大小行为的统计信息, 统计信息由 V$DB_CACHE_ADVICE 显示 Oracle 在运行期间向数据库高速缓存读写数据, 高速缓存命中表示信息已在内存中, 高速缓存失败意味着 ORACLE 必需进行磁盘 I/O 保持高速缓存失败率最小的关键是确保高速缓存的大小 1.4.3 重做日志缓冲区 重做日志缓冲区记录对数据库数据块所做的全部更改, 主要用于恢复, 其中记录的更改称作重做条目, 重做条目包含用于重新构造或重做更改的信息大小由 LOG_BUFFER 定义 1.4.4 大型池 大型池是 SGA 中的可选内存区, 它分担了共享池的一部分工作用于 : 共享服务器的会话内存 (UGA) I/O 服务器进程 备份和恢复操作或 RMAN 并行执行消息缓冲区, 将 PARALLEL_AUTOMATIC_TUNING 设置为 TRUE 大型池不使用 LRU 列表, 它的大小由 LARGE_POOL_SIZE 确定 Page 11

1.4.5 JAVA 池 存储 Java 命令的服务分析要求, 在安装并使用 Java 时是必需的, 大小由 JAVA_POOL_SIZE 参数确定 Page 12

第五节程序全局区 (PGA) 1. 对于 OLTP 系统 PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 20% 2. 对于 DSS 系统 PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 50% Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.5 程序全局区 (PGA) 介绍 程序全局区为连接到 Oracle 数据库的每个用户进程保留的内存, 在创建进程时分配, 在终止进程时回收, 仅供一个进程使用 在 Oracle9i 之前,PGA 的计算和控制都是比较复杂的事情, 从 Oracle9i 开始,Oracle 提供了一种 SQL 内存管理的新方法 : 自动化 SQL 执行内存管理 (Automated SQL Execution Memory Management), 使用这个新特性,Oracle 可以自动调整 S Q L 内存区, 而不用关闭数据库, 这一改进大大简化了 DBA 的工作, 同时也提高了 Oracle 数据库的性能 为实现自动的 PGA 管理,Oracle 引入了几个新的初始化参数 : 1.PGA_AGGREGATE_TARGET- 此参数用来指定所有 session 总计可以使用最大 PGA 内存 这个参数可以被动态的更改, 取值范围从 10M -- (4096G-1 )bytes 2.WORKAREA_SIZE_POLICY- 此参数用于开关 PGA 内存自动管理功能, 该参数有两个选项 :AUTO 和 MANUAL, 当设置为 AUTO 时, 数据库使用 Oracle9i 提供的自动 PGA 管理功能, 当设置为 MANUAL 时, 则仍然使用 Oracle9i 前手工管理的方式 缺省的,Oracle9i 中 WORKAREA_SIZE_POLICY 被设置为 AUTO 需要注意的是, 在 Oracle9i 中,PGA_AGGREGATE_TARGET 参数仅对专用服务器模式下 (Dedicated Server) 的专属连接有效, 但是对共享服务器 (Shared Server) 连接无效 ; 从 Oracle10g 开始 PGA_AGGREGATE_TARGET 对专用服务器连接和共享服务器连接同时生效 PGA_AGGREGATE_TARGET 参数同时限制全局 PGA 分配和私有工作区内存分配 : Page 13

1. 对于串行操作, 单个 SQL 操作能够使用的 PGA 内存按照以下原则分配 : MIN(5% PGA_AGGREGATE_TARGET,100MB) 2. 对于并行操作 30% PGA_AGGREGATE_TARGET /DOP (DOP=Degree Of Parallelism 并行度 ) 要理解 PGA 的自动调整, 还需要区分可调整内存 (TUNABLE MEMORY SIZE) 与不可调整内存 (UNTUNABLE MEMORY SIZE) 可调整内存是由 SQL 工作区使用的, 其余部分是不可调整内存 启用了自动 PGA 调整之后, Oracle 仍然需要遵循以下原则 : UNTUNABLE MEMORY SIZE + TUNABLE MEMORY SIZE <= PGA_AGGREGATE_TARGET 数据库系统只能控制可调整部分的内存分配, 如果可调整的部分过小, 则 Oracle 永远也不会强制启用这个等式 另外,PGA_AGGREGATE_TARGET 参数在 CBO 优化器模式下, 对于 SQL 的执行计划会产生影响 Oracle 在评估执行计划时会根据 PGA_AGGREGATE_TARGET 参数评估在 Sort,HASH-JOIN 或 Bitmap 操作时能够使用的最大或最小内存, 从而选择最优的执行计划 对于 PGA_AGGREGATE_TARGET 参数的设置,Oracle 提供这样一个建议方案 1. 对于 OLTP 系统 PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 20% 2. 对于 DSS 系统 PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 50% 也就是说, 对于一个单纯的数据库服务器, 通常我们需要保留 20% 的物理内存给操作系统使用, 剩余 80% 可以分配给 Oracle 使用 Oracle 使用的内存分为两部分 SGA 和 PGA, 那么 PGA 可以占用 Oracle 消耗总内存的 20%(OLTP 系统 ) 至 50%(DSS 系统 ) 这只是一个建议设置, 更进一步的我们应该根据数据库的具体性能指标来调整和优化 PGA 的使用 Page 14

第六节进程结构 数据库写入程序 (DBWn) 日志写入器 (LGWR) 系统监控程序 (SMON) 过程监视器 (PMON) 检查点 (CKPT) 归档程序 (ARCn) Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.6 进程结构 Oracle 数据库包含下面三种进程 : 用户进程 : 在数据库用户请求连接到 Oracle 服务器时启动, 请求与 Oracle 服务器交互的程序, 必须先建立连接, 不与 Oracle 服务器直接交互 如图 1.6: 图 1.6 用户进程服务器进程 : 与 Oracle 例程相连接, 在用户建立会话时启动, 直接与 Oracle 服务器交互的程序, 执行生成的调用并返回相关结果, 可以是专用服务器或共享服务器, 如图 1.7 服务器进程 : Page 15

图 1.7 服务器进程 后台进程 : 在 Oracle 例程启动时启动, 直接与 Oracle 服务器交互的程序, 执行维护 并加强物理结构与内存结构之间的关系 必备的后台进程 : DBWn PMON CKPT LGWR SMON 可选的后台进程 : ARCn LMDn RECO CJQ0 LMON Snnn Dnnn Pnnn LCKn QMNn 1.6.1 数据库写入程序 (DBWn) DBWR 进程 : 该进程执行将缓冲区写入数据文件, 是负责缓冲存储区管理的一个 Oracle 后台进程 当缓冲区中的一缓冲区被修改, 它被标志为 弄脏,DBWR 的主要任务是将 弄脏 的缓冲区写入磁盘, 使缓冲区保持 干净 由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏, 未用的缓冲区的数目减少 当未用的缓冲区下降到很少, 以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR 将管理缓冲存储区, 使用户进程总可得到未用的缓冲区 Oracle 采用 LRU(LEAST RECENTLY USED) 算法 ( 最近最少使用算法 ) 保持内存中的数据块是最近使用的, 使 I/O 最小 在下列情况预示 DBWR 要将弄脏的缓冲区写入磁盘 : 出现检查点 灰数据缓冲区达到阈值 没有空闲缓冲区 出现超时 执行了 RAC ping 请求 表空间处于 OFFLINE 状态 表空间处于 READ ONLY 状态 对表执行 DROP 或 TRUNCATE 操作 对表空间执行 BEGIN BACKUP 操作 如图 1.8 所示 : Page 16

图 1.8 DBWn 1.6.2 日志写入器 (LGWR) 该进程将日志缓冲区写入磁盘上的一个日志文件, 它是负责管理日志缓冲区的一个 Oracle 后台进程 LGWR 进程将自上次写入磁盘以来的全部日志项输出, 当下面的情况发生的时候,LGWR 输出 : 提交时 三分之一填满时 有 1 MB 的重做时 每隔三秒 DBWn 写入前 如图 1.9: 图 1.9 LGWR Page 17

1.6.3 系统监控程序 (SMON) 该进程实例启动时执行实例恢复, 还负责清理不再使用的临时段 在具有并行服务器选项的环境下,SMON 对有故障 CPU 或实例进行实例恢复, 前滚重做日志中的更改, 打开数据库供用户访问, 回退未提交的事务处理 SMON 进程有规律地被呼醒, 检查是否需要, 或者其它进程发现需要时可以被调用 SMON 还负责合并空闲空间 1.6.4 过程监视器 (PMON) 它的主要职责是回退事务处理 释放锁 释放其它资源 重新启动已失效的调度程序 该进程在用户进程出现故障时执行进程恢复, 负责清理内存储区和释放该进程所使用的资源 例 : 它要重置活动事务表的状态, 释放封锁, 将该故障的进程的 ID 从活动进程表中移去 PMON 还周期地检查调度进程 (DISPATCHER) 和服务器进程的状态, 如果已死, 则重新启动 ( 不包括有意删除的进程 ) PMON 有规律地被呼醒, 检查是否需要, 或者其它进程发现需要时可以被调用 1.6.5 检查点 (CKPT) 它的主要职责是 : 在检查点发信号给 DBWn 使用检查点信息更新数据文件的标头 使用检查点信息更新控制文件 该进程在检查点出现时, 对全部数据文件的标题进行修改, 指示该检查点 在通常的情况下, 该任务由 LGWR 执行 然而, 如果检查点明显地降低系统性能时, 可使 CKPT 进程运行, 将原来由 LGWR 进程执行的检查点的工作分离出来, 由 CKPT 进程实现 对于许多应用情况,CKPT 进程是不必要的 只有当数据库有许多数据文件,LGWR 在检查点时明显地降低性能才使 CKPT 运行 CKPT 进程不将块写入磁盘, 该工作是由 DBWR 完成的 1.6.6 归档程序 (ARCn) ARCn 是可选的后台进程, 它用于设置 ARCHIVELOG 模式时自动归档联机重做日志, 保留数据库的全部更改记录 当日志是为 ARCHIVELOG 使用方式 并可自动地归档时 ARCH 进程才存在 它的任务是, 当 LGWR 将在线重做日志填满之后, 就将其复制到另外一个位置, 成为归档的重做日志, 此后这些归档的重做日志可以用于完成介质恢复 ARCn 通常将在线重做日志复制到至少两个位置, 以保证归档的冗余性, 这些位置可以是本地的机器上的磁盘, 或者更确切的讲, 至少一个位置在另外一台机器上, 以应付灾难性的失败 Page 18

第七节数据库的逻辑结构 数据库的逻辑结构层次为 ( 从小到大 ): 数据块 区 段 表空间 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 1.7 数据库的逻辑结构 ORACLE 数据库的层次结构由表空间 段 区和块组成 如图 1.10: 图 1.10 ORACLE 数据库的逻辑结构逻辑结构指的磁盘空间结构 ORACLE 把磁盘空间划分为几个层次, 就像省 市 县等等一样, 这就是 ORACLE 的逻辑结构 ORACLE 把可以使用的磁盘空间划分为, 表空间 段 区 块 表空间中可以包含多个段, 段中可以包含多个区, 一个区可以包含多个块 Page 19

1.7.1 数据块 ORACLE 中最小的 I/O 单位就是数据块了, 也简秒作块 块的大小在参数文件中的 db_block_size 参数指定. 数据库块大小应该是操作系统块的倍数 无论数据库还是操作系统, 在读写磁盘文件时, 都不会一个字节一个字节的读, 他们都是以块为单位进行操作, 即使程序要求只读一个字节, 实际上读取的还是一个块 以 Windows 下为例, 我们用记事本建个文本文件, 只输入一个字母, 保存退出后, 查看此文件的属性, 如图 1.11: 图 1.11 windows 下的记事本文件只有 1 个字节, 但却占用 4096 字节的空间 也就是说,Windows 下, 块大小是 4K Windows 每次读写磁盘, 至少以 4K 为单位 比较常见的 ORACLE 块大小是 4K 8K 16K 等等. 最大的大小和最小的块大小取决于不同操作系统的限制, 什么样的块大小适合什么样的数据库应用在我们的 033 部分会详细讲述的 1.7.2 区 区 : 多个连续的块就是一个区 注意, 我们以后也会反复的提到这个概念, 就是区是由 若干个连续的块组成 1.7.3 段 段, 通常包含一个或多个区 一个段, 代表一些数据文件中的空间 同属一个段的空间, 有可能不连续 因为段是由区组合的, 如果段包含两个区, 如果这两个区在磁盘上并不连续, 段的空间也就不连续了 我们常说的表, 是从另一个方面来描述段, 表指的是存贮在段中的数据 而段指的是来存储这些数据的磁盘空莘 但段 和表这两个概念通常可以混肴起来使用 简单点说, 表是指数据, 而段是指存贮数据的空间 Page 20

1.7.4 表空间 是一个或多个数据文件的集合, 所有的数据对象都存放在指定的表空间中, 但主要存放的是表, 所以称作表空间 简单说, 表空间就是一个或多个数据文件 ( 物理文件 ) 的集合 ( 逻辑文件 ) 一个表空间可以有一个或多个段 一个表空间可以有多个数据文件, 表空间中的实际的存储空间就是由数据文件来提供的,. 比如说 A 表空间包含两个数据文件, 甲和乙. 每个数据文件的大小是 500M. 那 A 表空间总的可用空间就是 1000M. 段无法跨越表空间, 也就是说一个段, 只能隶属与某一个表空间, 但是可以跨越同一表空间下的多个数据文件 比如说一个表段, 他包含 3 个区, 前两个区可以在甲, 后一个区在乙 区, 区无法跨越数据文件, 数据文件不是逻辑结构的一部分, 他为表空间提供实际的存储空间. 我们可以这样来理解, 表空间是一个抽象的概念, 而实际的存储空间由数据文件提供的 一个表空间下可以有多个数据文件 一个数据文件只能属于一个表空间. 我们可以通过为表空间增加或减少数据文件或改变数据文件的大小, 来改变表空间的大小 第二章 Page 21

第 2 章创建数据库 完成本章的学习后, 您应该能达到下列目标 : 了解创建数据库的前提条件 使用 Oracle Database Configuration Assistant 创建数据库 手动创建数据库 使用 Oracle 管理文件 (Oracle Managed Files), 创建数据库 Page 22

第一节计划和组织数据库 计划和组织数据库是建立基于数据库应用程序的第一步, 要注意以下三个方面 : 最佳灵活体系结构 (OFA) 创建数据库的前提条件 数据库管理员的验证方法 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 2.1 计划和组织数据库 计划数据库是组织和实施数据库系统的第一步 首先要确定数据库的用途, 这就需要根据业务要求来确定应该创建哪种数据库类型 数据库类型包括数据仓库 用于高效的联机事务处理或用于通用目的的数据库 确定了用途和类型后, 接下来就是概括要应用的数据库体系结构 例如 : 如何组织和存储数据文件 控制文件和重做日志文件?Oracle 的 最佳灵活体系结构 (Optimal Flexible Architecture) 可以帮助我们安排数据库文件的结构和位置 定义了体系结构之后, 必须为新的数据库选择数据库名称和系统标识名 数据库创建这项任务可用来准备一些操作系统文件, 创建只需一次, 这与数据库中的数据文件数量无关 从较早版本的 Oracle 数据库进行移植时, 除非需要一个全新的数据库, 否则不必创建数据库 如果不必创建数据库, 则可以使用移植实用程序 Oracle Data Migration Assistant 就是这样的工具, 它可以协助您移植当前的数据库系统 2.1.1 最佳灵活体系结构 (OFA) 所有支持的平台上的安装和配置都符合最佳灵活体系结构 (OFA) OFA 按类型和用途 Page 23

来组织数据库文件 二进制文件 控制文件 日志文件和管理文件可分装在多个磁盘上 一致的命名约定具有以下优点 : 可以很容易地将数据库文件与其它文件区别开 易于识别控制文件 重做日志文件和数据文件 通过将文件分装在不同磁盘和目录中, 对同一台计算机上的多个 Oracle 主目录的管理变得更加容易 可实现更好的性能, 因为数据文件 二进制文件和管理文件现在分别驻留在不同的目录和磁盘上, 这样就减少了它们对磁盘的争用 安装和创建数据库过程中的另一个重要问题就是如何组织文件系统, 以便于对数据库的增长进行管理 数据库的增长体现在向现有数据库添加数据 添加用户 创建新数据库 添加硬件 在众多的驱动器之间适当地分配输入 / 输出 (I/O) 负载等 下面是 ORACLE 软件的位置 : oracle_base /product /release_number /bin /dbs /rdbms /sqlplus /admin /inst_name /pfile 下面是 ORACLE 数据文件的位置 : oradata/ db01/ system01.dbf control01.ctl redo0101.log... db02/ system01.dbf control01.ctl redo0101.log... Page 24

2.1.2 创建数据库的前提条件 创建数据库需要具备 SYSDBA 权限 使用操作系统验证或口令文件验证即可授予这些权限 创建数据库之前, 确保有足够的内存可用于 SGA Oracle 可执行程序和进程 请参考操作系统安装和管理指南 计算数据库所需的磁盘空间, 包括联机重做日志文件 控制文件和数据文件 2.1.3 数据库管理员的验证方法 您可能需要从数据库所驻留的计算机上对数据库进行本地管理, 或者需要从一个远程客户端管理许多不同的数据库服务器, 根据实际情况, 请选择使用操作系统还是口令文件来验证数据库管理员 如图 2.1: 图 2.1 数据库管理员的验证方法 Oracle 提供了一个口令实用程序 orapwd 来创建口令文件 使用 SYSDBA 权限进行连接时, 您将以 SYS 方案而不是与您的用户名关联的方案进行连接 对于 SYSOPER, 将连接到 PUBLIC 方案 使用口令文件访问数据库的权限通过特权用户发出的特殊 GRANT 命令来提供 下面的例子使用口令文件验证 : 使用口令实用程序 orapwd 创建口令文件 orapwd file=filename password=password entries=max_users 其中 : filename: 口令文件的名称 ( 必需 ) password:sysoper 和 SYSDBA 的口令 ( 必需 ) entries: 允许作为 SYSDBA 或 SYSOPER 连接的不同用户的最大数目 如果 Page 25

超过该值, 则必须创建一个新的口令文件 所以设置较大的值较为稳妥 等号 (=) 字符的两侧不应有空格 示例 : orapwd file=$oracle_home/dbs/orapwu15 password=admin entries=5 其中 : filename: $ORACLE_HOME/dbs/orapwU15 password: admin entries: 5 将 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE 其中 :EXCLUSIVE 表示只有一个例程可以使用口令文件, 并且该口令文件包含 SYS 以外的名称 使用 EXCLUSIVE 口令文件可以向单个用户授予 SYSDBA 或 SYSOPER 权限 GRANT SYSDBA TO HR; 使用上面创建的口令文件连接数据库 CONNECT sys/admin AS SYSDBA 口令文件位置 : UNIX: $ORACLE_HOME/dbs NT: %ORACLE_HOME%/database 维护口令文件 : 使用操作系统命令删除现有口令文件, 然后使用口令实用程序创建一个新的口令文件 Page 26

第二节创建数据库 配置操作系统环境 使用 Database Configuration Assistant 创建数据库 手动创建数据库 使用 Oracle 管理文件 (OMF) 创建数据库 建库的故障排除 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 2.2 创建数据库 共有三种创建数据库的方式 : 使用 Oracle Universal Installer 在 Oracle9i 安装中自动创建 ; 使用 Oracle Database Configuration Assistant (DBCA); 或使用 CREATE DATABASE 命令通过创建 SQL 脚本来创建数据库 Database Configuration Assistant 是一个用来简化数据库创建操作的图形用户界面, 它既能与 Oracle Universal Installer 交互使用, 也可以独立使用 DBCA 基于 Java, 可以从任何带 Java 引擎的平台启动 安装 Oracle Server 的过程中,Oracle Universal Installer 会启动 DBCA, 接着 DBCA 将自动创建一个初始数据库 对于用或不用 DBCA, 创建或不创建初始数据库, 以及是否在安装后作为独立的应用程序启动 DBCA 来创建数据库, 您都有充分的选择自由 如果使用的是较早版本的 Oracle 软件, 还可以对现有数据库进行移植或升级 2.2.1 配置操作系统环境 手动创建数据库或使用 Database Configuration Assistant 创建数据库之前, 必须正确配置操作系统环境 ORACLE_BASE: 指定 Oracle 软件的顶级目录 Page 27

示例 : /u01/app/oracle ORACLE_HOME : 指定 Oracle 软件的安装目录 OFA 建议的目录为 $ORACLE_BASE/product/release 示例 : /u01/app/oracle/product/9.1.1 ORACLE_SID: 指定例程名称, 同一台计算机上运行的 Oracle 例程的名称必须唯一 ORA_NLS33: 创建带有非 US7ASCII 字符集的数据库时必须指定 示例 : $ORACLE_HOME/ocommon/nls/admin/data PATH: 指定操作系统查找可执行程序 ( 如 SQL*Plus) 时所要搜索的路径 Oracle9i 可执行程序位于 $ORACLE_HOME/bin 目录下, 需要添加到 PATH 变量中 LD_LIBRARY_PATH : 指定操作系统和 Oracle 库文件所在的目录 示例 : $ORACLE_HOME/lib 2.2.2 使用 Database Configuration Assistant 创建数据 库 Database Configuration Assistant 可用于 : 创建数据库, 配置数据库选件, 删除数据库, 管理模板, 使用预定义模板设置创建新模板, 从现有数据库创建新模板, 删除数据库模板 使用管理模板的功能, 我们可以利用一些预定义的模板, 也可以将现有数据库用作副本来创建新的数据库或模板 数据库参数以 XML 格式存储 使用模板的好处 : 节省创建数据库的时间 ; 可共享模板 ; 可根据需要变换数据库选件 使用 Database Configuration Assistant 创建数据库, 可按照下面的步骤 : 启动 Database Configuration Assistant: 程序 (Programs) > Oracle-OraHome90 > 配置和移植工具 (Configuration and Migration Tools) > Database Configuration Assistant 选择 创建数据库 (Create a Database) 选项 从预定义模板列表中选择要创建的数据库类型 一共有四种类型 : 数据仓库 通用 新数据库 事务处理 使用 显示详细资料 (Show Details) 选项查看要创建的数据库 创建的模板可带有数据文件, 也可不带数据文件 不带数据文件 : 只包含数据库的结构 可以指定和更改所有数据库参数 带有数据文件 : 既包含数据库的结构也包含其中的物理数据文件 自动为数据库创建所有日志文件和控制文件, 并且可添加 / 删除控制文件 日志组, 还可以更改数据文件的目标 Page 28

位置和名称 无法添加或删除数据文件 表空间或回退段 无法更改初始化参数 指定 全局数据库名称 (Global Database Name) 和 SID 指定要在数据库中使用的功能, 如 : Oracle Spatial Oracle OLAP services 示例模式 (Example Schemas) 示例模式 (Example Schemas) 包含以下类型的表的脚本 : 人力资源 订单输入 产品介质 销售历史记录 装运 确定数据库创建后要运行的任何脚本 选择数据库的运行模式 : 专用服务器模式 共享服务器模式 内存的选择, 选择 典型 (Typical) 或 自定义 (Custom) 数据库 选择 典型 选项创建的数据库涉及的用户输入最少 选择此选项后, 可以指定以下任一运行数据库的环境 : 联机事务处理 (Online Transaction Processing,OLTP) 多用途和数据仓库 自定义 选项允许您自定义数据库的创建 该选项仅供具有高级数据库创建经验的数据库管理员使用 归档的选择, 此选项将数据库置于 ARCHIVELOG 模式, 并在重新使用重做日志文件前对其进行归档 DB 大小的选择, 此参数用于定义数据库的块大小和排序区大小 只能在创建数据库时指定数据块的大小 SORT_AREA_SIZE 指可用于排序操作的最大内存空间 文件位置, 用于指定跟踪文件的位置, 以及指定初始化参数文件的路径 定义数据库存储参数 此页显示一个树列表以及一个摘要视图 ( 多栏列表 ), 允许您更改和查看以下对象 : 控制文件 表空间 数据文件 还原段和重做日志组 单击 文件位置变量 (File Location Variables) 按钮可更改任意文件位置变量 选择一个数据库创建选项完成数据库的创建 1 创建数据库 (Create Database): 此选项可用于立即创建数据库 2 另存为数据库模板 (Save as a Database Template): 此选项可用于将数据库创建参数保存为模板 此模板随即将添加到可用模板列表中 3 生成数据库创建脚本 (Generate Database Creation Scripts): 此选项可用于将数据库创建参数保存为脚本文件, 供以后使用 选择 完成 (Finish) 2.2.3 手动创建数据库 通过下面的步骤可以手动创建数据库 : 1 为例程和数据库选择唯一的名称 2 选择一个数据库字符集 必须定义一个数据库字符集 同时还可选择定义一个国家字符集 例如 : 字符集 Character set AL32UTF16 国家字符集 AL16UTF16 (National character set AL16UTF16) 有关可供使用的各种字符集的信息, 请参考 使用全球化支持 一章 3 设置操作系统变量 需要设置四个环境变量:ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH ORACLE_HOME: 安装 Oracle9i 服务器的顶级目录 Page 29

ORACLE_SID: 可由用户定义的 分配给数据库例程的名称 用于区分运行在同一台机器上的不同数据库例程 PATH: 定义操作系统查找可执行程序时要搜索的目录 LD_LIBRARY_PATH: 定义所需的库文件的存储目录 4 创建初始化参数文件 初始化参数文件是通过随安装过程安装的 init.ora 示例文件而创建的 复制 init.ora 示例文件, 将其命名为 initsid.ora 针对要创建的数据库的具体需要来修改该文件 如果要使用 SPFILE, 则必须首先创建 PFILE 有关如何创建数据库特定的 initsid.ora 文件和 SPFILE 的指导说明, 请参考 管理 Oracle 例程 一章 5 在 NOMOUNT 阶段启动该例程 以具有 SYSDBA 权限的用户 SYS 身份连接 要创建数据库, 数据库必须处于 NOMOUNT 状态 有关如何让数据库处于 NOMOUNT 状态的指导说明, 请参考 管理 Oracle 例程 一章 6 创建并执行 CREATE DATABASE 命令 创建包含 CREATE DATABASE 命令的 SQL 脚本 以具有 SYSDBA 权限的用户 SYS 身份连接到 SQL*Plus 当数据库处于 NOMOUNT 状态时, 执行该脚本 如果要创建的数据库是通过 Oracle 管理文件 (Oracle Managed Files, OMF) 来管理操作系统文件的, 那么 CREATE DATABASE 命令的简化程度将非常明显 有关 OMF 的信息, 请参考 管理 Oracle 例程 一章 7 打开数据库 必须首先打开数据库, 然后再运行脚本, 创建数据字典并完成创建后的步骤 有关如何从 NOMOUNT 状态下打开数据库的指导说明, 请参考 管理 Oracle 例程 一章 8 运行脚本 创建数据库后必须运行两个脚本:catalog.sql 和 catproc.sql 这两个脚本都必须以具有 SYSDBA 权限的用户 SYS 身份运行 执行脚本前, 数据库必须处于 OPEN 状态 catalog.sql: 在基表和动态性能视图上创建视图及其同义词 它还启动其它脚本, 为以下各项创建对象 : PL/SQL 基本环境, 包括 PL/SQL 数据类型的声明 预定义异常 内置过程和函数 SQL 操作等 ; 审计 ; 导入 / 导出 ;SQL*Loader; 已安装选项 ; 运行脚本 ( 续 ) catproc.sql: 创建使用 PL/SQL 所需的程序包和过程 此外, 此脚本还创建用于扩展 RDBMS 功能的若干 PL/SQL 程序包, 以及用于预警 管道 logminer 大对象 对象 排队 复制和其它内置选项的程序包视图 pupbld.sql: 创建名为 产品用户配置文件 (Product User Profile) 的表以及相关的过程 运行此脚本将在用户每次连接到 SQL*Plus 时防止生成警告消息 必须以用户 SYSTEM 的身份运行此脚本 9 创建其它表空间 应该根据数据库的需要创建其它表空间 若要创建数据库, 请使用下列 SQL 命令 : CREATE DATABASE [database] [CONTROLFILE REUSE] [LOGFILE [GROUP integer] filespec [MAXLOGFILES integer] Page 30

[MAXLOGMEMBERS integer] [MAXLOGHISTORY integer] [MAXDATAFILES integer] [MAXINSTANCES integer] [ARCHIVELOG NOARCHIVELOG] [CHARACTER SET charset] [NATIONAL CHARACTER SET charset] [DATAFILE filespec [autoextend_clause] filespec :== 'filename' [SIZE integer][k M] [REUSE] autoextend_clause :== [AUTOEXTEND {OFF ON [NEXT integer[k M]] [MAXSIZE {UNLIMITED integer[k M]} }] [DEFAULT TEMPORARY TABLESPACE tablespace filespec [temp_tablespace_extent_clause] temp_tablespace_extent_clause:== EXTENT MANAGEMENT LOCAL UNIFORM [SIZE integer][k M] ] [UNDO TABLESPACE tablespace DATAFILE filespec [autoextend_clause] ] [SET TIME_ZONE [time_zone_region]] } ] 其中 : DATABASE: 是要创建的数据库的名称 ( 如果省略了数据库的名称, 则使用初始化参数 DB_NAME 的值 ) CONTROLFILE REUSE: 指定应重新使用参数文件中确定的现有控制文件 LOGFILE GROUP: 指定要使用的日志文件的名称及其所属的组 MAXLOGFILES: 指定可以为数据库创建的重做日志文件组的最大数量 MAXLOGMEMBERS: 指定日志文件组的日志文件成员的最大数量 MAXLOGHISTORY: 指定 Oracle Real Application Clusters 的自动介质恢复能够恢复的归档重做日志的最大数量 例如 : CREATE DATABASE user01 LOGFILE GROUP 1 ('/$HOME/ORADATA/u01/redo01.log') SIZE 100M, GROUP 2 ('/$HOME/ORADATA/u02/redo02.log') SIZE 100M, GROUP 3 ('/$HOME/ORADATA/u03/redo03.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 Page 31

MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M UNDO TABLESPACE undotbs DATAFILE '/$HOME/ORADATA/u02/undotbs01.dbf' SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE temp CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE= 'America/New_York'; 2.2.4 使用 Oracle 管理文件 (OMF) 创建数据库 使用 OMF 可简化操作系统上的文件管理,OMF 由 Oracle 服务器通过 SQL 命令创建和删除,OMF 是通过设置以下两个参数来建立的 : DB_CREATE_FILE_DEST: 设置该参数以提供数据文件的缺省位置 DB_CREATE_ONLINE_LOG_DEST_N: 设置该参数以提供联机重做文件和控制文件的缺省位置, 最多可设置五个位置 不必同时设置参数 DB_CREATE_FILE_DEST 和 DB_CREATE_ONLINE_LOG_DEST_N, 可以使用其中任意一个, 也可以同时使用 OMF 免除了对 Oracle 数据库中的文件进行直接管理的必要, 从而简化了文件管理 OMF 按如下方式命名 : 控制文件 :ora_%u.ctl 重做日志文件 :ora_%g_%u.log 数据文件 :ora_%t_%u.dbf 临时数据文件 :ora_%t_%u.tmp 其中的一些字符定义如下 : %u 是一个八个字符长的字符串, 可以确保唯一性 %t 是表空间名, 如有必要, 可按照文件名的最大长度要求将其截断 将表空间名放在唯一性字符串之前, 意味着表空间内的所有数据文件按照字母顺序排列显示 %g 是重做日志文件组号 带.dbf 扩展名的 ora_ 表明该文件是 OMF 还原文件没有特殊的扩展名 要使用 OMF 创建数据库, 需要在初始化参数文件中定义参数 DB_CREATE_FILE_DEST 和 DB_CREATE_ONLINE_DEST_n 一旦定义了 OMF 参数, 您就不必再定义文件名或位置, 创建数据库的语法因而得到了简化 下面的示例中创建的数据库使用了如下 OMF: 位于目录 /$HOME/ORADATA/u05 中的 SYSTEM 表空间数据文件, 大小为 100 MB, 可无限制地自动扩展 Page 32

两个联机重做日志组, 组中各有两个大小为 100 MB 的成员, 分别位于 /$HOME/ORADATA/u01 和 /$HOME/ORADATA/u02 中如果启用了自动还原管理模式, 目录 /$HOME/ORADATA/u05 中还会有一个还原表空间数据文件, 大小为 10 MB, 可无限制地自动扩展 同时创建一个名为 SYS_UNDOTBS 的还原表空间 如果未指定 CONTROL_FILES 初始化参数, 则会生成两个控制文件, 分别位于 /$HOME/ORADATA/u01 和 /$HOME/ORADATA/u02 中 位于 /$HOME/ORADATA/u01 中的控制文件是主控制文件 如果 CREATE DATABASE 命令失败, 创建的所有 OMF 都将被删除 当用户从 DBA_DATAFILES V$DATAFILE V$CONTROLFILE 和 V$LOGFILE 中进行选择时, 可看到内部生成的文件名 可通过 ALTER SYSTEM SET 命令动态修改 DB_CREATE_FILE_DEST 和 DB_CREATE_ONLINE_LOG_DEST_N OMF 创建数据库的例子, 在初始化参数文件中定义 OMF 参数 示例 : DB_CREATE_FILE_DEST=/$HOME/ORADATA/u05 DB_CREATE_ONLINE_DEST_1=/$HOME/ORADATA/u01 DB_CREATE_ONLINE_DEST_2=/$HOME/ORADATA/u02 CREATE DATABASE 命令得到了简化 : @cddba01.sql > CREATE DATABASE dba01; 2.2.5 建库的故障排除 如果出现以下的三个问题中的任何一个问题发生,CREATE DATABASE 语句将以失败告终 应该删除 CREATE DATABASE 语句创建的所有文件, 改正错误, 然后尝试重新创建 SQL 脚本中存在语法错误 要创建的文件已经存在 出现操作系统错误, 如文件或目录权限错误, 或空间不足错误 Page 33

第三节数据库的创建结果 成功创建数据库之后, 数据库应包含 : 数据文件 控制文件 重做日志文件 用户 SYS 用户 SYSTEM 内部表 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 2.3 数据库的创建结果 成功创建数据库之后, 数据库应包含 : 数据文件 控制文件和重做日志文件 用户 SYS, 口令为 change_on_install 用户 SYSTEM, 口令为 manager 内部表( 但没有数据字典视图 ) Page 34

第三章 使用数据字典和动态性能视图 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 第 3 章使用数据字典和动态性能视图 完成本章的学习后, 您应该能达到下列目标 : 了解内置数据库对象, 了解数据字典的内容和使用, 了解数据字典视图的创建方式, 了解数据字典视图的类别, 查询数据字典和动态性能视图, 了解管理脚本命名约定 Page 35

第一节随数据库创建的其他对象 数据字典 动态性能表 PL/SQL 程序包 : 数据库事件触发器 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 3.1 随数据库创建的其他对象 创建数据库时, 除创建数据库文件外, 还将创建其它几种结构 数据字典 : 包含对数据库中对象的说明动态性能表 : 包含由数据库管理员 (DBA) 用来监视和优化数据库及例程的信息 PL/SQL 程序包 : 向数据库添加功能的程序单元 这些程序包在执行 CREATE DATABASE 命令之后运行 catproc.sql 脚本时创建 PL/SQL 程序包不在本课讨论的范围之内 数据库事件触发器 : 触发器是在表或视图发生修改, 或执行某些用户操作或数据库系统操作时隐式执行的过程 数据库事件触发器不在本课讨论的范围之内 Page 36

第二节数据字典 基表和数据字典视图 创建基表 数据字典的内容 数据字典的使用方式 数据字典视图的类别 数据字典示例 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 3.2 数据字典 数据字典是 Oracle 数据库最重要的部分之一, 它是一组只读表和视图, 提供有关其相关数据库的信息, 描述数据库以及数据库对象 它是每个 Oracle 数据库的中心 数据字典包含只读表和视图, 存储在 SYSTEM 表空间内, 由用户 SYS 拥有 由 Oracle 服务器进行维护, 通过 SELECT 访问 只要执行数据定义语言 (DDL) 命令,Oracle 服务器就会更新数据字典 此外, 数据操纵语言 (DML) 命令 ( 如引起表扩展的命令 ) 也可以更新数据字典 数据字典不仅是每个 Oracle 数据库最重要的部分, 它还是所有用户 ( 从最终用户到应用程序设计者以及数据库管理员 ) 的重要信息来源 要访问数据字典, 请使用 SQL 语句 因为数据库是只读的, 所以只能对数据字典的表和视图发出查询 3.2.1 基表和数据字典视图 数据字典包含对数据库中的对象的说明 它包括两种对象类型 基表和数据字典视图 基表是存储有关数据库的信息的底层表 基表是在任何 Oracle 数据库中首先创建的对象 在使用 CREATE DATABASE 创建数据库时, 只要 Oracle 服务器运行 sql.bsq 脚本, 就会自动创建这些对象 只有 Oracle 服务器才能对这些基表执行写入操作 用户很少直接 Page 37

访问基表, 因为其中的数据大多数都是以隐含格式存储的 切勿使用 DML 命令直接更新基表, 但 AUD$ 表除外 例如,IND$ 表就是一个基表, 它包含有关数据库中的索引的信息 数据字典视图是基表的汇总, 可以更有效地显示基表信息 例如, 在数据字典视图中, 除了显示对象编号外还会使用对象名 数据字典视图是在运行 CREATE DATABASE 命令之后使用 catalog.sql 脚本创建的 3.2.2 创建基表 创建数据库时, 会自动创建数据字典的基表 使用 Oracle Universal Installer 创建数据库时, 会自动运行用于创建数据字典和动态性能视图的脚本以及 Oracle 服务器选项的脚本 手动创建新数据库时, 需要手动运行这些脚本 此外, 将 Oracle 服务器升级为新版本时, 可能也需要重新运行这些脚本 只有具有 SYSDBA 权限的用户 SYS 才能运行这些脚本 以上脚本位于下列目录中 : UNIX:$ORACLE_HOME/rdbms/admin NT:%ORACLE_HOME%\rdbms\admin catalog.sql 创建常用的数据字典视图和同义词,catproc.sql 运行服务器端 PL/SQL 所必需的脚本 3.2.3 数据字典的内容 数据字典包含以下内容 : 数据库内所有方案对象的定义, 这些对象包括表 视图 索引 簇 同义词 序列 过程 函数 程序包 触发器等等 已为方案对象分配的空间量以及它们当前使用的空间量 列的缺省值 完整性约束信息 Oracle 用户的名称 已授予每个用户的权限和角色 审计信息, 如有哪些人访问或更新了各种方案对象 3.2.4 数据字典的使用方式 Oracle 服务器使用数据字典的方式 : 数据字典基表中的数据是 Oracle 服务器运行所必需的 因此, 应该只能由 Oracle 服务器来写入或更改数据字典信息 在数据库操作过程中,Oracle 服务器通过读取数据字典 Page 38

来确定方案对象是否存在, 以及用户是否对它们具有适当的访问权限 Oracle 服务器还会不断地更新数据字典, 及时反映数据库结构方面的变化 执行 DDL 语句时,Oracle 服务器会对它进行修改 用户和数据库管理员使用数据字典的方式 : 数据字典的视图可以作为所有数据库用户的参考 某些视图可由所有 Oracle 用户访问 ; 另外一些视图只供数据库管理员使用 3.2.5 数据字典视图的类别 数据字典一共有三种静态视图集, 按范围分类为 : DBA: 所有方案中的视图,ALL: 用户可以访问的视图,USER: 用户方案中的视图 带有 DBA 前缀的视图显示整个数据库的全局视图 只有数据库管理员才能查询它们 如果用户被授予了系统权限 SELECT ANY TABLE, 则也可以查询数据字典中前缀为 DBA 的视图 若要查询数据库中的所有对象,DBA 可以发出下列语句 : SELECT owner, object_name, object_type FROM dba_objects; 带有 ALL 前缀的视图指的是从用户角度看到的完整数据库视图 这些视图返回有关方案对象的信息, 除了用户所拥有的方案对象外, 还包括那些通过公开或显式授予权限和角色的方式让用户获得访问权限的方案对象 例如, 以下查询返回用户具有访问权限的全部对象的信息 : SELECT owner, object_name, object_type FROM all_objects; 带有 USER 前缀的视图, 典型数据库用户最可能感兴趣的视图是带有 USER 前缀的视图 这些视图 : 涉及数据库中用户自己独有的环境, 通常涉及当前用户所拥有的对象, 除 OWNER 列暗指当前用户外, 具有与其它视图一致的列, 返回 ALL 视图中信息的子集, 为方便起见, 可具有缩写的公共同义词, 例如, 下列查询返回用户方案中包含的所有对象 : SELECT owner, object_name, object_type FROM users_objects; 数据字典视图是静态视图, 从这些视图中用户可以知道 : 是否曾经创建了某个对象? 该对象是什么的一部分? 谁拥有该对象? 用户具有哪些权限? 对该对象有哪些限制? 3.2.6 数据字典示例 要获取数据字典视图的概览, 可以查询 DICTIONARY 视图或其同义词 DICT 视图 例如 : Page 39

SELECT * FROM dictionary; 用 where 子句来缩小查询范围 : SELECT * FROM dictionary WHERE table_name LIKE dba_seg% 要获得视图中各列的列表, 请使用 DESCRIBE 关键字 : DESCRIBE dba_users; 要获得数据字典视图中各列的概览, 可以查询 DICT_COLUMNS 视图 要查看数据字典视图的内容, 请使用 SELECT 命令 SELECT * FROM dba_users; 下面是几个常用的数据字典 : 总览 :DICTIONARY, DICT_COLUMNS 方案对象 :DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS 空间分配 :DBA_SEGMENTS, DBA_EXTENTS 数据库结构 :DBA_TABLESPACES, DBA_DATA_FILES Page 40

第三节动态性能表 动态性能表示例 - 注意 dictionary 视图 管理脚本的约定 - cat*.sql - dbms*.sql 和 prvt*plb - utl*.sql Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 3.3 动态性能表 在 Oracle 服务器的整个操作过程中, 动态性能表将当前数据库活动记录在称为动态性能视图的一组虚拟表中 只有数据库处于运行状态时, 这些虚拟表才驻留在内存中, 反映数据库操作的实时状况, 随数据库的运行随时更新 它们指向内存和控制文件中的实际信息源 这些表不是真正的表, 大多数用户都无法访问它们 ; 但是数据库管理员可以在这些视图上查询 授予 SELECT 权限并创建视图 这些视图有时称为固定视图, 因为数据库管理员无法更改或删除这些视图 动态性能表由 SYS 拥有, 它们的名称均以 V_$ 开头 在这些表上先创建视图, 然后再为这些视图创建公共同义词 同义词名以 V$ 开头 例如,V$DATAFILE 视图包含有关数据库中数据文件的信息, 而 V$FIXED_TABLE 视图包含有关数据库中所有动态性能表和视图的信息 动态性能表可使用户了解到以下信息 : 该对象是否处于联机状态并可用? 该对象是否已打开? 目前持有哪些锁? 该会话是否处于活动状态? Page 41

3.3.1 动态性能表示例 要获得动态性能视图的概览, 可以查询 DICTIONARY 视图或其同义词 DICT 视图 例如 : SELECT * FROM dictionary; 用 where 子句来缩小查询范围 : SELECT * FROM dictionary WHERE table_name like 'V$data%' 也可以查询 V$FIXED_TABLE 视图获得动态性能视图列表 : SELECT * FROM V$FIXED_TABLE; 要获得视图中各列的列表, 请使用 DESCRIBE 关键字 : DESCRIBE V$INSTANCE; 要获得动态性能视图中各列的概览, 可以查询 DICT_COLUMNS 视图 要查看视图的内容, 请使用 SELECT 命令 SELECT * from V$INSTANCE; 示例 : V$CONTROLFILE: 列出控制文件的名称 V$DATABASE: 包含控制文件中的数据库信息 V$DATAFILE: 包含控制文件中的数据文件信息 V$INSTANCE: 显示当前例程的状态 V$PARAMETER: 列出会话的当前有效参数和值 V$SESSION: 列出当前每个会话的会话信息 V$SGA: 包含有关系统全局区 (SGA) 的摘要信息 V$SPPARAMETER: 列出 SPFILE 的内容 V$TABLESPACE: 显示控制文件中的表空间信息 V$THREAD: 包含控制文件中的线程信息 V$VERSION:Oracle 服务器中核心库组件的版本号 3.3.2 管理脚本的约定 管理脚本可以根据各自的文件名划分为以下几类 : cat*.sql: 这些脚本用于创建数据字典视图 除 catalog.sql 和 catproc.sql 脚本之外, 还存在创建有关 Oracle 实用程序信息的其它脚本 例如,catadt.sql 脚本用于创建数据字典视图以显示 ORDBMS 中的类型和其它对象特性的元数据信息 catnoadt.sql 脚本用于删除这些表和视图 dbms*.sql 和 prvt*plb: 这些脚本用于创建预定义的 Oracle 程序包的对象, 这些程序包扩展了 Oracle 服务器功能 这些程序简化了管理数据库的任务 大多数 SQL 脚本在 catproc.sql 脚本的执行过程中运行 少数其它脚本必须由数据库管理员执行 例如, Page 42

dbmspool.sql 脚本使您可以显示共享池中对象的大小, 并在 SGA 中将它们标记为保留或删除, 以减少共享池碎片 utl*.sql: 这些脚本必须在数据库需要其它视图和表时运行 例如, 脚本 utlxplan.sql 创建用于查看 SQL 语句的执行计划的表 大多数脚本必须以具有 SYSDBA 权限的 SYS 用户身份运行 数据库管理员应检查脚本以确定必须使用哪个用户帐户来运行脚本 Page 43

第四章 参数文件管理 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 第 4 章参数文件管理 本章包括两大项内容, 一是参数文件和初始化参数的管理, 二是数据库的启动与关闭 参数文件记录了数据库的配置 在数据库启动时,Oracle 要根据参数文件中的参数设置, 配置数据库 如要为各个内存池分配多少内存, 允许打开的进程数和会话话等等 我们先从这一部分开始 Page 44

第一节参数文件介绍与分类 类似 Windows 中的注册表 共有两种参数文件 - PFILE 型 - SPFILE 型 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.1 参数文件介绍与分类 参数文件记录了数据库的配置 在数据库启动时,Oracle 要根据参数文件中的参数设置, 配置数据库 如要为各个内存池分配多少内存, 允许打开的进程数和会话话等等 要想让数据库启动, 必需先读取参数文件 参数文件中的参数, 我们通常称其为初始化参数, 简称就是参数 我们应该对 Windows 比较熟悉, 在 Windows 中, 有一个注册表, 记录 Windows 中各种配置 参数文件就类似于 Windows 中的注册表 Oracle 一共有两种参数文件 : 一种是 PFILE 类型, 另一种是 SPFILE Pfile 是文本格式, 可以直接用本编辑工具 ( 如 Windows 下的记事本,Linux 下的 vi 等 ) 打开并修改 而 Spfile 则是非文本格式 通常 PFILE 的文件名的格式, 是 initsid.ora, 这里面的 SID 是, 你在创建数据库, 必须要为数据库指定一个全局数据库名, 还要指定一个 SID, 通常我们可以将 SID 理解为数据库的别名 假如所我数据库的 SID 是 JJ, 那我的 PFILE 的文件名格式是 intjj.ora SPFILE 的名字格式通常是 spfilesid.ora, 在上例中就是 spfilejj.ora 这里要注意大小写 在 Windows 大小写是无所谓的, 在 Linux 中是要注意大小写的不同的 PFILE 和 SPFILE 的名字,SID 部分是大写 参数文件的默认位置是 : $ORACLE_HOME/dbs, 如果在这里面找不到, 可以使用搜索命令进行搜索 有时, 参数文件也会在 $ORACLE_HOME/database 中 Page 45

下面我在 WIN 下开始搜索一下试试 :( 搜索参数文件 ) 在 Linux 下, 我们也可以使用 find 命令, 查找参数文件的位置 通过搜索结果我们可以发现, 在 WIN 下,10G 的 SPFILE 默认位置 : D:\oracle\product\10.2.0\db_1\database 这里盘符需要根据各自安装的情况 其实, 通常参数文件有两个位置,$ORACLE_HOME\dbs 或 $ORACLE_HOME\database 在 10g 中,ORACLE 只使用 SPFILE 为参数文件, 所以在正常情况下, 我们可以搜索到 SPFILE 文件, 但是如果你以 INITJJ.ORA. 关键子搜索的话, 有可能查找不到 因为从 9I 后,ORACL E 缺省使用 SPFILE. 已经不在使用 PFILE 了 除非为了完成有些特殊操作, 从 9i 后, 已经不 再保留 PFILE 了 只有当 ORACLE 找不到 SPFILE 时, 才会去找 PFILE 的 PFILE 需要 DBA 手动准备一 份, 如果你既没有 SPFILE 也没有专门准备 PFILE,ORACLE 在启动时会报告错误的 将无 法正常启动数据库 这个过程我们马上就会详细描述的 下面先从参数的的修改与管理开始 Page 46

第二节 PFILE 介绍 PFILE 型参数文件注意事项 : 普通文本型文件 可以用任何文本编辑器打开 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.2 PFILE 介绍 PFILE 的格式如下 : *.background_dump_dest='e:\oracle\admin\mytwo\bdump' *.compatible='9.2.0.0.0' *.control_files='e:\oracle\oradata\mytwo\control01.ctl' *.core_dump_dest='e:\oracle\admin\mytwo\cdump' *.cursor_space_for_time=true *.db_block_size=4096 前面的星号是指此参数对数据库的所有实例有效 通常在 RAC 环境中, 一个数据库将会对应多个实例 Page 47

第三节 SPFILE 介绍 SPFILE 型参数文件注意事项 : 非普通文本型文件 可以用文本编辑器打开, 但会有一些乱码 千万不用于文本编辑器打开并保存 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.3 SPFILE 介绍 SPFILE 的格式如下 : g6? [1] [1], *.background_dump_dest='e:\oracle\admin\mytwo\bdump' *.compatible='9.2.0.0.0' *.control_files='e:\oracle\oradata\mytwo\control01.ctl' *.core_dump_dest='e:\oracle\admin\mytwo\cdump' *.cursor_space_for_time=true *.db_block_size=4096 虽然大致上看, 和 PFILE 内容差不多, 但要注意到, 在前几行有一些乱字符和一些空白, 这些都是一些非文本性的控制性信息 SPFILE 并不是一个纯文本的文件, 如果使用文本编辑工具对他进行编辑, 并保存后, 很可能会破坏 SPFILE 头部的控制性信息, 这将使数据库不能正常启动 Page 48

说一句题外话, 各种各样的文件, 只要不是纯文本格式的, 一般都会在头部存放一些控 制性信息 我们人也一样, 人也是在头部, 存有控制性信息 Page 49

第四节数据库的参数修改 使用 ALTER 命令修改数据库参数 更改参数的例子 利用 PFILE 进行参数的修改 SPFILE 和 PFILE 的互相备份 从 SPFILE 中移除参数 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.4 数据库的参数修改 首先从 SPFILE 开始, 我们前面已经说过了,SPFILE 的内容虽然可以通过文本编辑器看到大部分, 但是需要注意的是,SPFILE 并不是一个文本文件, 它的头部有一些非文本性质的控制信息, 一旦你使用文本编辑器修改并保存了 SPFILE, 这些头部的控制信息将会编辑器损坏,ORACLE 将无法再正常识别这个 SPFILE. 如果想修改 SPFILE 中的参数有两种方式 4.4.1 使用 ALTER 命令修改数据库参数 Alter system set parameter_name=parameter_value [scope=memory spfile both] [sid= sid * ] 1. Scope 是一个比较常用的选项, 他可以取以下 3 个值 : (1). memory 内存, 参数只在内存中修改下次启动事例后, 参数会恢复为原来的值 (2). spfile: 只修改参数文件中的值, 当前内存中并不发生变化, 也就是说更改只有在重新启动事例后才会生效 (3). both 内存和参数文件一起更改 Page 50

如果省略此选项, 将只在内存中进行修改 2. SID 是指实例 在 RAC 中, 一个数据库对应多个实例, 可以使用此选项, 只针对 某个实例修改某个参数的值 4.4.2 更改参数的例子 1. 查看参数初始值 : Show parameter parameter_name; 2. 修改某一参数 : alter system set service_names=bb scope=both; 3. 再次查看参数值 : show parameter service_name; 4.4.3 利用 PFILE 进行参数的修改 因为 PFILE 是可以使用文本编程工具修改的 因此, 我们可以先把参数先由 SPFILE 生成一 PFILE, 然后使用文本编辑工具打开 PFILE, 这样你可以查看所有的参数了 如果有需要的话, 还可以进行修改, 修改完成后, 再由修改过的 PFILE 生成一个 SPFILE, 覆盖原来的 SPFILE 注意, 在覆盖原来的 SPFILE 时, 数据库必须处于关闭状态 在数据库正常运行时, 有可能随时需要读写参数文件, 因此, 当前正使用的参数文件是不能被覆盖的 我们可以在数据库关闭时, 我们通过上面的方式, 也可以达到修改参数的目的 事先说明下这种修改方式的优缺点, 缺点很明显, 步骤烦琐 优点事, 如果你想很多个参数, 那么再去使用 alter 命令去逐个修改就变的麻烦了 用这种方式反而会简单一些. 4.2.4 SPFILE 和 PFILE 的互相备份 首先说明怎样由 SPFILE 生成 PFILE, 命令如下 : CREATE PFILE= 位置 / 名字 FROM SPFILE= 位置 / 名字 上面的 PFILE 和 SPFILE 后都可以省略位置和名字, 这样的话,Oracle 会按默认的位置, 默认的名字进行操作 命令中的 PFILE 和 SPFILE 也可以交换一下位置, 变为如下样式 : CREATE SPFILE= 位置 / 名字 FROM PFILE= 位置 / 名字 意义为, 从 PFILE 导出所有参数到 SPFILE 下面我们来作例子: 步骤 1: 在 SQL*Plus 输入如下命令 : create pfile='e:\ff.ora' from spfile; 上面的命令在默认位置, 以默认的名字找到 Spfile, 读取其中所有参数的值, 写进 e:\ff.ora 中 如果我的 Oracle 安装在 E:\Oracle\ora92 中, 数据库 SID 是 JJ, 这里的 SPFILE 就是 Page 51

E:\oracle\ora92\database\spfileJJ.ora 步骤 2: 用记事本打开 e:\ff.ora, 编辑并修改某个参数 ( 还以上面的 service_names 为例 ), 编辑完后保存 步骤 3: 关闭数据库 : shutdown immediate; 步骤 4: 从编辑过的 PFILE 生成 SPFILE: create spfile from pfile= e:\ff.ora ; 步骤 5: 打开数据库 : startup v$parameter 动态性能视图中, 保存着 Oracle 所有的参数和它们的当前值 其中的 name 列是参数名,value 列是参数值, 在 DESCRIPTION 列, 还能看到有关此参数的解释, 举例如下 : sid=11 pid=20> col name for a20 sid=11 pid=20> col value for a20 sid=11 pid=20> select name,value,description from v$parameter where name ='service_names'; NAME VALUE DESCRIPTION -------------------- -------------------- -------------------------------------------- service_names jjbobo service names supported by the instance 我们也可以使用如下命令查看 Oracle 一共有多少个参数 : sid=11 pid=20> select count(*) from v$parameter; COUNT(*) ---------- 260 这个值在 10G 下是 257, 而如果我们打开 PFILE 或 SPFILE 查看的话,SPFILE 使用文本编辑工具也能打开看, 但是注意退出文本编辑器时一定不要保存 这两个参数文件中的参数, 也就是几十个而已 这说明了什么, 这说明 Oracle 本身有大量参数, 但绝大部分参数,Oracle 都定有默认值, 即使你不去设置他, 对数据库的运行不会有任何影响 只有哪些没有默认值的参数, 或者是默认值不合适的参数, 才需要在参数文件中设定 也只有当你更改过某参数的值后, 参数文件才会包含这个参数 对于哪些从来没有更改过的, 参数文件中并不包括它们 一些重要参数的意义, 对调优 排故等 DBA 日常操作非常重要参数, 我们会在后面的课程中分别讲到 4.2.5 从 SPFILE 中移除参数 1 使用 alter system set 命令模拟删除, 即将参数设置为原来的缺省值, 比如说, 用来 控制共享池大小的参数 :shared_pool_size, 默认大小是 16M, 你曾经将它改变为其他值, Page 52

下面你重新将他设定为 16M: alter system set shared_pool_size=16m scope=spfile; 当再次启动数据库时, 共享池就恢复了默认的 16M 这种方式, 并不是真正的把参数从 SPFILE 中移去, 只是将它恢复到了原来的初始值, 所以说, 这只是 模拟删除 2 使用如下命令, 这个命令将参数恢复为默认值, 并将真正的从 SPFILE 中移除某参数 alter system reset parameter_name cope=spfile sid= * ; 这样你将在参数文件中看不到这个参数了 仍以 Shared_pool_size 参数为例, 实验如下 : 步骤 1: alter system reset shared_pool_size scope=spfile sid='*'; 步骤 2: startup force; 此步骤的作用是重启数据库, 我们马上就要讲到此命令步骤 3: create pfile='e:\aa.ora' from spfile; 步骤 4: 打开 E:\aa.ora, 你可以发现, 不在有 shared_pool_size 这个参数 Oracle 将按照他默认的行为, 设定此参数的值 3 就是先从 SPFILE 导出参数到 PFILE, 在 PFILE 中将要移除的删掉, 再从 PFILE 将所有参数导入时 SPFILE 另外补充一点, 从 SPFILE 导入参数到 PFILE, 也可以做为备份参数文件的方法 Page 53

第五节数据库启动与参数文件 NOMOUNT 阶段 MOUNT 阶段 OPEN 阶段 准备参数文件 数据库启动时寻找参数的顺序 STARTUP 命令启动数据库 SHUTDOWN 命令关闭数据库 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.5 数据库启动与参数文件 下面介绍数据库的启动过程, 并通过一个试验验证数据库启动的时候寻找参数文件的顺 序 数据库的启动有三个阶段 :NOMOUNT MOUNT( 装载 ) OPEN( 打开 ) 当我们使用 startup 启动数据库时 : 就可以看到这三个阶段的对应的信息 : SQL> startup ORACLE 例程已经启动 Total System Global Area 50928080 bytes Fixed Size 453072 bytes Variable Size 29360128 bytes Database Buffers 16777216 bytes Redo Buffers 4337664 bytes ( 以上 6 行对应 nomount) 数据库装载完毕 ( 对应 mount) 数据库已经打开 ( 对应 open) 下面我们先从 Nomout 说起 Page 54

4.5.1 MOUNT 阶段 这个时候 ORACLE 会去读取参数文件, 根据参数文件中的设置, 来分配 SGA, 并且启动各个后台进程. 另外还要打开一些其他文件, 如告警日志文件 ( 作用后面会说的 ) 我们可以使用如下命令, 让数据库启动到 NOMOUNT 阶段 : SQL> startup nomount; ORACLE 例程已经启动 Total System Global Area 50928080 bytes Fixed Size 453072 bytes Variable Size 29360128 bytes Database Buffers 16777216 bytes Redo Buffers 4337664 bytes 此时, 参数文件已经被打开过了, 我们可以使用 show parameter 显示参数, 或查询 v$parameter 视图也行 但是, 由于数据库还没有装载 打开, 因此, 绝大部分的视图 表, 还无法读取 Nomout 阶段主要的工作是根据参数文件中的参数设置, 启动实例, 我们在第一章讲过, 实例是指 Oracle 的内存和各个后台进程,Nomount 阶段后, 只是内存被分配了, 后台进程被启动了, 因此, 目前, 除了参数文件的相关视图外, 只有哪些相关内存和后台进程的视图可以查看 4.5.2 NOMOUNT 阶段 在使用 startup nomount 后, 如果想让数据库继续启动, 我们将无法再使用 startup 命令, 必须使用如下命令 : SQL> alter database mount; 数据库已更改 Mount 阶段的主要任务是根据参数文件中所指定的控制文件的位置和名字, 打开并读取控制文件, 我们以前曾说过, 控制文件中记录着数据库有多少数据文件, 数据库装载后, 控制文件被打开, 我们就可以查看有关数据文件的各种视图了, 比如 : SQL> select count(*) from v$datafile; COUNT(*) ---------- 23 这个视图的意义我们到以后的章节再详细讲述 这个视图, 在 nomount 阶段, 是无法查询的, 这一点如有兴趣, 我们可以自己试一下 这个视图的总行数是 23 行, 这说明数据库, Page 55

现有 23 个数据文件 4.5.3 OPEN 阶段 在 Mount 阶段, 控制文件已经打开, 在 OPEN 阶段,Oracle 就可以根据控制文件中的所记载的信息, 打开所有的数据文件 日志文件等等, 然后等待用户的访问, 至此, 数据库的启动过程完毕 如下命令, 将从 Mount 阶段, 打开数据库 : SQL> alter database open; 数据库已更改 4.5.4 准备参数文件 参数文件的默认位置, 在 Windows 下是 ORACLE_HOME\database, 其实无论什么操作系统, 你可以搜索一下默认的 SPFILE 参数文件的位置, 就可以知道 Oracle 默认的参数文件在什么位置处 在 Oracle 启动时, 会在此默认位置处首先寻找 spfilesid.ora, 如果找不到了, 再在此位置处查找 SPFILE.ORA, 如果还没有, 在同一位置中查找 initsid.ora 证明此点非常简单, 在 ORACLE_HOME\database 下分别准务三个参数文件, spfilesid.ora,spfile.ora, 和 initsid.ora, 让 spfilesid.ora 中的 service_names=spfilejj, SPFILE.ORA 中的同一参数值为 SPFILE,initSID.ora 中的值为 initjj 具体步骤如下: 一 准备 SPFILE.ORA 步 1, 修改系统参数, 效果只影响 spfile: alter system set service_names=spfile scope=spfile; 步 2, 根据 spfile 生成 pfile: create pfile='e:\aa.ora' from spfile; 步 3, 根据 pfile 生成 spfile: create spfile='e:\oracle\ora92\database\spfile.ora' from pfile='e:\aa.ora'; 二 准备 initjj.ora 步 1, 修改系参数, 效果只影响 spfile: alter system set service_names=initjj scope=spfile; 步 2, 根据 spfile 生成 pfile: create pfile='e:\oracle\ora92\database\initjj.ora' from spfile; 三 将 spfilejj.ora 中的 service_names 改为 spfilejj 步 1, 修改系统参数, 只影响 spfile: alter system set service_names=spfilejj scope=spfile; 文件的显示如图 4.1: Page 56

图 4.1 参数文件列表 4.5.5 数据库启动时寻找参数的顺序 我们有了三个参数不尽相同的参数文件, 下面开始验证寻找参数文件的顺序 : 步 1: 重启数据库 : startup force; 步 2, 显示 service_name 参数 : SQL> show parameter service_names NAME TYPE VALUE ------------------------------------ ----------- ----------------- service_names string SPFILEJJ spfilejj.ora 中的此参数值为 SPFILEJJ, 这证明 Oracle 先找 spfilejj.ora 让我们继续 步 3: 先关闭数据库 shutdown immediate 步 4: 删除 spfilejj.ora 步 5: 启动数据库 : startup 步 6: 查看参数 : SQL> show parameter service_names NAME TYPE VALUE ------------------------------------ ----------- -------- service_names string SPFILE 此参数值为 SPFILE, 这证明当 spfilejj.ora 不存在时,Oracle 将以 SPFILE.ORA 作为参数文件 下面我们继续试验 步 7: 先关闭数据库 shutdown immediate 步 8: 删除 PFILE.ORA 步 9: 启动数据库 : startup 步 10: 查看参数 : SQL> show parameter service_names Page 57

NAME TYPE VALUE ------------------------------------ ----------- -------- service_names string INITJJ 此参数值为 INITJJ, 这证明当 spfilejj.ora 和 SPFILE.ORA 都不存在时,Oracle 将以 initjj.ora 作为参数文件 如果此参数文件也不存在, 启动将会报错,Oracle 必须, 有一个参数文件 最后, 我们将数据库恢复为使用 SPFILE 型的参数文件 因为,PFILE 参数文件中的参数, 不使用如下命令修改 alter system set parameter_name=value scope=spfile both PFILE 参数文件中的参数, 要修改的话只能是关闭数据库, 用文本编辑器修改文件, 再打开数据库 SQL> alter system set service_names=test scope=spfile; alter system set service_names=lx scope=spfile * 第 1 行出现错误 : ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE 重建 SPFILE 非常简单, 如下一条命令即可 :create spfile from pfile; 除以上三个参数文件外, 我们可以在启动数据库时, 自己指定参数文件 STARTUP PFILE = 位置 \ 名字或 STARTUP SPFILE = 位置 \ 名字这个比较简单, 我们就不再验示了 4.5.6 STARTUP 命令启动数据库 STARTUP [FORCE] [RESTRICT] [PFILE=filename][SPFILE=filename] [OPEN [RECOVER][database] MOUNT NOMOUNT] force : 在不关闭数据库的情况下强制重新启动数据库, 相当与先关闭再启动, 我们通常称之为重启命令 pfile=filename 和 spfile=filename 我们在前面已经说过了, 就是在指定位置打开指定的参数文件 OPEN 这个是缺省通常你只打 STARTUP 省略所有选项就会按照 OPEN 方式, 启动数据库到打开状态, 其实也就是完全启动数据库 MOUNT 启动数据库到 MOUNT 状态, 但不打开数据库 NOMOUNT 启动数据库到 NOMOUNT 状态 数据库可以以只读方式打开, 方法是 : Page 58

步 1, 启动数据库到 mount 状态 : startup mount 步 2, 以只读方式打开数据库 : alter database open read only; 4.5.7 SHUTDOWN 命令关闭数据库 关闭模式 : A = ABORT I = IMMEDIATE T = TRANSACTIONAL N = NORMAL Shutdown 命令可以关闭数据库, 它后面可以有如上四个选项, 其中最后一个 Normal 是默认值 具体意义, 可以参见上表 关闭数据库的时候的一些动作可以见表 7.1: 关闭模式 A I T N 允许建立新连接否否否否等待到当前会话结束否否否是等待到当前事务处理结束否否是是强制执行检查点操作并关闭文件否是是是下面, 我们实验一下 : NORMAL, 也就是正常关闭数据库, 在上表中, 以 N 为代表 可以看到, 在 Normal 关闭数据库时, 除了不允许建立新的连接外, 允许当前正在进行的会话继续进行, 当前正在进行的事务, 也可正常运行直到终止 例子 ( 两个会话, 以 NORMAL 方式关闭, 必须等待另一会话退出, 另一会话中仍可以执行 DML Select DDL 等语句, 另一会话退出, 数据库才会关闭 ) 在所有的会话正常退出后,Normal 才会关闭数据库 在等待期间, 不能有新的连接, 不过仍然可以有新的事务 TRANSACTIONAL 会等待所有的事务结束后, 就关闭数据库 无论会话是否退出 在 TRANSACTIONAL 完成关闭操作期间, 不允许有的事务, 更不允许连接, 但可以使用 select 查询 IMMEDIATE,ORACLE 会自动回退没有提交的事物, 断开所有连接, 关闭所有没有结束的会话, 立即关闭数据库 以上 3 种关闭方式, 在数据库关闭前, 都会先将 buffer cache 中的脏数据刷新至磁盘文件, 我们以后要讲到, 这个操作在 Oracle 中被称为完全检查点 因为所有的脏数据都被写进磁盘, 因此, 不会丢失用户所做的修改 下一次启动时也不需要利用日志进行恢复 我们称这种方式关闭的数据库是一致的数据库, 也称为干净的数据库 如果使用 ABORT 关闭数据库的话,ORACLE 会立即退出, 并不刷新脏数据到磁盘 Bort 时的操作, 就好象断电和死机一样,Oracle 立即中止 我们通常可以利用这种方式来模拟数据库出现故障后的情况, 来熟悉如死机 掉电等突发情况后的 Oracle 的恢复 Page 59

ABORT 关闭数据库后, 数据库将是不一致的或着是脏的. 下次启动时是需要读取日志来 进行恢复的 Page 60

第六节告警日志 告警日志的注意事项 位置由初始化参数 background_dump_dest 决定 普通文本型文件 可以用任何文本编辑器打开 包括 Oracle 认为应该让 DBA 知道的信息 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.6 告警日志 告警日志的存储位置由 background_dump_dest 这个参数决定 它是一个普通的文本文件, 在数据库启动时, 在 NOMOUT 阶段, 会打开他, 如果这个文件不存在, 将会在 NOMOUNT 阶段由 ORACLE 自动创建, 他里面所记录的信息会不断的增加 它像是一本 Oracle 的流水帐,Oracle 会将一些警告 错误信息, 或他认为重要的信息, 写进告警日志 告警日志中太久以前的信息对于 DBA 来说, 已经是没什么用的 但 ORACLE 不会自动删除这些过时的信息,DBA 应该用文本编辑器手动打开, 并删除其中的过时信息, 如果需要备份这个告警日志文件, 可以直接使用操作系统下的复制命令即可 总之这是一个数据库之外的文件,ORACLE 只会向其中写入一些自己的运行状态信息, ORACLE 不会对他进行任何的管理操作 告警日志包含了以下信息 : 1 数据库启动或关闭的时间 2 所有非缺省初始化参数的列表 3 后台进程的启动 4 例程使用的线程 5 正在向其中写入信息的日志序列号 LGWR 6 有关日志切换的信息 Page 61

7 表空间的创建和回滚段的创建 8 已发出的警报声明 9 有关 ORA-600 等错误消息和区错误的信息. 当数据库出现故障时, 我们首先要查找告警日志, 看是否能够在其中找到有用的信息, 他对于排故是非常重要的 甚至在数据库没有故障时, 时常检查一下告警日志中是否有警告信息, 这对于及时发现问题, 也是很重要的 我们在下一章中, 就会有一个使用告警日志的例子 一定要记住, 数据库出现故障时, 首先要去看告警日志 Page 62

第七节跟踪文件 跟踪文件注意事项 位置由初始化参数 user_dump_dest 决定 普通型文本文件 可以用任何文本编辑器打开 最大大小由初始参数 max_dump_file_size 限制 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 4.7 跟踪文件 后台跟踪文件, 后台跟踪文件的位置和告警日志一样, 他主要记录后台进程的一些信息, 用户跟踪文件,user_dump_dest 又这个参数决定位置. 他是由服务器进程生成, 记录些用户运行相关的信息, 如 : 用户所执行的 SQL 语句的相关信息. 具体这个我们以后会详细讲述 以上两种跟踪文件, 它们的最大大小都由 max_dump_file_size 参数定义 如果此参数定为 100M 那么单个用户跟踪文件的最大大小不会超过 100M 多余部分将会被截断 此参数也可以设置为 UNLIMITED, 即, 不限大小 另外, 告警日志的大小, 不受此参数控制 在告警日志里面会有跟踪文件的信息, 这部分跟踪文件协助告警日志显示问题 Page 63

第五章 控制文件管理 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 第 5 章控制文件管理 完成本章的学习后, 您应该能达到下列目标 : 解释控制文件的用途, 列出控制文件的内容, 对控制文件进行多元备份和管理, 使用 Oracle 管理文件 (Oracle Managed Files, OMF) 管理控制文件, 获取控制文件信息 Page 64

第一节控制文件的用途 控制文件的注意事项 : 小型二进制文件 在创建数据库时被创建 定义了物理数据库的当前状态 在 MOUNT 时被打开 丢失后必须恢复 Published by arrangement with the original publisher, UPLOOKING(Beijing),Inc.This manual should not appear to be a photocopy. If you find that UPLOOKING teaching material are being photocopied without permission. Please mail uplooking@uplooking.com or call 010-62113016/17.Thank you! 5.1 控制文件的用途 控制文件是小型二进制文件, 定义物理数据库的当前状态, 并维护数据库的完整性 控制文件的要求 : 在启动数据库时处于 MOUNT 状态, 能够操作数据库, 只链接至一个数据库, 丢失数据后可能需要恢复, 最初由 CREATE DATABASE 确定大小 Page 65