预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

ORACLE数据库系统安装完成后,由于版本的不同自动在RBS表空间上建立了相应数量的回滚段,比如在ORACLE8iRealse8.1.7版本上可以建立rb01至rb24共24个回滚段。但是这些回滚段的大小都很小,而且在缺省下,只有少数回滚段是有效的。所以无论在任何应用环境下都需要对所有的回滚段进行管理和调整。 §14.1回滚段基本概念 回滚段(RollbackSegment)是ORACLE数据库系统的一个很重要的对象,它实际上是一个用来存放增、删、改数据的磁盘空间,说它是一个磁盘空间是因为它必须建立在一个表空间上,而表空间又与一个或多个数据文件对应。 §14.1.1回滚段的作用 ORACLE的回滚段(Rollback)存储着事务处理(Transaction)的回滚信息,在ORACLE中担负两个重要的任务: 1、保证数据读的一致性(readconsistency); 2、进行数据恢复(DatabaseRecovery)。 用于用户进行insert,update,delete时,保存信息的数据库对象,以便在需 对改动的数据进行取消时可以进行回滚。 §14.1.2回暖滚段的基本概念 1、回滚段“头” 指回滚段中当前写入记录的位置; 2、回滚段“尾” 指最早使用回滚段且处于工作状态的transaction写入回滚信息的起始位置。 §14.1.3回滚段使用原则 1、一个transaction可能会使用当前处于online的任意一个回滚段。 2、transaction总是从回滚段头开始记录,依次向前推进当前指针。 3、一个transaction中的所有信息只能存于一个回滚段内。 4、多个transaction可以将数据写入同一个回滚段内的同一个extent中。 5、使用某个extent的所有transaction在提交或回滚后,它将分配一个新的extent,并将该extent插入到回滚段的extent环中。 6、insert,update及delete操作都产生回滚信息。 7、在回滚段中存取数据需要短暂的排它锁。 §14.1.4ORACLE安装后的回滚段 1、缺省回滚段为system,它被建立在system表空间中。 2、第二个回滚段为R0(数据库生成过程) 1)创建数据库时,系统在system表空间上建立一个system回滚段; 2)在system表空间建立R0回滚段(一个数据库若有多个表空间则必须建立 第二个回滚段); 3)让新的回滚段R0有效,从而创建其它数据库; 4)创建一个叫rbs的表空间(以便生成更多的回滚段); 5)在rbs表空中创建附加的回滚段; 6)使system表空间中的r0为active; 7)使rbs表空间的所有回滚段为active; 8)当数据库创建完成后,r0回滚段不需要(仍有效,但不激活inactive); §14.1.5回滚段的工作过程 根据ORACLE向回滚段的片写入数据所使用的方法,可将回滚段看作一个图环,工作过程如下: 1、新transaction开始启动,ORACLE分配一个可用的回滚段; 2、回滚数据,ORACLE将数据写入片中; 3、写某片时,通过wrapping(环绕)转到该回滚段的下一片继续写;当写满回滚段的最后一片时,可以绕到头片继续写。但当某一个事务(transaction)的回滚数据大于回滚段所容纳的数量时,即写回到第一片还继续写时,此时为了满足回滚数据的要求,并防止此事务不重写自己的回滚数据,ORACLE根据next作扩充至到maxextents为止,当然超过maxextents时仍未完成时,则出现snapshottooold(没有新的分配了)。 在大型事务结束后,ORACLE根据OPTIMAL参数对的扩展的回滚段空间进行“最佳大小”的收缩。回滚段的工作过程如图所示: 回滚段的工作过程图(rollback图) §14.2创建和使用回滚段 下面给出创建回滚段的命令语法和参数解释,此外简单介绍在应用中如何使用回滚段的例子。 §14.2.1创建回滚段 ORACLE提供CREATEROLLBACKSEGMENT命令实现回滚段的创建。它的语法如下: 1.CREATEROLLBACKSEGMENT句法: create[public]rollbacksegmentsegment_nametablespacetablespace_name storage(initialxxMnextxxMminextentsnmaxextentsn optimalxxMpctincrease0); 参数的意义同建表上样,但这里不允许使用pctincrease参数,因此其增涨百分比总是零。这里的参数的使用(执行效果)与表的参数有很大的不同。一表中的数据在关机后仍放于该表空间