2006 年 04 月 11 日, 星期二

读书:Oracle 9i Database Concepts:第二章:Data Blocks, Extents, and Segments

一直想认真的地毯式读厂家文档,总是找到好多借口耽误计划.今特在此发帖督促自己.期望可2-3天读一章,并把翻译记录在此.

希望:
1)翻译过程中,因个人水平有限,错误肯定是有的,一旦有兄弟发现错误或疑问,务必请跟贴帮我纠正,大家学习,共同进步。
2)翻译过程中,我自己对很多问题有疑问,也会一起帖出来,有知道的兄弟,请务必帮助我一把,把你知道的跟帖解释出来.

================================================
本章原文地址:
http://www.oracle.com.cn/onlined ... 4/c03block.htm#2528

第二章:Data Blocks, Extents, and Segments
本章描述了Oracle server的逻辑存储结构的特性和他们之间的关系,包括以下内容:
 data blocks,extents,segments介绍
 data blocks overview
 extents overview
 segments overview


1.1data blocks,extents,segments介绍Oracle为database里所有的data分配逻辑空间,分配的单位是data blocks,extents,segments。
下图描绘了他们之间的关系:


screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border="0" />

Oracle以data blocks为最小粒度单位存储data,每个data block对应了磁盘上固定byte大小的物理database空间。data blocks也叫logical blocks,oracle blocks,或者叫pages.
下一粒度的逻辑database空间是extent,一个extent是为存储指定类型的信息而分配的固定个数且连续的data blocks。
在extent之上的逻辑database空间是segment,一个segment是一组extent,每个segment的extent,都是为了存储特定的数据结构而分配的,这些同一个segment包含的extent,都存储在同一个tablespace里,在一个segment所存储的tablespace里,segment可以包含来自tablespace里多于一个datafile的extent,也就是说,segment可以跨datafiles,但同时,每个extent只能在一个datafile里存储数据,即extent不能跨datafile。

Oracle为segment分配空间是以extent为单位的,当segment现有的extents都存储满了时,如果还需要存储空间,Oracle就会为这个segment分配一个新的extent,这些segment的extents,他们在磁盘上可以是连续的,也可以不是连续的。

提示:
Oracle公司推荐使用自动管理来管理空闲空间,参考本章“Free Space Management”



###################################################
#
# 1.2 data block概述
#
###################################################

Oracle管理数据库的datafiles的存储空间是以data blocks为单位的,Oracle data block是Oracle可以使用和分配的最小存储单位,而在操作系统级,物理的,所有的数据都是以bytes为单位存储的。每个操作系统都有自己的block size。Oracle请求数据的时候,是从Oracle data blocks(可能是多种块大小的data blocks),而不是从操作系统的blocks请求数据。

标准Oracle data block的size是由初始化参数DB_BLOCK_SIZE指定的,另外,你可以再指定四种非标准oracle data block的size。oracle data block的size,应该是操作系统block size的整数倍以最大限度的避免不必要的I/O。

不管Oracle data block包含的是table,index或clustered数据,他们的格式是很相似的。如下图:

screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border="0" />

Header(Common and Variable)
header部分包含了如block address,segment类型等一般的block信息。
Table Directory
这部分包含了在这个block里的table的rows的有关信息。
Row Directory
这部分包含了在这个block里实际的rows的有关信息,包括在本block的row data area的各个row片段的address。
当在block的overhead为row directory分配空间后,当本block的row被删除时,这部分空间不会被回收。如果一个当前是空的block,一次被插入50 rows,那么会在header为row directory分配100bytes的空间,Oracle仅仅只在新的rows被插入到这个block时,才会重新利用这部分空间。
Overhead
data block header,table directory,row directory一起叫做overhead,一些block的overhead的size四固定大小的,所有的block的overhead是不一定大小的,平均来说,固定部分和可变部分一共在84bytes到107bytes之间。
Row Data
这部分包含了table或index的data.rows是可以跨越block的(参考:行链接和行迁移)。
Free Space
free space是为插入新rows和给rows做update时所需要更多空间所分配的,比如一个现在为null的被update为非null值。
Whether issued insertions actually occur in a given data block is a function of current free space in that data block and the value of the space management parameter PCTFREE.

为data segment或index segment分配的data blocks,在free space部分同时也记录了transaction的条目。为了每个insert,update,delete,select for update语句可以访问block里的一条或更多条row,在一个block里需要有一个transaction条目。这些为transaction条目分配的空间依赖于操作系统,在大多数操作系统上,大约需要23bytes。

