回退的相关知识
回退的相关知识 undo_management=manual
在创建新的数据库时,Oracle将在System表空间中建立一个默认的System回退段。System回退段只应当用于存放Oracle系统事务的回退记录,任何用户事务都不应当使用System回退段。
#在创建数据库之后,应当立即在System表空间中建立一个非System回退段,因为在数据库创建后,用户需要首先创建其他的表空间和回退段。这时,这些操作的回退记录将保存在这个非System回退段中,而不会保存在System回退段中。在其他的表空间和回退段建立完毕后,可以将System表空间中的这个非System回退段删除。
实例启动时获取的回退段数目由多种方法确定:
·实例所获取的公用回退段数目由transaction,transaction_per_rollback_segments指定
·实例所获取的私有回退段目和名称由rollback_segments决定。
#此外,一个实例所允许使用的最大回退段数目max_rollback_segments=ceil(transaction/transaction_per_rollback_segments)。
在一个实例中,如果同时使用公用回退段和私有回退段,实例首先获取由rollback_segments参数指定的私有回退段,然后再通过ceil(transactions/transactions_per_rollback_segments)计算的值与已获取的私有回退段数目的差额需要通过获取公有回退段来补偿。
·创建私有回退段
create rollback segments XXX
tablespace XXX
storage (initial XXX
next XXX
optimal XXX
pctincrease 0
minextents XXX
maxextents XXX )
·创建公有回退段
create public rollback segments XXX
……
#online offline
·alter rollback segment XXX online/offline
·利用参数文件(仅限于私有回退段)
rollback_segments
将私有回退段添加入该参数,重启后,则该回退段的状态将永久性为onlne
没有写入参数文件的回退段在数据库重新启动后,再次重新启动后,变为offline
而公共回退段将不受参数文件的限制
在回退段中,段的头部存储正在使用的回退段事务的信息,一个事务只能使用一个回退段来存放它的回退信息,而一个回退段可以存放多个事务的回退信息。