1、Oracle8i数据库管理员手册读书笔记第1章Oracle体系结构/=-2-11 11:31数据块缓区和S Q L共享池(Shared SQL Pool)是S G A中最大部分,通常占分配给S G A内存9 5 %以上。经过降低对数据文件I / O次数,这些存放区域能够改善数据库性能。/=-2-11 11:45O r a c l e数据库结构可分为三个范围:. 数据库内部结构(如表) 。. 存放区内部结构(包含共享存放区和进程)。. 数据库外部结构。/=-2-11 11:53用户S Y S和S Y S T E M所拥有表被称为数据字典表(data dictionary table),数据字典表
2、提供一个数据库用来管理自己系统目录。数据字典由O r a c l e提供一组目录脚本文件创建。每当安装或升级一个数据库时,全部需要使用创建或修改数据字典表脚本文件。当在数据库中安装一个新选项时,可能要运行另外部分附加目录脚本文件。/=/=-2-13 1:31在O r a c l e 8中,当把一个大表分成若干小表时,能够要求部分范围供数据库使用。这些称作分区( p a r t i t i o n )小表比大表管理愈加简单。比如,能够截断( t r u n c a t e )一个分区数据而不截断其它分区数据。O r a c l e将把分区表看作一个大表,但能够把这些分区作为部分独立对象来管理。/
3、=-2-13 1:31用户S Y S拥有数据字典表,这些表存放了数据库中其它结构全部信息;用户S Y S T E M拥有访问数据字典表视图,这些视图供数据库中其它用户使用。/=-2-13 1:31用户帐号拥有对象集称为用户模式( s c h e m a )。/=-2-13 1:31在关系数据库中,一个行物理位置无关紧要,除非数据库需要找到它。为了能找到数据,表中每一行均用一个R o w I D来标识。R o w I D告诉数据库这一行正确位置(指出行所在文件、该文件中块、该块中行地址)。注意索引结构表没有传统Oracle RowID,不过,其主键起一个逻辑R o w I D作用。/=-2-13
4、 1:31索引是一个供服务器在表中快速查找一个行数据库结构。索引有三种形式:簇索引、表索引和位映射索引。簇索引把簇关键字值存放在簇中;下面一小节将对簇用途进行具体描述。表索引除了确定行物理位置( R o w I D )外,还存放表行值。位映射索引是表索引一个特殊形式,用于支持对大表进行查询(这些大表极少有不一样值列)。每一个索引条目全部由一个键值和R o w I D组成。能够索引一个列或一组列, O r a c l e用B *树( B * - t r e e )机制存放索引条目,以确保用最短路径访问键值。当一个查询访问索引时,就能找到和查询条件相匹配索引条目。和条目相匹配R o w I D值向
5、O r a c l e提供相关行物理位置,以减轻定位数据所需要I / O负担。/=-2-13 1:51视图定义(包含作为基础查询、列安排、授予权限)存放在数据字典中。/=/=-2-15 0:34函数、软件包和过程源代码被存放在数据字典表中。/=-2-15 0:36触发器分为两种类型:. 语句触发器:对每一个触发语句触发一次。. 行触发器:对受语句影响表中每一个行触发一次。/=-2-15 23:29对于O r a c l e 8,能够创建INSTEAD OF触发器。INSTEAD OF触发器实施一个替换操作来替换触发器操作。也就是说,假如对表创建一个INSTEAD OF INSERT触发器,将实
6、施触发器代码且绝不会出现引发触发器实施i n s e r t操作。/=-2-15 23:30公用同义词由一个特定数据库全部用户共享;私有同义词只被数据库各个用户帐号全部者所拥有。/=-2-15 23:30因为索引或触发器只能在表操作过程中被数据库访问,所以没有针对索引或触发器访问权限。/=-2-15 23:39段由称作盘区( e x t e n t )部分邻接O r a c l e块集合组成。一旦段中现有盘区不能再容纳新数据,该段将获取另外盘区。假如需要话,这种扩展将连续下去,直到表空间数据文件中没有自由空间或已达成每个段内部盘区最大数量为止。假如一个段中有多个盘区,将无法确保这些盘区连接在一
7、起。/=-2-15 23:40当你撤消一个段时,该段所使用盘区就成为自由盘区。O r a c l e能够重新把这些自由盘区用于新段或现有段扩展。/=-2-15 23:42O r a c l e用数据库中回滚段来提供一个前映像数据。/=-2-15 23:45显形图在结构上和快照很相同。它存放基于一个基础查询复制数据。快照通常存放来自远程数据库数据,而显形图通常则存放从目前数据库中复制数据。/=/=-2-16 0:01通常,数据块缓存区只是数据库大小1 %2 %,O r a c l e使用最近最少使用( L R U,least recently used)算法来管理可用空间。/=-2-16 0:0
8、4数据字典缓存区经过最近最少使用(LRU) 算法来管理。字典缓存区大小由数据库内部管理。字典缓存区是S Q L共享池一部分,共享池大小由数据库文件i n i t . o r a中S H A R E DPO O L-S I Z E参数来设置。/=-2-16 0:10重做项描述对数据库进行修改。它们写到联机重做日志文件中,方便在数据库恢复过程中用于向前滚动操作。/=-2-16 0:12在第二次运行(由任何用户)相同S Q L语句时,能够利用S Q L共享池中可用语法分析信息来加紧实施速度。/=-2-16 0:16缓冲区数量必需最少比L R U锁存器数量多5 0倍。/=-2-16 0:19当开启一个
9、数据库时, SMON(System Monitor,系统监控程序)进程实施所需实例恢复操作(使用联机重做日志文件),它也能够清除数据库,取消系统不再需要事务对象。S M O N另一个用途是:将邻接自由盘区组成一个较大自由盘区。/=-2-16 0:26程序全局区( P G A,Program Global Area)是存放区中一个区域,由一个O r a c l e用户进程所使用,P G A中内存不能共享。/=-2-16 0:26P M O N (进程监控程序)后台进程清除失败用户进程,释放用户当初正在使用资源。/=-2-16 0:28D B W R (数据库写入程序)后台进程负责管理数据块缓存区
10、及字典缓存区内容。它以批方法把修改块从S G A写到数据文件中。/=-2-16 0:31假如创建多个D B W R进程,这些进程就不叫做D B W R,它们将有一个数字分量。比如,假如创建5个D B W R进程,进程操作系统名就可能是D B W 0、D B W 1、D B W 2、D B W 3和D B W 4。/=-2-16 0:33L G W R (日志写入程序)后台进程负责把联机重做日志缓冲区内容写入联机重做日志文/=-2-16 0:39检验点使D B W R把上一个检验点以后全部已修改数据块写入数据文件,并更新数据文件头部和控制文件以统计该检验点。当一个联机重做日志文件被填满时,检验点
11、进程会自动出现。能够用数据库实例i n i t . o r a文件中L O G _ C H E C K P O I N T _ I N T E RVA L参数来设置一个频繁出现检验点。/=-2-16 0:42当O r a c l e以A R C H I V E L O G (归档日志)模式运行时,数据库在开始重写重做日志文件之前先对其进行备份。/=-2-16 0:43R E C O (恢复进程)后台进程用于处理分布式数据库中故障问题。/=/=-2-17 20:03O r a c l e保留全部数据库事务日志。这些事务被统计在联机重做日志文件(online redo log f i l e )中
12、。/=-2-17 20:10一个O r a c l e数据库最简单形式由下列组件组成:. 一个或多个数据文件。. 一个或多个控制文件。. 两个或多个联机重做日志文件。/=-2-17 20:12数据库内部结构包含:. 多用户/模式。. 一个或多个回滚段。. 一个或多个表空间。. 数据字典表。. 用户对象(表、索引、视图等)。/=-2-17 20:14访问数据库服务器最小组成以下:. 一个S G A (其中包含数据块缓存区、重做日志缓存区、S Q L共享池)。. SMON后台进程。. PMON后台进程。. DBWR后台进程。. LGWR后台进程。. C K P T后台进程。. 和P G A相关联用
13、户进程。/=-2-17 20:15全系统导出通常见于消除数据库中碎片。/=-2-17 20:18对数据库进行物理备份有两种方法可供选择:联机备份(online backup)和脱机备份(offline backup)。/=-2-17 20:23在联机备份期间,先将表空间临时置于一个备份状态,当文件备份完成后,再将表空间恢复为正常状态。/=/=-2-17 20:36O r a c l e 8中L O B存放区隐式采取1 : 1关系存放L O B数据。假如L O B数据大小超出一个阈值,它就和基表分开存放。/=-2-17 20:50O r a c l e 7 . 3以后版本提供了Oracle En
14、terprise Manager(OEM,O r a c l e企业管理器)图形用户界面( G U I )工具。/=第2章硬件配置研究/=-2-17 21:04数据库服务器(也叫做实例)由一组内存结构和访问数据库文件后台进程组成。/=/=-2-19 20:36对于N e t 8通信接收和处理,主机必需运行一个称作listener (监听器)进程,这个监听器必需在和数据库通信相关每一个主机上运行。/=-2-19 20:40数据库链接不能用于从L O N G数据类型字段返回数值。/=/=-2-22 23:48三层结构是用户机/服务器模型一个扩展。每一层功效全部视你实现而定,通常这三层安排以下:.
15、用户机,用于提供给用程序。. 应用程序服务器,用于应用程序业务逻辑处理。. 数据库服务器,用于数据存放和检索。/=-2-22 23:54能够使用Oracle Transparent Gateway(透明网关)从你数据库中访问非O r a c l e数据库。每种被访问数据库引擎需要一个独立网关。网关在被访问数据源主机上运行。比如,假如源数据存放在一个A S / 4 0 0数据库上,则A S / 4 0 0Oracle Transparent Gateway软件就安装在A S / 4 0 0服务器上。实施时,网关软件在源服务器上创建一个监听器,其作用和S Q L * N e t / N e t 8
16、监听器一样。假如有一个用户名和这个数据库口令,就能够访问A S / 4 0 0数据库中特定数据对象。/=第3章数据库逻辑设计/=-2-23 0:12为了在数据库中高效地分布对象,必需首先建立一个分类系统。数据库中逻辑对象必需依据它们使用方法及其物理结构对数据库影响来进行分类。这种分类过程包含将索引和表分开,将低活动性表和高活动性表分开。尽管对象活动量只能在产品使用时确定,但频繁使用数据表关键集通常能够分离出去。/=-2-23 0:15唯一能重建S Y S T E M表空间方法是重新创建数据库/=-2-23 0:17数据字典段(Data dictionary s e g m e n t )数据字
17、典表物理存放区存放在S Y S T E M表空间中/=-2-23 0:21数据段(data segment)是部分物理区域,用于存放和表和簇相关数据。数据段常常被数据库访问,也常常实施数据操作事务。对数据段访问要求管理是产品数据库关键目标。/=-2-23 0:22索引段不应和其相关表存放在同一个表空间中,因为它们在数据管理和查询时存在很多I / O冲突。/=-2-23 0:30在数据库中,回滚段维护语句级和事务级读一致性。/=-2-23 0:34临时段(temporary segment) 是数据库中动态创建对象,用以存放大型排序操作(如select distinct、u n i o n、cr
18、eate index等操作)中数据。因为它们动态性,所以临时段不应和其它类型段一起存放。/=-2-23 0:36假如把一个表空间指定为临时表空间,将不能在这个表空间内创建表和索引之类永久性段。另外,当相关命令结束时,不会撤消这个表空间中临时段,只是空间管理量有所降低。/=-2-23 0:38通常,把S Y S T E M和S Y S用户临时表空间设置值改变成非S Y S T E M表空间比较适宜。/=/=-2-23 22:03数据库逻辑设计结果应该符合下述准则:. 以相同方法使用段类型应该存放在一起。. 应该根据最通常使用情况(事务大小、用户数量、事务数量等)来设计系统。. 应有用于例外情况单
19、独区域。. 应使表空间冲突最小化。. 应将数据字典分离开。/=第4章数据库物理设计/=-2-23 22:55通常数据库中90%以I/O全部集中在数据(DATA)、回滚段(RBS)、系统(SYSTEM)、索引(INDEXES)四个表空间上。/=-2-23 23:03每个数据库最少要有两个有效联机重做日志文件。/=-2-23 23:12当O r a c l e以A R C H I V E L O G模式运行时,数据库会在重写联机重做日志文件之前,对它进行拷贝。/=-2-23 23:35要确保数据库恢复能力,必需对联机重做日志文件进行镜像。/=/=-2-26 23:10当创建一个数据库时,把数据库分
20、成叫作表空间( t a b l e s p a c e )多个逻辑区段。如第3章所述,S Y S T E M表空间是创建第一个表空间,然后创建另外表空间以分别存放不一样种类数据。创建一个表空间时,会对应地创建数据文件( d a t a f i l e )以存放数据。这些文件立即分配在它们创建时指定空间。所以,在数据库和表空间之间就存在着一对多关系,而且在表空间和数据文件之间也存在一对多关系。一个数据库能够有多个用户,其中每个用户全部拥有一个模式( s c h e m a )。每个用户模式是表和索引等数据库逻辑对象集合。这些对象表示存放在表空间物理数据结构。用户模式中对象能够存放在多个表空间中,
21、而且一个表空间能够包含多个模式中对象。当创建一个数据库对象(如表或索引)时,能够经过用户缺省值或特殊指令将其给予一个表空间。这么就会在该表空间中创建一个段( s e g m e n t )以存放和该对象相关数据。分配给这个段空间会一直保留着,直到该段被撤消、人工收缩或截断。相关对分配给表、索引和簇空间进行人工收缩细节,请参见本章4 . 9节“段空间重新分配方法”。一个段由部分称作盘区( e x t e n t )部分连续O r a c l e块区段组成。一旦现有盘区不能再存放新数据,这个段就要获取另一个盘区。这种扩展过程将一直连续下去,直到表空间中数据文件已没有自由空间,或已达成每个段最大内部
22、盘区数量为止。假如一个段由多个盘区组成,则无法确保这些盘区连续性。/=-2-26 23:24在表空间级设置p c t i n c r e a s e值为0,将影响O r a c l e自动合并表空间中自由空间能力。把表空间缺省p c t i n c r e a s e设置为一个很低值,比如1。/=-2-26 23:28表段( Table segment)通常也称作数据段(data segment),存放着和表或簇相关行数据。每个数据段含一个标题块,用作段空间目录。/=-2-26 23:36从数据表中删除行对表所分配空间量没有影响。/=-2-26 23:45要最小化数据段中无用空间数量,需要调整
23、p c t f r e e参数。这个参数指定每一个数据块中将保留自由空间数量。当N U L L值列被更新为有数值时,或行中其它值改变造成行长度增加时,就使用这一自由空间。p c t f r e e参数确实切设置是和应用情况相关,因为它取决于所实施更新性质。/=/=-2-27 23:02对于临时表,将i n i t i a l和n e x t盘区大小设为表空间大小1 / 2 0 1 / 5 0。对于这个表空间,i n i t i a l和next 缺省设置应该相等。将p c t i n c r e a s e值设为0,这么,段将由一样大小盘区组成。当撤消这些段时,下一个临时段将能重新利用这些已撤
24、消盘区。/=-2-27 23:03“临时”表空间不能用于存放任何永久段,只能存放操作时创建临时段。/=-2-27 23:09一个表空间能够包含多个数据盘区和一个或多个自由盘区(见图4 - 4 a )。当一个段被撤消时,它盘区被释放,并标识为“自由”。/=-2-28 12:34能够使用alter tablespace命令中c o a l e s c e子句来强制表空间合并其自由空间,以下所表示:alter tablespace DATA coalesce;这么能够促进D ATA表空间中相邻自由盘区合并成更大自由盘区。注意这个alter tablespace命令不能合并被数据盘区分隔自由盘区。合并
25、只是对表空间内部自由空间进行处理,并不能改变表空间整体大小。/=-2-28 12:36能够用alter datebase命令来手工扩展数据文件,以下例所表示:alter databasedatafile d b 0 5 / o r a c l e / C C 1 / d a t a 0 1 . d b f resize 200M;/=-2-28 12:43能够经过alter tablespace命令来增加一个新数据文件,从而使表空间含有自动扩展能力。下列程序清单中命令把一个新数据文件添加给D ATA表空间,并指定了autoextend on和maxsize 为3 0 0 M B:alter t
26、ablespace DATAadd datafile / d b 0 5 / o r a c l e / C C 1 / d a t a 0 2 . d b fsize 50Mautoextend ONmaxsize 300M;要改变一个现有数据文件属性,可使用alter database命令,以下所表示:alter databasedatafile / d b 0 5 / o r a c l e / CC11 / d a t a 0 1 . d b fautoextend ONmaxize 300M;/=-2-28 12:45移动数据文件方法有两种:经过alter database 命令或alter tablespace 命令。alter tablespace方法仅用于其表空间不包含S Y S T E M、回滚段或临时段数据文件。alter database方法可用于全部数据文件。1. alter database方法当使用alter database方法移动数据文件时,数据文件在实例关闭后移动。所包含步骤以下:1) 关闭实例,使用O E M或Server Manager。2) 使用操作系统命令来移动数据文件。3) 安装数据库并使用alter database命令改变数据库中文件名。4) 开