本书系统全面地介绍了Oracle 10g数据库的结构、管理和优化,内容涵盖整个10g OCP的考试范围,包括Oracle 10g数据库的体系架构、存储结构、网络服务、备份与恢复、闪回(flashback)管理、资源管理、调度管理、自动存储管理(ASM)、自动化性能监控与调优等;既着重介绍了在实际工作中需要用到的管理知识,又兼顾了OCP考试所涉及的考点。.\r\n
本书编排由浅入深,既详细介绍了Oracle 10g数据库表面的行为特征(也就是“是什么”),又阐明了其行为背后的原因(也就是“为什么”)。比如undo表空间是如何提供一致性读、检查点的工作原理等。..\r\n
本书内容丰富,语言通俗易懂,实用性强,便于读者学习、实践以及参加10g OCP的考试,尤其适合于初学者以及希望更进一步了解Oracle数据库的人群。本书既可作为各大中专院校相关专业和培训班的辅导教材和参考用书,也可作为数据库系统开发应用技术人员和自学者的学习和参考用书。...
第1章 Oracle 10g数据库简介. 1
对于使用过关系数据库管理系统的人来说,Oracle绝对是一个非常响亮的名字。那么Oracle是什么?Oracle数据库服务器又是什么?
1.1 Oracle 10g网格计算简介 1
1.2 Oracle体系结构简介 2
1.3 Oracle数据库存储简介 6
第2章 安装Oracle 10g软件及创建数据库 9
俗话说,千里之行,始于足下。我们要开始Oracle 10g的学习,当然首先要从安装开始。任何一个软件的安装相对于软件本身的管理来说,都是比较简单的,Oracle也不例外,它提供了一个图形界面帮助我们更加方便、快速地将Oracle软件从安装介质中提取出来,并安装到主机上。
2.1 安装之前的准备 9
2.2 开始安装 11
2.3 创建数据库 15
第3章 数据字典 21
所谓数据字典,就是指描述数据的数据,Oracle必须借助数据字典才能正常运行。比如,我们在数据库里创建了一个表,则当我们往该表里插入数据的时候,Oracle必须知道这个表位于哪个数据文件里、表有哪些列、每个列的类型各是怎样等信息,才能完成插入数据的工作。而这些有关表的名称、表的列名等信息,正是用来描述数据的数据,这些信息也是存放在表里的,而这些表就叫做数据字典表。
3.1 数据字典表 21
3.2 动态性能视图 23
第4章 初始化参数与实例 25
在启动Oracle数据库实例的时候,我们需要告诉Oracle应用程序,应该分配多大的内存,以及其他行为活动的方式。为此,我们需要使用初始化参数文件。所谓初始化参数,就类似于我们现实世界中的开关,我们往左边拨一下或者往右边拨一下,得出的结果也是不一样的。
4.1 初步了解启动和关闭数据库实例 25
4.2 静态参数文件 26
4.3 动态参数文件 27
4.4 再议实例的启动和关闭 30
4.5 使用EM管理实例 32
第5章 内存组件与Oracle进程 36
在第1章中,我们已经知道,Oracle数据库服务器由两大部分组成:实例和物理文件(物理文件也叫数据库)。实例就是指内存部分,其中包含两个部分:内存组件和进程。我们必须通过实例读取物理文件中存放的数据。同时,实例中还缓存了曾经使用过的数据,从而使得我们在下次再次访问相同的数据时,能够直接读取内存即可,而不需要发生物理I/O。而在本章中,我们就来详细地探讨一下,来看看这些内存组件到底是什么样子的。
5.1 用户与Oracle数据库服务器建立连接 36
5.2 深入Shared Pool 38
5.2.1 shared pool的内存结构 39
5.2.2 library cache和dictionary cache概述 42
5.2.3 解析SQL语句的过程 44
5.2.4 设置shared pool 47
5.3 深入Log Buffer 49
5.3.1 log buffer的内存结构 51
5.3.2 log buffer的内部管理机制 52
5.3.3 log buffer的设置 54
5.4 深入Buffer Cache 55
5.4.1 Buffer Cache的内存结构 55
5.4.2 Buffer Cache的管理机制 56
5.5 其他内存池 65
5.6 自动共享内存管理 66
5.7 PGA管理 69
5.7.1 PGA的概念及其包含的内存结构 69
5.7.2 PGA自动管理 71
第6章 存储管理 74
我们在第1章中已经介绍到,Oracle把数据物理地存放在数据文件里,而使用逻辑概念来存取这些数据。为此,Oracle引入了表空间(tablespace)、段(segment)、区间(extent)以及数据块(block)这些逻辑概念。所谓逻辑概念,就是通过存放在表里的数据来描述物理空间的使用。
数据库本身就是一个逻辑概念,包含数据文件、控制文件以及联机日志文件。而我们可以继续将数据库细分成多个较小的逻辑概念,也就是表空间。一个表空间只能属于一个数据库,同时,一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。
6.1 表空间 74
6.1.1 表空间的空间管理 75
6.1.2 创建和管理表空间 78
6.1.3 临时表空间和临时表空间组 86
6.1.4 非默认数据块大小的表空间 87
6.2 联机日志文件 88
6.2.1 日志切换 88
6.2.2 管理日志文件 90
6.3 OMF 92
6.4 数据块的结构 93
第7章 undo表空间管理 95
对于DML语句来说,只要修改了数据块,Oracle数据库就会将修改前的数据保留下来,保存在undo segment里,而undo segment则保存在undo表空间里。从Oracle 9i起,有两种undo的管理方式:自动Undo管理(Automatic Undo Management,简称AUM)和手工Undo管理(Manual Undo Management,简称MUM)。Oracle 9i之前只能使用MUM,而且在MUM中,undo segment又叫做rollback segment。从Oracle 9i起,Oracle就建议使用AUM,而不应再使用MUM了。因此,我们不讨论MUM以及rollback segment。
7.1 DML语句与undo 95
7.2 undo的作用 96
7.3 配置AUM 98
7.4 管理undo表空间 101
第8章 用户、权限和角色管理 103
任何一个DBA都需要了解Oracle中的用户、权限和角色的管理。读完本章以后,我们能够了解到:
与用户管理相关的工作,包括创建用户、密码管理、profile的管理等;
权限分为哪两种方式,每种权限各有哪些特点,如何赋予每种权限;
?角色是什么,它有什么特点,如何管理角色。
8.1 用户管理 103
8.1.1 创建和删除用户 104
8.1.2 Profile与用户管理 109
8.2 权限管理 112
8.2.1 系统权限 112
8.2.2 对象权限 114
8.3 角色管理 116
第9章 对象管理 119
在Oracle数据库里,表、索引、存储过程、函数等都叫做对象。所谓对象,指的是逻辑意义上的概念,不是物理意义上的概念。这些对象都放在某个用户下,这些对象也叫做schema对象。schema表示某个用户下对象的集合,schema的名称与用户名相同。但是schema与用户不是一回事,如果用户下没有任何对象,则该用户就不存在schema。只有当用户下具有对象了,该用户才具有schema。
9.1 表 119
9.1.1 创建普通表 120
9.1.2 管理普通表 124
9.1.3 约束(constraint) 132
9.1.4 使用分区表、索引组织表、簇表 136
9.2 索引 143
9.2.1 B树索引 143
9.2.2 位图(bitmap)索引 148
9.2.3 管理索引 149
9.3 其他对象 151
9.4 可恢复的空间分配(Resumable Space Allocation) 153
第10章 闩锁、锁定和并发性 157
在Oracle数据库中,通过闩锁(latch)和锁定(lock)来解决这两个问题。闩锁和锁定既有相同点又有不同点。相同点在于它们都是用于实现串行化的资源,而不同点则在于闩锁是一个低级别、轻量级的锁,获得和释放的速度很快,以类似于信号灯的方式实现。而锁定则可能持续的时间很长,通过使用队列,按照先进先出的方式实现。也可以简单地理解为闩锁是微观领域的,而锁定则是宏观领域的。
10.1 闩锁(latch)概述 157
10.2 锁定(lock)概述 159
10.3 DML事务锁定的机制 160
10.3.1 行级锁(TX锁) 161
10.3.2 表级锁(TM锁) 161
10.4 解决DML事务锁定的冲突 163
10.4.1 锁定相关视图 163
10.4.2 检测并解决冲突 164
10.4.3 死锁 169
10.5 DDL锁定 170
10.6 创建自己的锁定 173
第11章 配置网络环境 177
在Oracle数据库中,网络环境属于基础架构的配置,如果没有建立网络环境,则整个数据库无法被用户在客户端所使用。
11.1 用户与Oracle数据库服务器建立连接 177
11.2 配置监听器 178
11.3 配置客户端 183
11.4 配置共享连接 185
11.5 调用外部过程 188
第12章 手工管理的备份和恢复 191
备份和恢复指的是通过各种方法,保护数据不被丢失。同时,当数据丢失时,提供方法,能够将丢失的数据重新构建出来。
备份指的是对数据库的数据进行复制的过程,可以分为两种情况:物理备份和逻辑备份。物理备份指的是对数据文件、控制文件、归档日志文件的备份;而逻辑备份则是对数据库内部的逻辑对象(比如表等)进行的备份,主要通过导出工具(exp或者expdp)完成。而恢复则是指在数据库数据损坏的情况下,使用备份将受损的数据恢复回来的过程。
12.1 备份 191
12.1.1 冷备份 192
12.1.2 热备份.. 193
12.2 介质恢复 199
12.2.1 完全恢复 202
12.2.2 不完全恢复 208
12.2.3 基于时间点的不完全恢复 211
12.2.4 丢失所有控制文件时的恢复 215
第13章 RMAN管理的备份和恢复 224
Oracle为了方便我们对数据库进行备份和恢复操作,提供了名为Recovery Manager的工具,我们一般将其简称为RMAN。这是一款非常有价值的工具,极大地将DBA从烦琐的备份恢复工作中解放出来。
RMAN具有非常多的优点,比如,它能备份数据文件、归档日志文件、控制文件以及spfile;它能自动维护备份相关的元数据,包括备份文件的名称、完成备份时的SCN号等;它在备份时以数据块为单位,只备份使用过的数据块,因此节省了对备份介质的空间占用;它能对备份出来的文件进行压缩,进一步节省了备份介质的空间占用;在备份过程中,它会自动检测是否出现了损坏的数据块;它还能进行增量备份,从而节省了完成备份所需要的时间等。
13.1 配置RMAN 225
13.1.1 RMAN的体系结构 225
13.1.2 快速闪回区(Flash Recovery Area) 227
13.1.3 使用Configure命令配置RMAN 229
13.2 使用RMAN完成备份 235
13.2.1 备份数据文件 235
13.2.2 备份归档日志文件和控制文件 239
13.2.3 增量备份 240
13.2.4 显示备份信息 244
13.3 使用RMAN进行恢复 248
13.3.1 完全恢复 248
13.3.2 不完全恢复 253
13.4 配置恢复目录 255
第14章 闪回 259
闪回(flashback)是Oracle 10g数据库中推出的一个非常有价值的特性,其目的在于当出现逻辑错误(比如用户误删除了表,或者系统管理员误删除了用户等)时,能够非常快速地完成对业务数据的恢复。
14.1 闪回数据库(flashback database) 260
14.2 闪回删除(flashback drop) 264
14.3 闪回表(flashback table) 267
14.4 闪回版本查询(flashback version query) 268
14.5 闪回事务查询(flashback transaction query) 269
14.6 闪回查询(flashback query) 270
第15章 自动化管理 272
自动化管理是Oracle 10g数据库引入的最大亮点,也是Oracle数据库今后发展的趋势。
15.1 自动化管理概述 272
15.2 AWR体系结构 274
15.2.1 AWR体系概述 274
15.2.2 告警信息和指标 277
15.2.3 基准线 281
15.3 管理AWR及生成AWR报表 286
15.4 ASH体系结构 295
15.5 访问ASH 297
15.5.1 转储方式访问ASH 297
15.5.2 使用SQL语句访问ASH 298
15.5.3 创建ASH报表方式访问ASH 300
15.5.4 通过Database Control的诊断页面访问ASH数据 302
15.6 ADDM 303
15.7 顾问(Advisor) 307
15.7.1 使用内存顾问 308
15.7.2 使用恢复(MTTR)顾问 310
15.7.3 使用SQL Tuning Advisor(STA) 310
15.7.4 使用SQL Access Advisor(SAA) 318
第16章 ASM管理 322
从Oracle 10g开始,推出了一个全新的功能:ASM(Automatic Storage Management,自动存储管理)。表示由Oracle数据库直接管理磁盘,或者也可以认为是Oracle在管理裸设备的升级方法。
16.1 ASM的概念 322
16.2 创建ASM实例 324
16.3 管理ASM磁盘组 329
16.4 管理ASM文件 336
16.5 迁移到ASM 340
16.6 ASMCMD工具 341
第17章 资源管理 344
对于Oracle数据库来说,执行用户发出的命令都需要消耗资源,包括CPU、I/O、内存等。如果在同时执行这些任务的时候,必然会有轻重缓急之分。毕竟,数据库里的资源都是有限的,给这个用户多一些资源,那么势必给那个用户的资源就会少一些。比如,DBA执行的数据库管理方面的任务自然要比普通用户执行的查询某个表的数据的任务要重要一些。既然重要一些,理应多获得一些资源,从而能够较快结束。
17.1 资源管理器的概念 344
17.2 资源管理器的使用 345
17.2.1 创建资源用户组 347
17.2.2 创建资源计划 349
第18章 调度管理 359
在系统管理的过程中,我们不可避免地要碰到定时执行某个任务的情况。比如,每天晚上备份数据库、每个月底汇总报表等。在Oracle 10g数据库之前,我们采用dbms_job程序包来完成这样的有关定时执行的工作。Oracle 10g以后,我们采用一个更加强大的程序包:dbms_scheduler来完成。
18.1 基于时间的调度任务 359
18.2 基于事件的调度任务 363
18.3 调度任务的高级选项 367
18.3.1 使用job class 367
18.3.2 使用window 368
第19章 数据迁移 374
作为DBA,经常会需要在多个数据库之间迁移数据。比如,将测试库中的有关应用系统的配置数据发布到产品库上,或者将OLTP数据库的数据加载到数据仓库中等。在Oracle 10g版本的数据库中,存在很多的用于迁移数据的方式。包括导入导出、可传输表空间、数据泵(data pump)、外部表、可传输数据库等。
19.1 导出导入 374
19.2 可传输表空间 377
19.3 数据泵(Data Pump) 383
19.3.1 导出数据泵(expdp) 384
19.3.2 导入数据泵(impdp) 389
19.4 外部表 391
19.5 可传输数据库 393
第20章 安全 397
维护数据库的安全对于每个DBA来说都是需要认真考虑的任务。而且,从目前的趋势来看,数据库的安全已经越来越成为一个专门而又专业的方向了。有关数据库的安全问题,牵涉到整个数据库的各个方面。限于篇幅,本章不可能把Oracle所有的安全问题都讨论到,以下挑选了一些比较重要的安全问题来进行讨论。
20.1 审计 397
20.1.1 强制审计 397
20.1.2 标准数据库审计 399
20.1.3 基于值的审计 407
20.1.4 精细化审计(Fine-Grained Auditing) 407
20.1.5 对DBA的审计 412
20.2 虚拟专用数据库(VPD) 412
20.2.1 基于行的VPD 413
20.2.2 基于列的VPD 417
20.3 透明数据加密(TDE) 419
20.4 对备份进行加密 422
20.4.1 透明加密模式 422
20.4.2 基于密码的加密模式 423
20.4.3 混合加密模式 423
第21章 全球化支持 425
所谓全球化支持(Globalization Support),也叫做国家语言支持(National Lanaguage Support),表示的是通过使用本国语言和格式来存放、处理以及检索数据库中的数据。利用全球化支持,数据库可以提供我们自己所熟悉的母语环境,比如显示消息用的语言、显示日期时的格式、显示数字时的格式等。Oracle 10g数据库可以支持100多种语言以及30多种字符集。
21.1 字符集 425
21.2 数据库字符集 426
21.3 客户端字符集 428
21.4 客户端字符集与服务器端字符集的转换 430
21.5 语义排序... 432
韩思捷
只要从事过数据库相关领域工作的专业人员,应该都知道Oracle公司的数据库产品是业界的主流产品。而同时Oracle数据库也是一个非常复杂的数据库管理产品,其发展历经三十余载,Oracle数据库的在线帮助文档就达一万页以上。显然,这上万页的文档并不都会对我们的工作有所帮助。
那么如何有效、快速地从这上万页的文档中抽取出对我们日常工作最有帮助的知识内容呢?这正是本书的出发点。
本书内容
本书在作者多年的项目实践经验和培训授课经验的基础上,在Oracle数据库的相关知识中,提取了与日常工作结合最紧密的部分,同时结合10g OCP的考试知识点,对Oracle 10g数据库的方方面面进行了详细的介绍。
本书不但详细介绍了与Oracle数据库相关的概念,同时阐述了其概念背后的原理,还提供了详细的操作步骤,可供读者根据书中的案例,逐步自行操作实践并加以确认。通过阅读本书,读者将会对Oracle 10g数据库的整体形成一个总的概念,包括数据库的体系结构、数据库的管理等。在掌握了这些知识以后,就可以根据自己的兴趣爱好,对Oracle数据库的其他方面自行展开更加深入的研究了,比如配置和管理RAC、Data Guard以及Stream等。
尽管本书立足于Oracle 10g版本,但是其中很大一部分内容都适用于Oracle 9i版本。 凡是Oracle 9i没有而Oracle 10g新增加的功能,在书中都会特别指出。
读者对象
本书假定读者不熟悉Oracle 10g数据库,是一个还在Oracle数据库门外徘徊或者刚入门的新手,而且希望在较深程度上掌握其功能;或者读者对Oracle 9i有所了解但对Oracle 10g不了解,希望能够较深入地了解Oracle 10g的一些新功能;或者已经使用过Oracle数据库,但对其中的工作原理不甚了解,而希望从其本质上对数据库的工作原理有所了解。不管您属于何种情况,都将从本书中受益。本书也非常适用于作为各大中专院校相关专业的培训教材、教学辅导和参考用书。
为了更好地理解本书的内容,要求读者最好能够具备以下知识:
1)基本的SQL语句,了解select、insert、delete、update这四种SQL语句最基本的写法;
2)基本的Linux操作命令。由于本书中数据库安装在Linux操作系统中,因此会牵涉到一些很简单的Linux命令,比如cd、cp、mv、pwd、ls等。当然,您也可以在遇到不了解的Linux命令时,查阅相关的命令手册。
本书结构
本书共分为21章,其格式和风格基本上都是一致的。
1)各个章节的排列顺序依照循序渐进的原则,后面章节中可能会出现前面章节所描述的概念,因此,建议读者按照章节的先后顺序进行阅读。
2)每章的开头内容除了是本章内容的简单说明以外,还列举出在学完本章以后,读者所能掌握的知识点。读者可以在阅读完毕以后,查看这些知识点,检查自己是否已经熟练掌握它们了。
3)对于每一章来说,其内容也遵循由浅入深的原则。其描述顺序基本都是先描述现象,再阐述本质,最后用实例来证明其本质。
下面针对各个章节进行简单的说明。
第1章:对Oracle 10g数据库做一个整体介绍,对数据库整个体系架构和存储架构做了一个简单的阐述。
第2章:如何安装Oracle 10g数据库软件(包括安装前的配置和准备工作)以及如何创建数据库。
第3章:什么是数据字典以及它的重要作用。
第4章:对初始化参数文件(包括pfile和spfile)的管理。
第5章:在Oracle数据库的体系架构中有关实例部分的工作原理,深入地探讨了各个内存组件和后台进程是如何协作完成工作的。
第6章:在Oracle数据库的体系架构中有关物理存储部分的内容,包括表空间、数据文件以及联机日志文件的管理。
第7章:undo表空间的工作原理以及对它的管理。
第8章:对用户、权限和角色管理,包括各种认证方式以及profile的管理。
第9章:如何在Oracle数据库中管理表、索引等各种对象,比如创建表、收缩表、转移表等。
第10章:闩锁(latch)、锁定(lock)的使用,以及如何解决锁定冲突等问题。
第11章:在Oracle数据库中网络服务的概念,以及如何配置网络环境。
第12章:有关Oracle数据库备份恢复的原理,比如检查点SCN号在其中所起到的作用等;并着重介绍了在各种情况下,如何进行手工备份和恢复。
第13章:什么是RMAN,以及在各种情况下,如何使用RMAN进行备份和恢复。
第14章:在Oracle 10g数据库中所引入的闪回体系,包括闪回数据库、闪回删除、闪回表等功能。
第15章:详细介绍了Oracle 10g中新引入的自动化管理功能,包括整个自动化管理体系、如何生成自动化报表和自动化诊断功能,以及如何使用各种顾问来帮助我们更好地管理数据库的性能问题。
第16章:如何使用Oracle 10g新推出的自动存储管理(ASM)功能。
第17章:如何使用资源管理器对数据库的整个资源进行管理和控制。
第18章:如何使用调度管理器来规划任务。
第19章:集中讨论了在Oracle 10g数据库中转移数据的各种方法,包括数据泵、导出导入工具、外部表、可传输表空间以及可传输数据库等。
第20章:集中讨论了有关数据库安全方面的问题,包括如何设置审计、如何使用VPD、如何使用TDE、如何对备份文件进行加密等。
第21章:在Oracle数据库中,对于全球化特性的支持。
本书约定
1)对于Oracle数据库产品来说,出现过很多版本,从Oracle 8i、Oracle 9i到Oracle 10g。而且在2007年7月,Oracle公司已经正式发布了Oracle 11g版本的数据库。但目前该版本还没有大规模的广泛应用。应该说,Oracle 9i和Oracle 10g是目前主流的数据库版本。本书在提到Oracle 9i时,都是针对Oracle 9.2.0以后的版本,而在提到Oracle 10g时,则都是指Oracle 10.2.0以后的版本。
2)书中为了简便,在不影响读者阅读的基础上采用了简称,比如9i表示Oracle 9i,10g则表示Oracle 10g。
3)在本书中的有关Oracle数据库的案例中,如无特别说明,都是在RedHat Linux 4.0操作系统上完成的。
4)本书中的插图和试验结果可能会与读者实际操作的结果不同,这主要是由于读者的试验环境(比如CPU的转速、物理内存的大小、数据库的参数配置等)的不同而引起的。在此特别说明,一切以实际情况为主。
无封面