1.2.1 free space management
free space可以自动管理或手工管理。
free space可以在segment内部自动管理,自动管理使用bitmaps来跟踪segment的free/used空间,和free list相反的,自动管理可以得到以下好处:
- 容易使用
- 更好的利用空间,特别是那些rows size变化很大的object。
- 并发访问时,具有更好的性能
- 在多instance环境能有好的利用空间,得到更好的性能
在创建local manage tablespace时可以指定segment-space自动管理,这个自动管理特性将应用在随后在这个tablespace上创建的segments.

1.2.2 availability and compression of free space in a data block
只有两种类型的SQL语句会增加一个或多个block的free space,他们是delete和update语句(把一个大值update成一个小值),这些释放出来的空间,对随后发布符合下列条件的insert语句是可用的:
- 如果insert语句和释放空间的delete或update语句在同一个transaction,并且仅随释放空间的语句后执行,那么这个insert语句可以使用刚刚被释放的空间。
- 如果insert语句和释放free space的语句不在一个事务(比如是另外一个用户释放的空间),那么这个insert语句只有在释放空间的语句执行commit以后并且只有在需要这些空间时,才可以使用这些变为可用的空间。

data block里的free space被释放后不一定在main area是连续的。Oracle只在同时满足以下两种情况下才合并(coalesces)free space:
1)insert或update语句尝试去使用一个有足够free space来存储一条新的row片段的一个block。
2)free space是被分段的,以致row piece不能被在这个block里插入到连续的区域。
Oracle只在以上两种情况下合并free space,是为了降低对database性能的影响。


1.2.3 row chaining and migrating
在两种情况下,一个table的一条row的data可能因为太大,以致不能放一个ザ赖膁ata block。
第一种情况:一条row太大了,在row第一次插入时,一个data block就装不了,Oracle就把这条row的data链接存储在为这个segment分配的多个block里。row chaining 经常发生在row太大时,比如包含的有LONG或LONG RAW类型的字段的row,在这种情况一般是无法避免row chaining的。
第二种情况:原来被存储在一个data block里的一条row,因为update后,导致整个row长度变大,并且data block的free space已经用完了,这种情况,Oracle就会把整条row给迁移到一个新的data block,以保证全部的row可以在一个新的block里存储完。
(疑问:是只迁移变大的row,还是块里所有的row都被迁移?应该是只迁移变大了的row)

Oracle在原来的block里保留被迁移的row的信息来指向包含刚被迁移进来新row的block,这样row的rowid就不会被改变了。
当一条row发生chained或migrated时,与这条row有关的I/O性能就会降低,因为Oracle必须扫描多余一个data block来获取这条row的信息。

提示:
在第十章详细讲述了“row format and size”和“rowids of row pieces”
在第十二章详细讲了“physical rowids”

1.2.4 pctfree,pctused,and row chaining
在手工管理表空间,有pctfree和pctused两个space管理参数,让我们可以在具体的segment上控制为insert和update保留的free space的利用。当create或alert一个table,cluster,index时,我们都可以指定pctfree参数。

关于PCTFREE和PCTUSED更多的信息可以参考Appendix B, "Information on Deprecated Features"

