《Oracle8i数据库管理员手册》读书笔记
第1章Oracle体系结构
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-11 11:31
数据块缓区和 S Q L 共享池(Shared SQL Pool)是 S G A 中的最大部分,一般占分配给 S G A 的内存 9
5 %以上。
通过减少对数据文件的 I / O 次数,这些存储区域可以改善数据库性能。
//===============================================================2004-2-11 11:45
O r a c l e 数据库结构可分为三个范畴:
. 数据库内部的结构(如表) 。
. 存储区内部的结构(包括共享存储区和进程)。
. 数据库外部的结构。
//===============================================================2004-2-11 11:53
用户 S Y S 和 S Y S T E M 所拥有的表被称为数据字典表(data dictionary table),数据字典表提供一个
数据库用来管理自己的系统目录。数据字典由 O r a c l e 提供的一组目录脚本文件创建。每当安装或升级
一个数据库时,都需要使用创建或修改数据字典表的脚本文件。当在数据库中安装一个新的选项时,可
能要运行另外一些附加的目录脚本文件。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-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 将把分区表看作一个大表,但可以把这些分区作为一些独立的对象来管理。
//===============================================================2004-2-13 1:31
用户 S Y S 拥有数据字典表,这些表存储了数据库中其他结构的所有信息;用户 S Y S T E M 拥有访
问数据字典表的视图,这些视图供数据库中其他用户使用。
//===============================================================2004-2-13 1:31
用户帐号拥有的对象集称为用户的模式( s c h e m a )。
//===============================================================2004-2-13 1:31
在关系数据库中,一个行的物理位置无关紧要,除非数据库需要找到它。为了能找到数据,表中的
每一行均用一个 R o w I D 来标识。R o w I D 告诉数据库这一行的准确位置(指出行所在的文件、该文件
中的块、该块中的行地址)。
注意索引结构表没有传统的 Oracle RowID,不过,其主键起一个逻辑 R o w I D 的作用。
//===============================================================2004-2-13 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 值向 O r a c l e 提供相关行的物理位置,以减轻定位数据所
需要的 I / O 负担。
//===============================================================2004-2-13 1:51
视图的定义(包括作为基础的查询、列安排、授予的权限)存储在数据字典中。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-15 0:34
函数、软件包和过程的源代码被存储在数据字典表中。
//===============================================================2004-2-15 0:36
触发器分为两种类型:
. 语句触发器:对每一个触发语句触发一次。
. 行触发器:对受语句影响的表中的每一个行触发一次。
//===============================================================2004-2-15 23:29
对于 O r a c l e 8,可以创建 INSTEAD OF 触发器。INSTEAD OF 触发器执行一个替代操作来代替触
发器的操作。也就是说,如果对表创建一个 INSTEAD OF INSERT 触发器,将执行触发器的代码且绝不
会出现引起触发器执行的 i n s e r t 操作。
//===============================================================2004-2-15 23:30
公用同义词由一个特定数据库的所有用户共享;私有同义词只被数据库的各个用户帐号所有者所拥
有。
//===============================================================2004-2-15 23:30
由于索引或触发器只能在表操作过程中被数据库访问,所以没有针对索引或触发器访问的权限。
//===============================================================2004-2-15 23:39
段由称作盘区( e x t e n t )的一些邻接的 O r a c l e 块集合组成。一旦段中的现有盘区不能再容纳新数
据,该段将获取另外的盘区。如果需要的话,这种扩展将持续下去,直到表空间的数据文件中没有自由
空间或者已达到每个段内部的盘区最大数量为止。如果一个段中有多个盘区,将无法保证这些盘区连接
在一起。
//===============================================================2004-2-15 23:40
当你撤消一个段时,该段所使用的盘区就成为自由盘区。O r a c l e 可以重新把这些自由盘区用于新
的段或现有段的扩展。
//===============================================================2004-2-15 23:42
O r a c l e 用数据库中的回滚段来提供一个前映像数据。
//===============================================================2004-2-15 23:45
显形图在结构上与快照非常相似。它存储基于一个基本查询的复制数据。快照一般存储来自远程数
据库的数据,而显形图通常则存储从当前数据库中复制的数据。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-16 0:01
通常,数据块缓存区只是数据库大小的 1 %~2 %,O r a c l e 使用最近最少使用( L R U,least recently
used)算法来管理可用空间。
//===============================================================2004-2-16 0:04
数据字典缓存区通过最近最少使用(LRU) 算法来管理。字典缓存区的大小由数据库内部管理。字典
缓存区是 S Q L 共享池的一部分,共享池的大小由数据库文件 i n i t . o r a 中的 S H A R E DPO O L-S I Z
E 参数来设置。
//===============================================================2004-2-16 0:10
重做项描述对数据库进行的修改。它们写到联机重做日志文件中,以便在数据库恢复过程中用于向
前滚动操作。
//===============================================================2004-2-16 0:12
在第二次运行(由任何用户)相同的 S Q L 语句时,可以利用 S Q L 共享池中可用的语法分析信息来加
快执行速度。
//===============================================================2004-2-16 0:16
缓冲区的数量必须至少比 L R U 锁存器的数量多 5 0 倍。
//===============================================================2004-2-16 0:19
当启动一个数据库时, SMON(System Monitor,系统监控程序)进程执行所需的实例恢复操作(使用联
机重做日志文件),它也可以清除数据库,取消系统不再需要的事务对象。
S M O N 的另一个用途是:将邻接的自由盘区组成一个较大的自由盘区。
//===============================================================2004-2-16 0:26
程序全局区( P G A,Program Global Area)是存储区中的一个区域,由一个 O r a c l e 用户进程所使用,
P G A 中的内存不能共享。
//===============================================================2004-2-16 0:26
P M O N (进程监控程序)后台进程清除失败用户的进程,释放用户当时正在使用的资源。
//===============================================================2004-2-16 0:28
D B W R (数据库写入程序)后台进程负责管理数据块缓存区及字典缓存区的内容。它以批方式把修改
块从 S G A 写到数据文件中。
//===============================================================2004-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。
//===============================================================2004-2-16 0:33
L G W R (日志写入程序)后台进程负责把联机重做日志缓冲区的内容写入联机重做日志文
//===============================================================2004-2-16 0:39
检查点使 D B W R 把上一个检查点以后的全部已修改数据块写入数据文件,并更新数据文件头部和
控制文件以记录该检查点。当一个联机重做日志文件被填满时,检查点进程会自动出现。可以用数据库
实例的 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 参数来设置一个频繁出现的检
查点。
//===============================================================2004-2-16 0:42
当 O r a c l e 以 A R C H I V E L O G (归档日志)模式运行时,数据库在开始重写重做日志文件之前先
对其进行备份。
//===============================================================2004-2-16 0:43
R E C O (恢复进程)后台进程用于解决分布式数据库中的故障问题。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-17 20:03
O r a c l e 保存所有数据库事务的日志。这些事务被记录在联机重做日志文件(online redo log f i l e )中。
//===============================================================2004-2-17 20:10
一个 O r a c l e 数据库的最简单形式由下列组件构成:
. 一个或多个数据文件。
. 一个或多个控制文件。
. 两个或多个联机重做日志文件。
//===============================================================2004-2-17 20:12
数据库内部结构包括:
. 多用户/模式。
. 一个或多个回滚段。
. 一个或多个表空间。
. 数据字典表。
. 用户对象(表、索引、视图等)。
//===============================================================2004-2-17 20:14
访问数据库的服务器的最小构成如下:
. 一个 S G A (其中包括数据块缓存区、重做日志缓存区、S Q L 共享池)。
. SMON 后台进程。
. PMON 后台进程。
. DBWR 后台进程。
. LGWR 后台进程。
. C K P T 后台进程。
. 与 P G A 相关联的用户进程。
//===============================================================2004-2-17 20:15
全系统导出通常用于消除数据库中的碎片。
//===============================================================2004-2-17 20:18
对数据库进行物理备份有两种方式可供选择:联机备份(online backup)和脱机备份(offline backup)。
//===============================================================2004-2-17 20:23
在联机备份期间,先将表空间暂时置于一个备份状态,当文件备份完毕后,再将表空间恢复
为正常状态。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-17 20:36
O r a c l e 8 中的 L O B 存储区隐式采用 1 : 1 关系存储 L O B 数据。如果 L O B 数据大小超过一个阈
值,它就与基表分开存储。
//===============================================================2004-2-17 20:50
O r a c l e 7 . 3 之后的版本提供了 Oracle Enterprise Manager(OEM,O r a c l e 企业管理器)—图形用户
界面( G U I )工具。
//===============================================================
第2章硬件配置研究
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-17 21:04
数据库服务器(也叫做实例)由一组内存结构和访问数据库文件的后台进程组成。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-19 20:36
对于 N e t 8 的通信接收与处理,主机必须运行一个称作 listener (监听器)的进程,这个监听器必须在
与数据库通信有关的每一个主机上运行。
//===============================================================2004-2-19 20:40
数据库链接不能用于从 L O N G 数据类型字段返回数值。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-22 23:48
三层结构是客户机/服务器模型的一种扩展。每一层的功能都视你的实现而定,通常这三层的安排如
下:
. 客户机,用于提供应用程序。
. 应用程序服务器,用于应用程序的业务逻辑处理。
. 数据库服务器,用于数据的存储和检索。
//===============================================================2004-2-22 23:54
可以使用 Oracle Transparent Gateway(透明网关)从你的数据库中访问非 O r a c l e 数据库。每种被访问
的数据库引擎需要一个独立的网关。网关在被访问数据的源主机上运行。例如,如果源数据存储在一个 A
S / 4 0 0 数据库上,则 A S / 4 0 0 的 Oracle Transparent Gateway 软件就安装在 A S / 4 0 0 服务器上。执行
时,网关软件在源服务器上创建一个监听器,其作用与 S Q L * N e t / N e t 8 监听器一样。如果有一个用
户名和这个数据库的口令,就可以访问 A S / 4 0 0 数据库中的特定数据对象。
//===============================================================
第3章数据库逻辑设计
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-23 0:12
为了在数据库中高效地分布对象,必须首先建立一个分类系统。数据库中的逻辑对象必须根据它们
的使用方式及其物理结构对数据库的影响来进行分类。这种分类过程包括将索引与表分开,将低活动性
表与高活动性表分开。尽管对象的活动量只能在产品使用时确定,但频繁使用的数据表核心集通常可以
分离出去。
//===============================================================2004-2-23 0:15
唯一能重建 S Y S T E M 表空间的方法是重新创建数据库
//===============================================================2004-2-23 0:17
数据字典段(Data dictionary s e g m e n t )—数据字典表的物理存储区—存储在 S Y S T E M 表空间中
//===============================================================2004-2-23 0:21
数据段(data segment)是一些物理区域,用于存储与表和簇相关的数据。数据段经常被数据库访问,
也经常执行数据操作事务。对数据段访问要求的管理是产品数据库的主要目标。
//===============================================================2004-2-23 0:22
索引段不应与其相关表存储在同一个表空间中,因为它们在数据管理和查询时存在许多 I / O 冲突。
//===============================================================2004-2-23 0:30
在数据库中,回滚段维护语句级和事务级读的一致性。
//===============================================================2004-2-23 0:34
临时段(temporary segment) 是数据库中动态创建的对象,用以存储大型排序操作(如 select distinct、
u n i o n、create index 等操作)中的数据。由于它们的动态性,所以临时段不应与其他类型的段一起存储。
//===============================================================2004-2-23 0:36
如果把一个表空间指定为临时表空间,将不能在这个表空间内创建表和索引之类的永久性段。此外,
当相关的命令结束时,不会撤消这个表空间中的临时段,只是空间管理量有所减少。
//===============================================================2004-2-23 0:38
通常,把 S Y S T E M 和 S Y S 用户的临时表空间设置值改变成非 S Y S T E M 表空间比较合适。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-23 22:03
数据库逻辑设计的结果应当符合下述准则:
. 以相同方式使用的段类型应当存储在一起。
. 应当按照最通常的使用情况(事务大小、用户数量、事务数量等)来设计系统。
. 应有用于例外情况的单独区域。
. 应使表空间冲突最小化。
. 应将数据字典分离开。
//===============================================================
第4章数据库物理设计
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-23 22:55
一般数据库中 90%以的 I/O 都集中在数据(DATA)、回滚段(RBS)、系统(SYSTEM)、索引(INDEXES)
四个表空间上。
//===============================================================2004-2-23 23:03
每个数据库至少要有两个有效的联机重做日志文件。
//===============================================================2004-2-23 23:12
当 O r a c l e 以 A R C H I V E L O G 模式运行时,数据库会在重写联机重做日志文件之前,对它进行
拷贝。
//===============================================================2004-2-23 23:35
要确保数据库的恢复能力,必须对联机重做日志文件进行镜像。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-26 23:10
当创建一个数据库时,把数据库分成叫作表空间( 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 )。每个用户模式是表和索
引等数据库逻辑对象的集合。这些对象表示存储在表空间的物理数据结构。用户模式中的对象可以存储
在多个表空间中,并且一个表空间可以包含多个模式中的对象。
当创建一个数据库对象(如表或索引)时,可以通过用户缺省值或特殊指令将其赋予一个表空间。这样
就会在该表空间中创建一个段( s e g m e n t )以存储与该对象相关的数据。分配给这个段的空间会一直保
留着,直到该段被撤消、人工收缩或截断。有关对分配给表、索引和簇的空间进行人工收缩的细节,请
参见本章 4 . 9 节“段空间的重新分配方法”。
一个段由一些称作盘区( e x t e n t )—一些连续的 O r a c l e 块—的区段组成。一旦现有的盘区不能再
存储新数据,这个段就要获取另一个盘区。这种扩展过程将一直持续下去,直到表空间中的数据文件已
没有自由空间,或者已达到每个段的最大内部盘区数量为止。如果一个段由多个盘区组成,则无法保证
这些盘区的连续性。
//===============================================================2004-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。
//===============================================================2004-2-26 23:28
表段( Table segment)通常也称作数据段(data segment),存储着与表或簇有关的行数据。每个数据段含
一个标题块,用作段的空间目录。
//===============================================================2004-2-26 23:36
从数据表中删除行对表所分配的空间量没有影响。
//===============================================================2004-2-26 23:45
要最小化数据段中的无用空间数量,需要调整 p c t f r e e 参数。这个参数指定每一个数据块中将保留
的自由空间数量。当 N U L L 值的列被更新为有数值时,或者行中其他值的改变导致行长度增加时,就
使用这一自由空间。p c t f r e e 参数的确切设置是与应用情况相关的,因为它取决于所执行的更新的性质。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-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,这样,段将由同样大小的盘区构成。当
撤消这些段时,下一个临时段将能重新利用这些已撤消的盘区。
//===============================================================2004-2-27 23:03
“临时”表空间不能用于存储任何永久段,只能存储操作时创建的临时段。
//===============================================================2004-2-27 23:09
一个表空间可以包含多个数据盘区和一个或多个自由盘区(见图 4 - 4 a )。当一个段被撤消时,它的盘
区被释放,并标记为“自由”。
//===============================================================2004-2-28 12:34
可以使用 alter tablespace 命令中的 c o a l e s c e 子句来强制表空间合并其自由空间,如下所示:
alter tablespace DATA coalesce;
这样可以促使 D ATA 表空间中的相邻自由盘区合并成更大的自由盘区。
注意这个 alter tablespace 命令不能合并被数据盘区分隔的自由盘区。
合并只是对表空间内部的自由空间进行处理,并不能改变表空间的整体大小。
//===============================================================2004-2-28 12:36
可以用 alter datebase 命令来手工扩展数据文件,如下例所示:
alter database
datafile ‘d b 0 5 / o r a c l e / C C 1 / d a t a 0 1 . d b f’ resize 200M;
//===============================================================2004-2-28 12:43
可以通过 alter tablespace 命令来增加一个新的数据文件,从而使表空间具有自动扩展能力。下列程序
清单中的命令把一个新的数据文件添加给 D ATA 表空间,并指定了 autoextend on 和 maxsize 为 3 0 0 M B:
alter tablespace DATA
add datafile ‘/ d b 0 5 / o r a c l e / C C 1 / d a t a 0 2 . d b f’
size 50M
autoextend ON
maxsize 300M;
要改变一个现有数据文件的属性,可使用 alter database 命令,如下所示:
alter database
datafile ‘/ d b 0 5 / o r a c l e / CC11 / d a t a 0 1 . d b f’
autoextend ON
maxize 300M;
//===============================================================2004-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) 启动实例。
2. alter tablespace 方法
使用 alter tablespace 方法移动数据文件时,数据文件可以在实例运行期间移动。所涉及的步骤如下:
1) 设置表空间为脱机状态。
2) 使用操作系统命令移动文件。
3) 使用 alter tablespace 命令更改数据库中的文件名。
4) 重新设置表空间为联机状态。
注意此方法只适用于非 S Y S T E M 表空间。不能用于含有活动的回滚段或临时段的表空间。
//===============================================================2004-2-28 13:00
联机重做日志文件可以在数据库关闭时进行移动,并且通过 alter database 命令在数据库中重新命名。
这一过程与用 alter database 命令移动数据文件的过程非常相似。
首先,将数据库关闭,移动联机重做日志文件。然后安装数据库,使用 alter database 命令向数据库
通知联机重做日志文件的新位置。这样就可以用新位置上的日志文件打开实例。
//===============================================================2004-2-28 12:59
控制文件的位置在实例的 i n i t . o r a 文件或 c o n f i g . o r a 文件中指定,通常是 c o n f i g . o r a 文件
包含此信息。若要移动控制文件,必须关闭实例,移动文件,编辑 c o n f i g . o r a 文件,然后再重新启动
该实例。
//===============================================================2004-3-1 16:46
oracle 的数据库文件由数据文件(.dbf)、控制文件(.ctl)、日志文件(.log)三种文件组成。所有的表空间
数据都是放在数据文件(.dbf)中的。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-2-29 22:51
高水位标志是段中已存储过数据的最大块数。如果在表中插入数千行记录,则此标志会不断增大;
如果删除记录,此标志却不减少。除了撤消并重新创建表外,这个标志只有在发出一个 t r u n c a t e 命令
或数据段被撤消又重新创建时,才会被重新设置。
//===============================================================2004-2-29 23:12
可以通过 alter cluster 命令的 deallocate unused 子句来重新分配簇中的空间。同样,可以用 alter index
命令中的 deallocate unused 子句来重新分配索引的空间。不过,如下节所述,索引还有一个选项—alter index
rebuild 命令,它使你能更灵活地管理索引空间的使用。
//===============================================================
第5章开发过程管理
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-1 11:44
C O N N E C T 角色不只给予用户能够在数据库中创建会话的权限。除了 C R E ATE SESSI0N 系统权
限外, C O N N E C T 角色还给予用户以下权限: A LTER SESSION、C R E ATE CLUSTER、C R E ATE
DATABASE LINK、C R E ATE SEQUENCE、C R E ATE SYNONYM、C R E AT ETA B L E 和 C R E ATE
VIEW。然而,用户不具有创建表和簇的能力(这些对象都会占用数据库空间),除非授予用户相应的表空
间定额,或被授予 R E S O U R C E 角色。
//===============================================================2004-3-1 11:46
权限只代表了你具有做这件事的资格,而能不能作还要看你的能力。就如上面你有建表的权限,但
是因为其它条件不满足(没有空间能力)也不能建表。
//===============================================================2004-3-1 13:18
R E S O U R C E 角色具有以下系统权限: C R E ATE CLUSTER 、C R E ATE INDEXTYPE、C R E
ATE OPERATO R、C R E ATE PROCEDURE、C R E ATE SEQUENCE、C R E ATE TA B L E、C R E ATE
TRIGGER 和 C R E ATE TYPE。具有 R E S O U R C E 角色的用户也被授予 U N L I M I T E DTA B L E S
PA C E 权限,因此这些用户可超越为他们定义的空间定额。应该把 R E S O U R C E 角色授予那些需要创
建进程和触发器等 P L / S Q L 对象的开发人员。如果开发人员使用了 Objects Option(对象选项),R E S O
U R C E 角色将给予他们 C R E ATE TYPE 权限,该权限允许他们创建和执行类型和方法。
//===============================================================2004-3-1 13:22
D B A 角色拥有带 with admin option 的所有系统权限,with admin option 意味着 D B A 可以授予其他
用户系统权限。
//===============================================================2004-3-1 13:52
注意连字符(-)是 S Q L * P l u s 中的一个连续符号,允许一个命令跨越多行。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-1 23:35
当分配空间时, O r a c l e 遵循下列内部规则:
1) Oracle 只分配整个块,而不分配块的部分。
2) Oracle 分配块组,通常是5块的倍数。
3) 根据表空间中的可用自由空间, O r a c l e 可分配更大或更小的块组。
//===============================================================2004-3-1 23:39
必须正确设置盘区的大小,而不管表中的盘区数量。盘区的大小真正影响性能。
//===============================================================2004-3-1 23:42
O r a c l e 以两种方法从表中读数据:通过 R o w I D(通常直接跟在一个索引访问后)和通过全表扫
描。如果通过 R o w I D 来读数据,那么表中的盘区数就不是读性能的一个因素。O r a c l e 将从其物理位
置(按 R o w I D)读取每一行并检索数据。
如果通过全表扫描读取数据,那么盘区的大小可能会影响性能。当通过全表扫描读取数据时,O r a c
l e 将每次读出多个块。每次读取的块数通过 i n i t . o r a 参数 D B _ F I L E _ M U LT I B L O C K _R E A D
_ C O U N T 来设置并受操作系统的 I / O 缓冲区大小的限制。例如,如果数据库的块大小是 4 K B,操作
系统的 I / O 缓冲区大小是 6 4 K B,那么在全表扫描时每次最多可读取 1 6 块。在这种情况下,把 D B _ F
I L E _ M U LT I B L O C K _ R E A D _ C O U N T 的值设置为大于 1 6 不会改变全表扫描的性能。
//===============================================================2004-3-1 23:45
因此,要避免为盘区大小付出性能代价,必须选择如下两种策略之一:
1) 创建明显大于 I / O 容量的盘区。如果盘区非常大,即使盘区的大小不是 I / O 缓冲区大小的
倍数,也只需要很少的附加读操作。
2) 创建其大小是操作系统的 I / O 缓冲区大小的倍数的盘区。
//===============================================================2004-3-1 23:50
当撤消一个段时,其盘区就被加回可用自由盘区的池中。必要时其他段可分配撤消的盘区。如果使
用一致的盘区大小, O r a c l e 就更有可能重新使用撤消的盘区,因而更有效地利用表空间中的空间。
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-5 6:34
O r a c l e 并不总是在主表外存储 L O B 数据。一般情况下,如果 L O B 数据不超过 4 K B 长,就不
在主表外存储 L O B 数据。
//===============================================================2004-3-5 6:42
当查询抽象数据类型的属性时,必须使用该表名的相关变量。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-7 12:32
当创建同义词时,O r a c l e 并不检查正为其创建同义词的对象的有效性。如果创建 synonym x for y,
Oracle 将不检查该“y”是否是有效对象名或有效对象类型。只有通过同义词访问该对象时,才检查该对象
的通过同义词访问的有效性。
//===============================================================2004-3-7 12:34
不能创建公共的数据类型,也不能创建数据类型的公共同义词。因此,需要引用数据类型的拥有者,
或者在每个能在数据库中创建表的帐户之下创建这个数据类型。这两者都不是数据类型管理问题的简单
解决办法。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-12 17:47
要撤消一个列,可使用 alter table 命令中的 set unused 子句或 d r o p 子句。不能撤消伪列、嵌套表中
的列或分区键列。
//===============================================================2004-3-12 17:49
如果撤消的列是主键的一部分或唯一约束,那么还必须使用 cascade constraints 子句作为 alter table 命
令的一部分。如果撤消一个属于主键的列,O r a c l e 就将同时撤消该列和该主键索引。
//===============================================================
第6章多数据库的监控
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-16 11:34
对于数据库的监控方式,必须考虑到它们特殊的结构和用途。监控的重点应当放在揭示系统执行中
的问题上,而不是放在跟踪问题的征兆上。
//===============================================================2004-3-16 11:37
监控的重点应当放在揭示系统执行中的问题上,而不是放在跟踪问题的征兆上。
扑灭宾馆中的一场火灾会引起重视灭火装置。但这并不意味着这个宾馆以后就不会发生火灾。要弄
清楚导致系统出现问题的症结;否则,只是看到问题的表面现象,而仍然留下潜在的祸因。
要避免这种 D B A 灭火模式,需要做好以下 4 点:
1) 对应用程序如何使用数据库要有定义完好的协议。
2) 一个结构完美的数据库。
3) 一套测定数据库状态的度量标准。
4) 进行测量与决定发展趋势的一个系统方法。
//===============================================================2004-3-16 11:40
不仅应当对表空间中当前可用的自由空间进行监控,还应对可用空间的变化趋势进行监控—现在的
可用自由空间比一星期前的可用空间是多还是少。必须能够确定当前空间分配的效率及对未来的预测。
//===============================================================2004-3-16 11:43
当临时段建立时,其存储参数不会因表空间的缺省存储参数的改变而改变。临时段随需要而自我扩
展,当操作完成或遇到错误时就自行丢弃。
//===============================================================2004-3-16 11:44
每一个发生在数据库内的事务都包含着回滚段。它们使数据库能在多事务处理之间保持读的一致性。
可用回滚段的数量和大小在数据库创建时由 D B A 确定,但以后不能修改。
//===============================================================2004-3-16 11:45
单独一个事务不能跨越多个回滚段。
//===============================================================2004-3-16 11:48
数据库中的每一个段都有一个允许的最大盘区数量。自 O r a c l e 7 . 3 起,可以规定段的最大盘区数
量不受限制。如果段的最大盘区数量设置为不受限制,则可以由数据库块的大小来决定盘区的最大数量。
对于一个 2 0 4 8 字节的块,段最多可达 1 2 1 个盘区;对 4 0 9 6 字节的块,盘区的最大数量为 2 4 9。
//===============================================================2004-3-16 11:50
若要将 pctincrease 为 0 的影响降至最低限度,可以在夜间运行一个脚本文件以合并表空间的自由空
间。
//===============================================================2004-3-16 11:51
如果表空间的 p c t i n c r e a s e 缺省值不是 0,O r a c l e 自动将相邻自由盘区合并为一个大盘区。但
是自由盘区可能被其他数据盘区物理地分开,阻碍它们与其他自由盘区合并。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-21 15:23
Oracle 数据字典中的值是最近一次对对象分析的值,如果要得到当前的状态,就需要对对象重新进
行分析
//===============================================================
第7章回滚段管理
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-22 1:14
S Q L 的 r o l l b a c k 命令使用户能撤消对数据库所做的事务。这种功能对任何 u p d a t e、i n s e r t
或者 d e l e t e 事务都有效;但对数据库对象的变动则无能为力(如 alter table 命令)。当选择其他用户正在
改变的数据时, O r a c l e 使用回滚段来展示变动前的数据。
//===============================================================2004-3-22 1:17
第一个回滚段被称为 S Y S T E M,它存储在 S Y S T E M 表空间中。接下来的回滚段通常也在另外
至少一个表空间中创建。
//===============================================================2004-3-22 1:19
回滚段条目(rollback segment entry)是“前”映像数据块的集合,含有被一个事务修改的数据行。每个回
滚段条目必须完整地包含在回滚段内。一个回滚段可以支持多个回滚段条目。
//===============================================================2004-3-22 1:25
数据库按照循环( r o u n d - r o b i n )方式,向产品回滚段分配回滚段条目。
//===============================================================2004-3-22 1:27
S Y S T E M 回滚段不会在 i n i t . o r a 文件中列出,并且 SYSTEM 回滚段不能被撤消;它总是同实
例能获得的其他回滚段一起被获取。
//===============================================================2004-3-22 1:30
可以用 set transaction 命令指定一个事务处理应使用的回滚段。但应在实施大的事务处理前使用这个
命令,以确保这个事务处理使用为它们特别创建的回滚段。
//===============================================================2004-3-22 1:35
一旦一个事务完成,它的数据不会从回滚段中删除。旧的回滚数据保留在回滚段中,以便对提交前
开始执行的事务和查询提供服务。
//===============================================================2004-3-22 1:45
可以对回滚段进行收缩。可以用 alter rollback segment 命令中的 s h r i n k 子句,将回滚段收缩到想要
的大小。若没有指定收缩尺寸,回滚段将收缩到其 o p t i m a l 值。但不能把回滚段收缩到小于两个盘区。
//===============================================================
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-23 1:02
关闭数据库将会复位 V $ R O L L S TAT 表中的统计值。
//===============================================================2004-3-23 1:25
高效管理回滚段的关键因素是使非激活、但正在被使用( I I U )的条目数据最少。
//===============================================================
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-25 1:52
O r a c l e 建议每个回滚段含 4 个事务。
//===============================================================2004-3-25 1:55
回滚段的 o p t i m a l 值必须适合事务量及管理事务所需的系统开销。这种设计也应当能在一个盘区
中处理大多数事务。
因此,回滚段中的事务数量应按盘区估计。每一个回滚段所需的盘区数量为:
每个回滚段的盘区数= 每盘区中的小事务数+ ( (长事务的覆盖数+1) ×平均长事务数)
//===============================================================2004-3-25 1:58
回滚段的 o p t i m a l 值及 o p t i m a l 存储参数值为:
optimal = (每回滚段最小数据盘区数+ 回滚段头盘区+ 未激活但正使用+ 自由空间盘区)×盘区尺寸
//===============================================================2004-3-25 2:11
当使用 O r a c l e 的 I m p o r t 实用程序时,它的缺省功能是为每个表的数据执行一次提交。要支持这
一点,就需要有与该数据表同尺寸的一个回滚段。
//===============================================================2004-3-25 2:12
数据装载事务必须指定给回滚段。可以使用 set transaction use rollback segment S E G M E N T S _ N A
M E;命令,或者除了只保留一个回滚段为激活状态外,使所有其他回滚段都变成非激活状态(在非
峰值期)。使用本章前面提到的 V $ R O L L S TAT 查询来测量数据装载事务的大小。
//===============================================================2004-3-25 2:17
若要为一个 O LT P 数据库配置回滚段,必须首先确定数据库中的并发用户数量。如果有一个数据库,
就可以查询 V $ L I C E N S E 视图的 S e s s i o n s _ H i g h w a t e r 列,查看最后一次启动数据库以来达
到的最大并发用户数量。
select sessions_highwater from v$license;
//===============================================================2004-3-25 2:27
以用户为中心的表设计不同于以理论为中心的表设计,它将产生一个能较好满足用户需求的系统。
设计选项包括将一个表分成几个表,也同样包括将几个表合并成一个表。重点应放在向用户提供一个能
按他们要求的格式访问数据的最直接路径。
//===============================================================
第8章数据库调整
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-26 0:59
通过 D B A _ S O U R C E 视图中的 Te x t (文本)列,可以查看一个数据库中所有过程的 S Q L 文本。
U S E R _ S O U R C E 视图将显示用户所拥有的过程。这些视图引用 S Y S . S O U R C E $表。由于这个
表是数据字典的一部分,所以过程代码就存储在 S Y S T E M 表空间中。因此,如果使用这些对象,就必
须确保给 S Y S T E M 表空间分配更多的空间—一般是它的两倍。
//===============================================================2004-3-26 1:01
在大多数 O r a c l e 表中,每个行都有与行相关的 R o w I D (行标志)。R o w I D 含有关于行的物理位
置信息(行的文件、文件中的数据块、数据块中的行)。O r a c l e 7 和 O r a c l e 8 中的 R o w I D 格式截然
不同。
//===============================================================
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-3-29 17:31
若要分析一个模式中的所有对象,可以使用 D B M S _ U T I L I T Y 软件包中的 A N A LY Z E _ S C
H E M A 过程。下面的例子中含有两个参数:模式名称和 a n a l y z e 选项( C O M P U T E 或 E S T I M AT
E ):
execute _SCHEMA('SCOTT','COMPUTE');
当执行上面例子中的命令时,将使用 a n a l y z e 命令的 compute statistics 选项对属于 A P P O W N E
R 模式的全部对象进行分析。
//===============================================================2004-3-29 17:34
可以对一个表的各个分区进行分析。例如,如果表 TA B 1 有一个 PA RT 1 分区,可以通过下列命令
来分析该分区:
analyze table TAB1 partition (PART1) compute statistics;
//===============================================================2004-3-29 17:45
段类型包括 TA B L E、I N D E X、C L U S T E R、R O L L B A C K、T E M P O R A RY、D E F E R
R E D R O L L B A C K 和 C A C H E。
//===============================================================2004-3-29 18:50
若启动 S M O N 进程合并这些盘区,就应将表空间的 p c t i n c r e a s e 值设为非零。在下面的例子中,
将 D E M O N D X 表空间的缺省存储参数 p c t i n c r e a s e 设为 1:
alter tablespace DEMONDX
default storage (pctincrease 1);
若要手工合并表空间的自由盘区,请使用 alter tablespace 命令的 c o a l e s c e 选项。
alter tablespace DEMONDX coalesce;
//===============================================================
/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-2 18:04
创建多个 D B W R 从进程可以解决多磁盘访问请求所造成的性能瓶颈问题。O r a c l e 建议至少创建
与磁盘数一样多的 D B W R 从进程。为一个实例创建的 D B W R 从进程数量,可以通过数据库 i n i t . o r
a 文件中的 D B W R _ I O _ S L AV E S 参数来设置。作为创建 D B W R 从进程的一种替代方案,可以创
建多个 D B W R 进程。
//===============================================================2004-4-2 18:18
传送数据库中数据的最快方法是将它从一个表移到另一个表,而不要脱离数据库到操作系统中。
当把数据从一个表传送到另一个表时,改善数据迁移的通用方法有 4 种:
1) 调整结构—删除索引和触发器。
2) 数据迁移期间停用约束条件。
3) 使用提示和选项来改善事务性能。
4) 隔离大型事务的回滚段。
禁止使用索引和触发器,可以解决大部分与表到表数据迁移工作相关的性能问题。
//===============================================================
第9章数据库安全与审计
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-5 2:12
数据库以加密的形式将口令存储在一个数据字典表中。
//===============================================================2004-4-5 2:23
由于没有指定定额,所以用户不能在数据库中创建对象。
//===============================================================2004-4-5 2:24
除用户名外,create user 命令中的全部参数都可以由 alter user 命令来更改。
//===============================================================2004-4-5 2:43
可以用 g r a n t 命令的 with grant option 子句把向其他用户授权的能力传递给被授予者。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-8 1:13
若要查看具有 S Y S D B A 或 S Y S O P E R 系统权限的用户,可以查询 V $ P W F I L E _ U S E R S。
如果用户拥有 S Y S D B A 权限, V $ P W F I L E _ U S E R S 在其 S y s D B A 列中将有一个 T R U E 值;
如果拥有 S Y S O P E R 权限,将在其 S y s O p e r 列中有一个 T R U E 值。
//===============================================================2004-4-8 1:18
在 O r a c l e 8 中,可以使用 S Q L * P l u s 的 p a s s w o r d 命令来改变用户的口令。p a s s w o r d 命
令将提示你输入一个旧口令、一个新口令和对新口令的确认。输入的口令值不在显示屏上显示。如下所
示,若用 S Q L * P l u s 改变自己的口令,可键入 p a s s w o r d 命令:
password
若要改变另一个用户的口令,可以使用其后跟有用户名的 password 命令。
password jane
//===============================================================2004-4-8 1:22
角色的口令在角色创建时通过 create role 命令设置。不一定非要给角色指定一个口令。如果指定了一
个口令,角色被用户启用时必须输入口令。
create role account_creator identified by helpdesk_only;
可以使用 alter role 命令来改变与角色相关的口令。同用户口令一样,角色也可以是 identified
externally,从而也可以执行主帐帐户名与角色名的连接。与用户帐户不同,角色可能没有口令(缺省)。可
以通过 not identified 子句从一个角色中删除口令,如下例所示:
alter role account_creator not identified;
这个命令执行后,A C C O U N T _ C R E ATO R 角色将不受口令保护。
//===============================================================2004-4-8 1:30
权限通过 g r a n t 命令创建,存于数据字典中。对表、视图、序列(以及它们的同义词)的访问,加上
执行过程、函数、软件包及类型的能力都可以授权给用户。表 9 - 4 列出了可以授予对象的权限。
表 9-4 允许的对象权限
权限 授予能力
S E L E C T 可查询对象
I N S E RT 可以把行插入对象中,该权限可授予对象的特定列
U P D AT E 可更新对象的行,该权限可授予对象的特定列
D E L E T E 可从对象中删除行
A LT E R 可修改对象
I N D E X 可以在表上创建索引
R E F E R E N C E S 可以创建引用表的外键
E X E C U T E 可以执行函数、软件包、过程、库或类型
R E A D 可访问目录
//===============================================================2004-4-8 20:45
可以使用表 9 - 5 中列出的数据字典视图来列出数据库中已授予的权限。也可以使用用户级视图。
表 9-5 与权限相关的数据字典视图
数据字典视图 内容
D B A _ R O L E S 角色名及其口令状态
D B A _ R O L E S _ P R I V S 已被授予角色的用户
D B A _ S Y S _ P R I V S 已被授予系统权限的用户
D B A _ TA B _ P R I V S 已被授予表中权限的用户
D B A _ C O L _ P R I V S 已被授予列中权限的用户
R O L E _ R O L E _ P R I V S 已被授给其他角色的角色
R O L E _ S Y S _ P R I V S 已被授给角色的系统权限
R O L E _ TA B _ P R I V S 已被授给角色的表权限
//===============================================================2004-4-9 1:10
U S E R _ R E S O U R C E _ L I M I T S 视图中没有“ D B A”类型,它严格地受用户当前会话的限制。
若要查看与各可用资源相关的开销,可以查询 R E S O U R C E _ C O S T 视图。数据库管理人员可以访
问 D B A _ P R O F I L E S 视图来查看所有环境文件的资源限制。D B A _ P R O F I L E S 的 R e s o u r c e
_ Ty p e 列表示资源环境文件是一个 PA S S W O R D 环境文件,还是一个 K E R N E L 环境文件。
除了这些视图外,还有两个视图。每个视图各有一个列,分别列出了当前会话中启用的权限和角色。
它们是:
S E S S I O N _ P R I V S P r i v i l e g e 列列出了会话中启用的所有系统权限,不论是直接
授予还是通过角色授予。
S E S S I O N _ R O L E S R o l e 列列出了当前会话启用的所有角色。
S S E S S I O N _ P R I V S 和 S E S S I O N _ R O L E S 对所有用户都是可用的。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-9 15:43
将一个不知道口令的用户变成另一个用户,进行操作,然后再变回来的标准步骤如下(前提你有 dba
权限):
1) 查询 D B A _ U S E R S,确定帐户的当前加密口令。
2) 之后,生成 alter user 命令,以便将加密的口令恢复为其当前值。
3) 将 alter user 命令保存进一个文件。
4) 改变用户的口令。
5) 访问用户帐户并执行测试。
6) 测试结束时,运行含有 alter user 命令的文件,以便将用户的加密口令恢复为其原来的值。
//===============================================================2004-4-9 15:57
如果用户的环境文件对口令有限制,则如下:
1) 检查用户的环境文件设置值。
2) 把用户分配给一个环境文件,该环境文件没有口令历史限制、没有口令验证函数,并有无限口令
重用次数。例如,环境文件创建命令可能是:
create profile temp_profile limit
password_verify_function null
password_reuse_time unlimited
password_reuse_max unlimited;
3) 查询 D B A _ U S E R S,确定帐户的当前加密口令及环境文件。
4) 之后,生成 alter user 命令,以便以后将加密的口令恢复为其当前值。
5) 将 alter user 命令保存进一个文件。
6) 改变用户口令。
7) 访问用户的帐户并进行测试。
8) 测试结束时,运行含有 alter user 命令的文件,以便将用户的加密口令和环境文件恢复为其原始值。
//===============================================================2004-4-9 17:28
每个连接数据库的企图都可被审计。开始审计登录企图的命令为:
audit session;
若只是审计成功或失败的连接企图,可使用下列命令之一:
audit session whenever successful;
audit session whenever not successful;
若要禁止会话审计,可使用 n o a u d i t 命令:
noaudit session;
//===============================================================
第10章优化备份和恢复过程
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-9 20:46
备份一个 O r a c l e 数据库有三种标准方式: E x p o r t (导出)、脱机备份( o ffline backup)和联机( A R
C H I V E L O G )备份(online backup)。导出方式是数据库的逻辑备份,其他两种备份方式都是物理文件备
份。
//===============================================================2004-4-9 20:52
已导出的数据不必导入到同一个数据库中,也不必导入到与生成导出转储文件相同的模式中。可以
使用导出转储文件来创建一个导出对象的复制集,其环境可以是不同的模式或独立的数据库。
//===============================================================2004-4-9 20:56
当数据库已经正常关闭(不包括由失败引起的关闭)时使用脱机备份。当数据库处于“o ff l i n e”时,要
备份下列文件:
. 所有数据文件。
. 所有控制文件。
. 所有联机重做日志。
. 文件(可选择)。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-10 11:42
假若是运行在 A R C H I V E L O G 方式下,数据库打开时就可以执行一个文件系统备份。联机备份
包括将每一个表空间设为备份状态,接着备份其数据文件,然后再将表空间恢复为正常状态。
注意使用 O r a c l e 提供的 Recovery Manager(RMAN)实用程序时,就不必将每个表空间都置于备份
状态。该实用程序将自动把表空间带进或带出备份状态。
//===============================================================2004-4-10 11:56
E x p o r t 可以通过 O E M 或 R M A N (或者通过命令文件)交互式运行。表 1 0 - 1 列出了可以为 E x p
o r t 指定的运行期选项。
表 10-1 Export 选项
关键字 描述
u s e r i d 执行导出的帐户的用户名/口令,如果这是 e x p 命令后的第一个
参数,则关键字 u s e r i d 就不必指定
b u ff e r 用于获取数据行的缓冲区尺寸,缺省值随系统而定,通常设为
一个高值( > 6 4 0 0 0 )
f i l e 导出转储文件的名字
f i l e s i z e 一个导出转储文件的最大尺寸。如果 f i l e 条目中列出了多个文
件,将根据 f i l e s i z e 设置值导出这些文件
c o m p r e s s 一个 Y / N 标志,用于指定导出是否应把碎片段压缩成单个盘区。
这个标志影响将存储到导出文件中的 s t o r a g e 子句
g r a n t s 一个 Y / N 标志,用于指定数据库对象的权限是否导出
i n d e x e s 一个 Y / N 标志,用于指示表上的索引是否导出
r o w s 一个 Y / N 标志,用于指示行是否导出。如果设置为 N,在导出
文件中将只创建数据库对象的 D D L
c o n s t r a i n t s 一个 Y / N 标志,用于指示表上的约束条件是否导出。
f u l l 若设为 Y,执行 F u l l 数据库导出
o w n e r 导出数据库帐户的清单;可以执行这些账户的 U s e r 导出
t a b l e s 导出表的清单,可以执行这些表的 Ta b l e 导出
r e c o r d l e n g t h 导出转储文件记录的长度,以字节为单位。除非是在不同的操
作系统间转换导出文件,否则就使用缺省值
i n c t y p e 要执行的导出类型(允许值为 C O M P L E T E (缺省) 、C U M U
L AT I V E 和 I N C R E M E N TA L ),导出类型将在下几节描述
d i r e c t 一个 Y / N 标志,用于指示是否执行 D i r e c t 导出。D i r e c t
导出在导出期间绕过缓冲区,从而大大提高导出处理的效率
r e c o r d 用于 I n c r e m e n t a l 导出,这个 Y / N 标志指示一个记录是否
存储在记录导出的数据字典表中
p a r f i l e 传递给 E x p o r t 的一个参数文件名。这个文件可以包含这里列
出的全部参数条目
s t a t i s t i c s 这个参数指示导出对象的 a n a l y z e 命令是否应写到导出转储
文件上。其有效值是 C O M P U T E、E S T I M AT E ( 缺省)和 N。在较早的 O r a c l e 版本中,这个
参数叫作 A N A LY Z E
c o n s i s t e n t 一个 Y / N 标志,用于指示是否应保留全部导出对象的读一致版
本。在 E x p o r t 处理期间,当相关的表被用户修改时需要这个标志
l o g 一个要写导出日志的文件名
f e e d b a c k 表导出时显示进度的行数。缺省值是 0,所以在一个表全部导出
前没有反馈显示
p o i n t _ i n _ t i m e _ r e c o v e r 一个 Y / N 标志,用于向 O r a c l e 指示,是否正在导出用
于表空间时间点恢复的元数据。
r e c o v e r _ t a b l e s p a c e s 在表空间时间点恢复期间,其元数据应被导出的表空间
q u e r y 导出时用于每个表的 w h e r e 子句
t r a n s p o r t _ t a b l e s p a c e 如果正在使用 O r a c l e 8 i 的可移动表空间选项,就设置成 Y。
和关键字 t a b l e s p a c e 一起使用
t a b l e s p a c e s 移动一个表空间时应导出其元数据的表空间
//===============================================================2004-4-10 12:02
可以通过下列命令联机显示 exp 参数的说明:
exp help=Y
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-11 22:22
若要通过 E x p o r t / I m p o r t 把对象从一个用户转换到另一个用户,可对对象拥有者执行一个 U s e
r 导出操作。在导入操作期间,将拥有者指定为 F R O M U S E R,将拥有对象的帐户指定为 TO U S E R。
//===============================================================2004-4-11 22:22
当导出表时,O r a c l e 按用户在数据库中创建的顺序导出用户。用户的表是按字母顺序导出的。
//===============================================================2004-4-11 22:26
在进行导入操作时使用 I N D E X F I L E 选项,可以读取而不是导入导出转储文件,其建表和索引脚
本文件会被写入一个输出文件中。可以编辑这个文件,以修改这里列出的表和索引的 t a b l e s p a c e 和 s
t o r a g e 参数。然后可以通过 S Q L * P l u s 运行修改后的文件,以便在导入数据前预建所有对象或只创
建指定的对象(如索引)。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-13 11:43
下面列举进入 A R C H I V E L O G 方式的步骤(9I 以下,如是 9I 以上,请在 sqlplus 中进行操作):
svrmgrl
svrmgrl>connect internal as sysdba
svrmgrl>startup mount cc1;
svrmgrl>alter database archivelog;
svrmgrl>archive log start;
svrmgrl>alter database open;
//===============================================================2004-4-13 11:47
下面的命令将从 Server Manager 中显示当前数据库的 A R C H I V E L O G 状态。
archive log list;
//===============================================================2004-4-13 11:49
若要使数据库返回 N O A R C H I V E L O G 方式,可使用下列命令(9I 以下,如是 9I 以上,请在
sqlplus 中进行操作):
svrmgrl
svrmgrl>connect internal as sysdba
svrmgrl>startup mount cc1;
svrmgrl>alter database noarchivelog;
svrmgrl>alter database open;
//===============================================================2004-4-13 13:18
注意在未备份归档的重做日志文件前不要将其删除。在恢复时没有任何方法可以跳过一个丢失的归
档重做日志文件。
//===============================================================2004-4-13 13:38
热备份的命令文件有三个部分:
1) 逐个表空间地备份数据文件,包括
a) 设置表空间为备份状态。
b) 备份表空间的数据文件。
c) 将表空间恢复到正常状态。
2) 备份归档重做日志文件,包括:
a) 记录归档重做日志目标目录中的文件。
b) 备份归档重做日志文件,然后(有选择地)删除或压缩它们。
3) 通过 alter database backup controlfile 命令备份控制文件。
注意在进行第二步期间,当记录现有归档重做日志文件的名字时,暂停归档以防止新的归档重做日
志文件被记录进来。如果在这个操作期间不暂停归档,就会删除没记录的文件(第二步 b )。如果不能恢复
这个文件,恢复时就无法重建已删除的归档重做日志文件的内容,也无法跳过这一步。所以删除这些文
件时,要谨慎行事。
//===============================================================2004-4-13 13:50
归档重做日志备份过程只是整个热备份进程的一个部分,有 5 步操作:
1) 暂停归档处理。
2) 记录归档重做日志目标目录中的文件。
3) 重新启动归档处理。
4) 备份归档重做日志文件。
5) 从目标目录中删除这些文件。
//===============================================================2004-4-13 13:53
可通过 archive log stop 命令暂停 A R C H 进程。一旦完成工作(如生成归档日志目标区中的文件清
单),就可以通过 archive log start 命令重新启动 A R C H 进程。
//===============================================================2004-4-13 14:07
无论如何选择主备份方式,最终的实现应包括导出和物理备份。需要这些方式是因为它们适用于数
据库的不同方面:导出方式适用于对数据库进行逻辑备份,物理备份适用于对数据库进行物理备份。这
些方式的三种集成样本见表 1 0 - 7。
表 10-7 数据库备份方式的集成样本
数据库类型 联机备份 脱机备份 导出
所有尺寸,事务处理频繁 每晚 每周 每周
小型,多数只读 不做 每周 每晚
大型,多数只读 不做 每周 每周
如表 1 0 - 7 所示,一个好的数据库备份策略,是根据数据库的使用特性对逻辑备份和物理备份的有
效集成。
//===============================================================2004-4-13 14:13
在大多数服务器中,磁带失效的平均间隔时间( M B T F )大约为 3~4 年。磁盘错误大多数是常见的
硬件故障引起的。
三种最常见的数据库故障情形:实例失败、磁盘失败和用户失败。
//===============================================================2004-4-13 14:16
当一个实例失败后数据库启动时, O r a c l e 检查数据文件和联机重做日志文件,并把所有文件同步
到同一个时间点上。即使数据库未运行在 A R C H I V E L O G 方式中, O r a c l e 也将执行这种同步。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-14 7:19
在一个全(叫作 0 级)数据文件备份中,数据文件中用过的所有数据块都要进行备份。在一个累积(叫
做 1 级)数据文件备份中,上次数据文件全备份后用过的所有数据块都要进行备份,而在增量( 2 级)数据
文件备份中,仅备份那些在上一次累积备份或全备份后发生变化的数据块。
//===============================================================2004-4-14 7:57
若要创建恢复类别,请执行下述几步操作:
1) 创建一个称作 R C V C AT 的表空间来安放恢复类别。
2) 使用 Security Manager(安全管理器)创建一个拥有恢复类别的用户。
3) 使用 R M A N 行方式命令创建恢复类别。
4) 注册恢复类别。
//===============================================================2004-4-14 8:40
表中释放的空间可以重用,但索引中释放的空间不能再用。因此,频繁从中删除行的表应定期重建
其索引,以避免在索引中造成空间碎片。
//===============================================================2004-4-14 8:41
对于数据输入及特制报表,大多数软件包都包括一个联机用户组件;对于大型数据处理操作,则包
括一个批处理组件。联机用户需要足够数量的回滚段来支持其生成的大量并发事务。批处理需要足够大
的回滚段来支持最大的批处理事务。
//===============================================================
第11章管理Oracle Financials和其他软件包及实用程序
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-14 19:58
对于任何频繁执行删除/插入事务的表,都要把 p c t u s e d 参数设置为一个高值( 7 0 或更高)。
//===============================================================2004-4-14 20:09
每个数据库都有两组包要驻留:一组是每个数据库都要用的内核,另一组是应用程序特定的。驻留
的软件包内核组一般包括 S Y S 拥有的包 S TA N D A R D、D B M S _ S Q L、D B M S_U T I L I T Y 和
D I U T I L。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-15 7:17
数据库建起来后就不能改变块大小。要想改变它,就只能彻底重建数据库及其所有数据文件(通过当
前数据的导出/导入)。
//===============================================================2004-4-15 7:37
由于事务不能跨回滚段,必须有一个足够大的回滚段来处理一个事务。
//===============================================================
第12章大型数据库管理
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-15 8:32
不再用某个指定的容量来定义“大型”,而是依据其恢复时间来定义:如果不能在 1 8 小时内从全联机
备份中完全恢复一个数据库,这就是一个大型数据库。这个定义使得“大型”数据库的容量随操作系统及硬
件性能的改进而增加。
//===============================================================2004-4-16 11:30
将一个表的数据分到多个表中叫作划分表。被划分的表叫做分区表,其各部分叫作分区。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-17 7:31
对一个表进行分区时,应将这些分区存储在不同的表空间中。用表空间将它们分开存储使你能控制
其物理存储位置并避免分区间的冲突。
//===============================================================2004-4-17 7:35
注意不能将对象表或使用 L O B 数据类型的表进行划分。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-18 13:52
为一个表重新设置高水位标志的方法有两种:删除并重建表或者截断表。
//===============================================================2004-4-18 14:19
对于一个大型数据库, System Global Area(SGA)的数据块缓冲区部分大约为数据库总容量的 2 %,
对于一个 1 0 0 G B 的数据库来说,其 S G A 为 2 G B。一个足够大的 S G A 意指数据库运行在能够支持
大型内存区域管理的主机和操作系统上。
//===============================================================2004-4-18 14:20
创建数据库时,应将数据块大小设置为操作系统上 O r a c l e 所支持的最大值。数据块容量越大,数
据的存储效率就越高。当管理一个小型数据库时,使用较大的数据块容量所带来的存储效率及数据访问
性能的改进是极为明显的。管理大型数据库时,存储效率及数据访问性能的改善是实质性的。对数据块
的容量加倍后,大多数批量操作都可以提高 4 0 %的效率。
//===============================================================2004-4-18 14:27
对于超大型表,其调整方法要集中在特殊的索引技术和对索引的可选择性上。
//===============================================================
第13章SQL*Net V2和Net8
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-18 16:57
在同一个模式中不能有两个同名并同类型的对象。视图和表虽然类型不同但也不能同名。
//===============================================================2004-4-19 0:02
网络上的每一个数据库服务器都必须包含一个 l i s t e n e r. o r a 文件,该文件列出机器中所有监听进
程的名字和地址以及它们所支持的实例。监听程序进程接收来自 SQL*Net V2 和 N e t 8 客户机的连接。
//===============================================================
第14章UNIX上的Oracle联网技术
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-19 18:46
监听程序进程由 Listener Control Utility(监听程序控制实用程序)控制,通过 lsnrctl 命令来执行。
lsnrclt start
该命令将启动缺省的监听程序(命名为 LISTENER)。如果想启动另一个监听程序,则可以在 lsnrctl
命令中包括该监听程序的名称作为第二个参数。
//===============================================================2004-4-19 18:51
启动监听程序之后,通过使用 Listener Control Utility 的 status 选项可以检查它是否正在运行。下列命
令可用来进行这种检查:
lsnrclt status
//===============================================================2004-4-19 19:14
可以使用 Listener Control Utility 来启动、停止和修改服务器上的监听程序进程,其命令选项列于表
14-2。每个命令都可能有一个值,除 set password 命令外,这个值将是监听程序名。如果没指定监听程序
名,就将使用缺省值(LISTENER)。一旦进入 lsnrctl,就可通过 set current_listener 命令来改变正被修改
的监听程序。
表 14-2 Listener Control Utility 命令
命令 描述
CHANGE_PASSWORD 给给监听程序设置新口令,系统会提示输入监听程序的旧口令
DBSNMP_START 给启动服务器上数据库的 D B S N M P 子代理
DBSNMP_STATUS 给提供 D B S N M P 子代理的状态信息
DBSNMP_STOP 给停止服务器上的 D B S N M P 子代理
EXIT 给退出 lsnrctl
HELP 给显示 lsnrctl 命令选项的列表,也可以通过 help set 和 help show 命
令查看附加选项
QUIT 给退出 l s n r c t l
RELOAD 给允许在启动监听程序之后修改该监听程序。它强制 SQL * Met
读取并使用最新的 l i s t e n e r. o r a 文件
SAVE_CONFIG 给 Net8 中的新命令。创建现有的 文件的备份,然后用已
由 lisnrctl 更改的参数来更新 l i s t e n e r. o r a 文件
SERV ICES 给显示可用服务及其连接历史。它也列出是否为远程 D B A 或自
动注册访问而启动每个服务
SET 给设置参数值。这些选项是:
给 connet_timeout :以秒为单位,监听程序启动之后等待合法连
接请求的时间
给 current_listener:改变其参数正被设置或显示的监听程序进程
给 log_directory:监听程序日志文件的目录
给 log_file :监听程序日志文件的名称
给 log_status:日志记录是 O N 还是 O F F
给 password:监听程序口令
给 save_config_on_stop:在 N e t 8 中新引入。当退出 lsnrctl 时把
配置
变化保存到 文件
给 startup_waittime:监听程序在响应 lsnrctl start 命令之前的休眠
秒数
给 trc_directory:监听程序跟踪文件的目录
给 trc_file :监听程序跟踪文件的名称
给 trc_level :跟踪级( ADMIN、USER、SUPPORT 或 OFF)。参
见 lsnrctl trace
SHOW 给显示当前参数设置。这些选项与除 p a s s w o r d 命令外的 s e
t 选项一样
SPAWN 给产生一个以 l i s t e n e r. o r a 文件中的别名运行的程序
START 给启动监听程序
STATUS 给提供有关监听程序的状态信息,包括它的启动时间、参数文
件 名 、 日 志 文 件 和 它 支 持 的 服 务 。 该 命 令 可 用 来 查 询 远 程 服 务 器 上 的 监 听
程序的状态
STOP 给停止监听程序
TRACE 给把监听程序的跟踪级设置为下列4种选择之一:
给 OFF
给 USER(有限跟踪)
给 ADMIN(高级跟踪)
给 SUPPORT ( O r a c l e 支持)
VERSION 给显示监听程序、T N S 和协议适配器的版本信息
注意 lsnrctl 的新选项会随着 N e t 8 的每一个新版本而不断引入。
//===============================================================
第15章Windows NT上的联网技术
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-19 19:54
当操作 N T 系统上的 Oracle 时,请记住 Oracle 使用一个具有多线程的单进程。
//===============================================================
虽然 Oracle 进程的各个线程名不能从操作系统(Task Manager 或 Services 窗口)中看到,但通过下
列查询可以从 SQL*Plus 获得:
select bkpr, spid,
from v$bgprocess b,v$session s,v$process p
where =(+)
and =;
注意这个列表不显示监听程序线程和调度程序线程。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-20 19:30
NT 机器中的 Net8 监听程序是一种服务,通常当引导机器时,就自动启动该服务。有三种不同的方
法可手工启动监听程序:
1) 从 Services 窗口中选择 Oracle<oracle_home>TNSListener 选项并选中 Start 按钮。
2) 从 Start|Programs 菜单中选择 DOSwindow 选项。在 DOS 窗口发出命令:
lsnrctl start<listener_name> (缺省为 LISTENER)
3) 可以创建一个.bat 文件并在该文件中发出命令:
net start Oracle<oracle_home>TNSListener
一旦启动 Net8 监听程序,它就开始监听来自网络上客户机的连接请求。一旦接收请求,Net8 就负责
进行客户机和数据库之间的连接。
//===============================================================2004-4-20 19:35
一旦连接被从监听程序传送到线程,就完成了监听程序的处理,并且在监听程序和该特定客户机的
连接之间不再有进一步的交互。如果由于某种原因必须关闭和重新启动监听程序,那么当前的客户机到
数据库的连接不受这些动作的影响。
//===============================================================
第16章分布式数据库管理
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-21 6:57
要查询远程数据库,必须创建一个数据库链接。
//===============================================================2004-4-21 7:00
注意数据库链接不能用于从 LONG 数据类型的列中返回值。
//===============================================================2004-4-21 7:03
实现远程数据操作,需要使用 Two-Phase Commit(2PC,两阶段提交)—这也是 O r a c l e 分布式数据库
的功能本质。2 P C 可以把几个节点间的事务组看作是一个单元;或者是所有事务都提交,或者是它们都
回滚。
//===============================================================2004-4-21 7:06
注意不能用快照复制使用 L O N G、LONG RAW、B F I L E 或抽象数据库类型的数据。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-23 3:11
如果 F Q O N 中的任一部分—如用户名—被嵌入数据库链接中,那么对 F Q O N 中该部分的改变都
需要撤消数据库链接并重新创建。
//===============================================================2004-4-23 3:13
若要创建私有数据库链接,则必须登录到将要拥有该链接的数据库帐户。
//===============================================================2004-4-23 3:18
注意如果使用触发器进行数据库复制,则主数据库中事务处理成功与否依赖于远程事务处理是否成
功。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-24 9:49
注意快照查询不能引用用户 SYS 所拥有的表或视图。
//===============================================================2004-4-24 9:57
使用刷新组是解决快照引用完整性问题的第四个方案。可以通过 DBMS_REFRESH 软件包来实现刷
新组的所有操作。
注意属于刷新组的快照不必属于相同的模式,但它们都应当存储在同一个数据库中。
//===============================================================2004-4-24 10:00
如果刷新组要包含一个已属于其他刷新组的快照(例如,把一个旧刷新组中的快照转移到新创建的刷
新组中),则必须将 lax 参数设置为 TRUE。一个快照一次只能属于一个刷新组。
//===============================================================2004-4-24 10:03
注意对快照组的刷新操作可能比类似的快照刷新操作要长。快照组刷新还可能需要较大的回滚段空
间,以便在刷新时维持数据的一致性。
//===============================================================2004-4-24 10:14
对于自动快照刷新,则必须通知 Oracle 创建 S N P 后台进程,由这些后台进程执行快照刷新。SNP
后台进程的数量由 参数 JOB_QUEUE_PROCESSES 来确定。如果不为这个参数设置一个值,则缺
省为 0 且不会出现自动刷新。除非有许多快照需要同时刷新,否则一般只需要一个这样的后台进程(SNP0)。
不过,可以设置多达 36 个 SNP 进程。
SNPn 进 程 的 “ 唤 醒 调 用 ” 之 间 的 时 间 间 隔 ( 以 秒 为 单 位 ) , 由 参 数 文 件 中 的
JOB_QUEUE_INTERVAL 参数进行设定。缺省时间间隔为 6 0 秒。
//===============================================================2004-4-24 10:23
可以通过 DBA_SNAPSHOT_LOGS 数据字典视图来查询快照日志的信息。这个视图列出了快照日志
的拥有者、主表、快照日志表和使用的触发器。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-25 10:37
注意除非启动前把实例的 文件中的 DISTRIBUTED_TRANSACTIONS 参数设置为非零值,否
则 RECO 后台进程就不会启动。这个参数应设置成并发分布式事务的预期最大数。
//===============================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//===============================================================2004-4-29 14:00
因此是刷新的频率而不是其大小决定哪个快照类型对用户有更好的性能。
//===============================================================