首页 > 数据库 > Oracle > ORACLE笔记十三
第十三章
在ORACLE9I中,通过利用自动撤销表空间来代替回退段,可以由ORACLE自动对撤销空间进行管理,这称为“自动撤销管理方式”。
[@more@]撤销空间是专门的存储空间,用来保存撤销记录(回退记录),利用“撤销表空间”,DBA能够精确控制撤销记录在被覆盖前保留的时间,这称为“自动撤销管理”。相对的,利用回退段的旧的撤销空间管理方式被称为“手工撤销管理”。
通过使用撤销技术,能够为ORACLE数据库实现的功能:1、使用ROLLBACK语句撤销事务。2、进行数据库恢复。3、提供数据的读一致性。
自动撤销管理方式也称为“SMU方式”,即System Managed Undo,而手工撤销管理方式也称为“RBU”方式,即Rollback Segments Undo。
在ORACLE9I中,无论使用哪一种撤销空间管理方式,ORACLE始终会在SYSTEM表空间中建立一个SYSTEM回退段。ORACLE将利用SYSTEM回退段来存储系统事务的撤销记录。在创建数据库时,SYSTEM回退段被自动建立,DBA不需要对它进行任何维护和管理,也不能删除它。
在使用自动撤销管理方式的情况下,必须在数据库中创建一个撤销表空间,ORACLE将利用撤销表空间来保存撤销记录。
任何数据库用户都不能在撤销表空间中创建对象,在撤销表空间中只能保存撤销记录。
当一个事务成功提交之后,它的撤销记录将标记为失效,撤销表空间也是以循环方式写入,在新事务开始时有可能会覆盖已经失效的撤销记录。因此,在执行某些耗时较长的查询时,可能会由于查询所需要的撤销记录被覆盖,而无法保证读一致性,从而产生“快照太旧”错误。为了解决这个问题,在自动撤销管理方式下,DBA可以通过设置初始化参数UNDO_RETENTION显式地指定撤销记录的保留时间。
在创建数据库之后,应当立即在SYSTEM表空间中建立一个非SYSTEM回退段。因为在数据库创建后,用户需要首先创建其他的表空间和回退段。这时,这些操作的回退记录将保存在这个非SYSTEM回退段中。在其他的表空间和回退段建立完毕后,可以将SYSTEM表空间中的这个非SYSTEM回退段删除。
如果没有为数据库应用Oracle Real Application Clusters环境,只有一个实例访问数据库,则公用回退段和私有回退段是没有区别的。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/183680/viewspace-790558/ ,如需转载,请注明出处,否则将追究法律责任。