昨天还在演大唐双龙,不知道啥时候才演完,还是抵不住诱惑啊...家有9凤也很好看:(


###################################################
#
# 1.3 extents overview
#
###################################################

一个extent是由连续的data block组成的database逻辑空间单位,一个或多个extent组成一个segment。当一个segment现有的空间用满时,Oracle就会为这个segment分配一个新的extent。

1.3.1 when extents are allocated
在创建一个新的table时,Oracle为这个table's data segment分配一片连续的data block组成初始的extent,即使没有row被插入到这个表里,这个初始extent里的data blocks也为这个table's row保留着。当初始的extent因存储数据而被用满了时,并且为了存储更多的row data需要更多space的时候,Oracle自动为这个segment分配一个incremental extent。一个增加的extent和紧接着在它前面分配给这个segment的extent一样大或有更大的size。
为了维护,Oracle在每个segment的header block里记录了segment里包含的extent的directory信息。(这里讨论的是串行执行的情况,一个server process完成解析和执行一个SQL语句;并行执行的allocate extent有些不一样)

1.3.2 Determine the Number and Size of Extents
在每个segment里,都定义了extents的存储参数。这些存储参数适用于所有类型的segment定义。这些参数控制了Oracle是如何为一个给定的segment分配空闲数据库空间的。比如,你可以决定有多少空间被初始化来为一个table's data segment做存储的保留区域,或者你可以在CREATE TABLE语句的存储子句里来限制有多少个extents可以被分配给这个table。如果你没有给table指定存储参数,它们就会使用tablespace的default存储参数。

在oracle 8i以前,所有的tablespace都是字典管理表空间,字典管理表空间依赖字典表来跟踪空间的利用。从oracle 8i开始,你就可以创建locally managed tablespaces了,本地管理表空间使用bitmaps(代替字典表)来跟踪used/free空间。因为本地管理表空间有更好的性能和管理更容易,缺省下,在没有明确指定extent的管理方法时,非SYSTEM的永久表空间都创建为本地管理表空间。

本地管理表空间(本地extents管理),有两种管理方法,uniform固定extent sizes或由系统自动确定extent size变化。在创建表空间时,UNIFOR或AUTOALLOCATE(系统自动管理)子句指定空间分配的类型。
- 系统自动管理extents,你可以指定初始extent的大小,并且由Oracle决定后续的extents的最佳大小,最小的extents大小是64KB。缺省情况下的永久表空间都是这样的。
- uniform管理extents,你可以指定一个extent size或使用缺省的size(缺省为1M)。临时表空间就是本地管理的,并且只使用uniform管理extents。

NEXT,PCTINCREASE,MINEXTENTS,MAXEXTENTS,DEFAULT STORAGE这些存储参数对于extents为本地管理的表空间是无效的。

可参考第三章“Managing Space in Tablespaces”。

1.3.3 How Extents Are Allocated
依赖于表空间是本地管理还是字典管理的,Oracle使用不同的方法来分配extents。
对于本地管理表空间,Oracle为了寻找空闲空间来分配给一个新的extent,首先在tablespace里确定一个候选的datafile,然后为需要的临近的free blocks搜索datafile's bitmap,如果这个datafile没有足够的临近的空闲空间,那么就会在其他datafile里搜索。

提示:Oracle公司强烈推荐使用本地管理表空间。
参考Appendix B, "Information on Deprecated Features" for information on allocating extents in dictionary managed tables。

1.3.4 When Extents Are Deallocated
通常,segment的extent是不会回收给tablespace的,除非你drop存储数据在这个segment上的schema object(使用DROP TABLE或DROP CLUSTER语句)。除此外可以使用以下方法:
- table或cluster的所有者,或具有DELETE ANY privilege权限的用户,可以使用TRUNCATE......DROP STORAGE语句来truncate表或cluster。
- DBA可以使用下列SQL语句来回收没有使用的extents。
ALTER TABLE table_name DEALLOCATE UNUSED [keep 10 k];
- 如果rollback segment被指定了一个优化的大小,Oracle就会周期性的回收一个rollback segment里的一个或多个extents。

当extents被释放后,如果是本地管理表空间,Oracle就修改datafile里的bitmap,如果是字典管理表空间,Oracle就update数据字典,来反映回收的extents为可用的空间,所有在这个被释放的extents里的数据都变的不可用。

1.3.4.1 Extents in Nonclustered Tables
当一个nonclustered table存在或直到你truncate这个table以前,为这个table的data segment分配的任何data block都都为这个table保留着。如果data block有足够的空间,Oracle就可以插入新的rows。即使你从一个table删除了所有的rows,Oracle也不会在这个tablespace里回收这个table的data block给其他object使用。

当你drop一个nonclustered table后,当其他extents需要更free space时,因为drop而释放的空间可以被回收利用,Oracle会为这个tablespace回收这个table的data segment和index segment的所有extents,在这个表空间里,Oracle会使这些extents对于其他schema objects来说是可用的。

在字典管理表空间里,当一个segment请求的extent大于当前可用的extents,Oracle会确认并且合并这些连续的被回收的extents来组合成一个大的extent,这个工作叫做coalescing extents。但在本地管理表空间里,coalescing extents就没有必要了,因为对于一个新的extent来说,不管被回收的extent是一个或多个,所有的连续的free space都是可用的,可以直接分配给一个新的extent。


1.3.4.2 Extents in Clustered Tables
Clustered table的信息是存储在为这个cluster创建的data segment里的,因此,即使你drop了cluster里的一个table,这个cluster的data segment也会为其他cluster里的table保留这部分空间,没有任何extents会被回收。除了hash clusters以外,你可以通过truncate clusters来释放cluster里的所有extents。

1.3.4.3 Extents in Materialized Views and Their Logs
对于物化视图和物化视图日志,Oracle回收他们的extents的方法,和普通nonclusters table和clusters是一样的。

1.3.4.4 Extents in Indexes
只要这个index存在,所有已经为这个index的index segment分配的extents都会为其保留。当你drop这个index或drop这个index关联的表或drop cluster时,Oracle才会在这个tablespace里回收这个index segment的extent给其他使用。

其实index重建也可以回收空间。

1.3.4.5 Extents in Temporary Segments
当Oracle完成一个需要temporary segment的语句的执行后,Oracle自动drop这个被请求的temporary segment,并且把为这个temp segment分配的extents交还给临时表空间。

一次单独的sort操作,当用户发布这个排序语句后,它会为它自己在临时表空间里分配temp segment,用完后交还给临时表空间。
对于需要多次排序的语句,Oracle会为这些sorts在临时表空间指派专有的排序段,这些排序段只会为这个instance分配一次,并且排序后他们并不会交还给临时表空间,他们会为其他需要多次排序的语句保留着表示为可被使用。

临时表的临时段,会为一个单独的事务或会话的多条语句保留临时表的数据。当这个事务或会话结束后,Oracle会drop掉这个临时段,并且把为这个临时段分配的extents交还给临时表空间。

更多信息参考:
本章"Introduction to Temporary Segments"
第十章,"Temporary Tables"

1.3.4.6 Extents in Rollback Segments
Oracle会周期性的检查database的rollback segments,用来查看他们是否增大的比他们的理想size大很多,如果是(说明有太多的extents了),那么Oracle会自动从rollback segment回收一个或更多的extents。

参考:
Appendix B, "Information on Deprecated Features" for more information on rollback segments

###################################################
#
# 1.4 segments概述
#
###################################################

在一个tablespace里,一个segment是一组包含了特定逻辑存储结构的数据的extent。比如,对于每个table,Oracle会分配一个或多个extent来组成table's data segment;对于每个index,Oracle会分配一个或多个extent来组成它自己的index segment。

Oracle一共四种类型的segment,如下:
data segment
index segment
temporary segment
undo segment

1.4.1 Introduction to Data Segments
一个独立的data segment在oracle数据库里包含了以下类型中某一种的所有数据:
- 没有被partition或cluster的一个表。
- 分区表的一个分区。
- 由表组成的cluster。
在你使用CREATE语句创建表或cluster的时候,Oracle就为这些对象创建了data segment。

table或cluster的存储参数,决定了它的data segment's extents将如何被分配。你可以直接在CREATE或ALTER语句里设置这些存储参数。这些存储参数影响了数据获取的性能和这个object的data segment的存储性能。

提示:
oracle为物化视图或物化视图日志创建segment的方法和创建table,cluster一样。

See Also:
Oracle9i Replication for information on materialized views and materialized view logs
Oracle9i SQL Reference for information on the CREATE and ALTER statements

1.4.2 Introduction to Index Segments
每个非分区索引在oracle数据库里都有一个自己独立的index segment来存储它自己的所有数据。对于一个分区索引来说,每个分区都有一个独立的index segment来存储每个分区自己的数据。

当发布CREATE INDEX语句时,Oracle就会为一个index或一个index partition创建index segment,在这个CREATE INDEX语句里,你可以为这个index segment的extents指定存储参数和指定在那个tablespace创建这个index segment。设置的存储参数直接影响数据获取和存储的效率。

1.4.3 Introduction to Temporary Segments
当执行一个查询语句时,oracle经常需要temporary workspace来处理SQL语句的解析和执行的中间过程。Oracle自动分配的这个磁盘空间叫做temporary segment。典型的,oracle需要一个temp segment作为sorting的工作区域,但是如果sorting操作可以在内存里执行或oracle使用索引找到一些其他方法来完成这个操作,oracle就不会去创建一个temp segment来执行sorting。

1.4.3.1 Operations that Require Temporary Segments
下列语句有时是需要temp segment的:
CREATE INDEX
SELECT ... ORDER BY
SELECT DISTINCT ...
SELECT ... GROUP BY
SELECT ... UNION
SELECT ... INTERSECT
SELECT ... MINUS

一些没有索引的表连接,和一些有关系的子查询,可能需要使用临时段。比如,一个查询语句包含一个DISTINCT子句,一个GROUP BY子句,一个ORDER BY子句,Oracle就可能需要两个临时段。如果应用经常发布以前执行的SQL语句,DBA可以调整SORT_AREA_SIZE初始化参数来提高性能。(If applications often issue statements in the previous list, the database administrator can improve performance by adjusting the initialization parameter SORT_AREA_SIZE.翻译的有点悬乎)

See Also:
Oracle9i Database Reference for information on SORT_AREA_SIZE and other initialization parameters


Segments in Temporary Tables and Their Indexes
Oracle也可以为临时表和创建在临时表上的索引分配temp segment。temp table存储的数据仅仅只在事务或会话中存在。

参考:
第十章,"Temporary Tables"


1.4.3.2 How Temporary Segments Are Allocated
Oracle为查询操作和临时表分配temp segment的方法是不一样的。

Allocation of Temporary Segments for Queries:
在一个用户会话中,当用户发布语句时,如果需要分配temp segment,Oracle就会在用户的临时表空间中进行分配。所使用的临时表空间,是CREATE USER或ALTER USER语句使用TEMPORARY TABLESPACE子句指定的。

注意:
不能指定永久表空间为临时表空间。

如果没有为用户指定临时表空间,那么就缺省使用SYSTEM表空间为临时表空间。The default storage characteristics of the containing tablespace determine those of the extents of the temporary segment. 当语句执行完成后,Oracle drop掉这个temp segment。

因为分配和回收temp segment经常频繁发生,所以我们应该为temp segment创建一个指定的表空间。通过这样做,我们可以把磁盘设备的I/O分散,并且可以避免SYSTEM表空间产生碎片。you can avoid fragmentation of the SYSTEM and other tablespaces that otherwise hold temporary segments。

注意:
如果SYSTEM表空间被创建为本地管理表空间,那么必须在创建数据库时就定义一个缺省的临时表空间。本地管理的SYSTEM表空间是不能用来做为缺省临时存储的。

sort操作所使用的temp segment被修改的记录是不会记录到REDO LOG里的,除非是对temp segment的空间管理操作才会记录到REDO LOG。

参考:
Chapter 22, "Controlling Database Access" for more information about assigning a user's temporary segment tablespace

Allocation of Temporary Segments for Temporary Tables and Indexes:
oracle只在第一次发布INSERT语句插入数据到temp table时,才会为这个temp table分配temp segment(也包括发布CREATE TEMPORARY TABLE AS SELECT语句执行的内容插入操作)。第一次发布的INSERT语句插入数据到一个临时表时,就会为这个temp table和它的index分配segment,此时会为index而create它的root page,和分配其他的如LOB segment。

为temp table分配的temp segment,是在创建temp table的用户的临时表空间分配空间的。
如果是事务型临时表,oracle在事务结束时就会drop这个temp table的temp segment;如果是会话型临时表,则会在会话结束时drop为这个temp table分配的temp segment。如果有其他事务或会话在共享使用这个temp table,此时segment不会被drop,segment而会在table里被继续保留。

参考:
第十章的“temporary tables”

1.4.4 Automatic Undo Management
自动UNDO管理是基于undo-tablespace的,我们在一些undo tablespaces里分配空间,代替分配不同大小的多个rollback segments。

See Also:
Oracle9i Database Administrator's Guide for information about creating an undo tablespace

自动undo管理可以让你明确的控制undo信息保留时间,通过使用系统参数UNDO_RETENTION,你可以指定有多少已经commit的undo信息可以保留在database里。UNDO_RETENTION参数值是clock time(比如,30秒)。通过控制保留时间,你可以配置系统让长查询操作运行成功。

使用V$UNDOSTAT视图来监视和配置数据库系统,以使undo空间被有效率的使用。V$UNDOSTAT记录了各种undo和事务的统计信息,比如有多少undo空间被instance消耗掉了。

注意:
在早期的版本里,undo空间管理是通过使用rollback segment来完成的,这种方法现在叫做手工undo管理模式。

1.4.4.1 Undo Mode
undo模式提供了更灵活的方法来从手工undo管理到自动undo管理迁移。一个数据库系统要么运行在手工undo管理模式,要么运行在自动undo管理模式。在手工模式里,undo空间是通过rollback segment来管理的,手工管理模式向低版本兼容。Use it when you need to run Oracle9i to take advantage of some new features, but are not yet not ready to convert to automatic undo management mode.

在自动管理模式,undo空间是在undo tablespaces里管理的。使用自动undo管理模式,DBA只需要为每个instance去创建一个undo表空间,并且设置UNDO_MANAGEMENT初始化参数为AUTO就可以了。自动undo管理模式支持oracle 9i或更高的版本。虽然手工管理模式也被支持,还是强烈建议使用自动undo管理模式。

See Also:
Oracle9i Database Administrator's Guide for descriptions of the syntax and the semantics of the DDL statements.
Appendix B, "Information on Deprecated Features" for more information on manual undo management mode

1.4.4.2 Undo Quota
在自动管理模式,系统排它性的控制着分配每个事务到undo segment,并且控制对这些undo segment的空间分配。一个有问题的事务可能潜在的消耗很多undo空间,以至影响整个系统。而在手工管理模式,你可以通过设置小的MAXEXTENTS值来现在rollback segment的size使这种情况得到控制。然而,你还是不得不使用SET TRANSACTION USE ROLLBACK SEGMENT语句来明确分配给长时间运行的事务一个大的rollback segment,这种方法已经被证明是比较麻烦的了。

资源管理器通过指定UNDO_POOL(一种更明确的方法)来控制大事务,这种方法让DBA把用户划为用户组,给每个组分配一个最大undo空间使用限制,当总的undo 空间被用户组扩展到极限时,这个用户组的用户将不能执行更多的更新操作,直到undo空间通过其他成员事务的结束而被释放变的可用。
The Resource Manager directive UNDO_POOL is a more explicit way to control large transactions. This lets database administrators group users into consumer groups, with each group assigned a maximum undo space limit. When the total undo space consumed by a group exceeds the limit, its users cannot make further updates until undo space is freed up by other member transactions ending.

UNDO_POOL的缺省值是UNLIMITED,这让用户可以消耗undo表空间里所有空闲的undo空间。DBA可以通过使用UNDO_POOL来限制一些特殊的用户使用undo空间。

1.4.4.3 Undo Retention Control
一些long-runing 查询操作有时会执行失败,是因为一致性读操作要读undo信息,而undo信息保留时间过长会变的不可用。在已经commit的undo blocks被活动的事务覆盖时,这种情况就会发生。

自动管理模式提供一种方法来明确的控制什么时候undo空间可以被重新使用,也就就undo年信息被保留多长时间。DBA可以通过使用UNDO_RETENTION参数指定一个保留时段,比如,如果UNDO_RETENTION.被设置为30分钟,那么所有已经commit的undo信息会被保留至少30分钟,这保证了所有查询时间在30分钟或30分钟以下的操作,通常情况下,不会再遇到“snapshot too old.”的错误。

你可以在数据库启动时就设置UNDO_RETENTION的值,或通过ALTER SYSTEM语句动态的更改。下列范例设置保留时间为20分钟:
ALTER SYSTEM SET UNDO_RETENTION = 1200;

如果你没有设置UNDO_RETENTION参数,那么 Oracle会使用一个小的缺省值,这个缺省值适合大多数OLTP系统,这种OLTP系统的查询通常不会太长。

一般的,不要设置非常接近undo tablespace能支持的时间的retention值,是个很好的做法,, because that may result in excessive movement of space between undo segments. A 20% buffer of undo space is recommended。

1.4.4.4 External Views
通过 V$TRANSACTION 和 V$ROLLSTAT视图来监视事务和undo信息。对于自动管理模式,V$ROLLSTAT里的信息反映了自动undo管理的undo segment的行为。
V$UNDOSTAT视图展现了一个统计数据的拄壮图表现出了系统工作的好坏,你可以查看例如undo消耗比率,事务concurrency,和在instance里运行的查询的长度等统计数据。通过这个视图,你可以更好的估计当前工作环境需要多少undo空间。对于自动和手工管理,这个视图都是可用的。

bigboar 发表于:2006.04.11 22:13 ::分类: ( Oracle ) ::阅读:(1957次) :: 评论 (1) :: 引用 (0)

[回复]

不错!

游客 评论于:2007.07.20 15:07

发表评论

标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)


authimage