6.5.2 UNDO表空间的切换
数据库服务器可以采用自动方式,也可以采用手工方式管理回滚数据,这取决于初始化参数UNDO_MANAGEMENT的设置。如果参数值为AUTO,则采用自动方式,如果设置为MANUAL,则采用手工方式。如果希望从一种方式切换到另一种方式,需要修改初始化参数UNDO_MANAGEMENT的值。与回滚数据的管理方式有关的初始化参数还有以下几个:
·UNDO_TABLESPACE用来指定一个可用的UNDO表空间。这个表空间必须存在。如果采用手工方式,这个参数的设置无效。在数据库服务器运行的过程中,这个参数的值可以动态修改。
·UNDO_RETENTION指定已经无效的UNDO数据在UNDO表空间中可以保留的时间,默认为900秒。这个参数的值也可以动态修改。
UNDO表空间在创建之后,为了保证用户能够使用这个表空间,首先必须将数据库UNDO管理方式设置为自动管理方式,即确保初始化参数UNDO_MANAGENT的值为AUTO。另外,还需要将初始化参数UNDO_TABLESPACE的值设置为新创建的UNDO表空间。例如:
SQL>ALTER SYSTEM SET UNDO_MANAGEMENT=auto scope=spfile;
SQL>ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;
初始化参数UNDO_MANAGEMENT的值需要在参数文件中修改,并且只有在数据服务器重新启动之后才能起作用。而初始化参数UNDO_TABLESPACE的值可以在参数文件中修改,也可以动态修改。
在切换UNDO表空间时,如果指定的UNDO表空间不存在,或者指定的表空间不是UNDO表空间,或者有另一个实例正在使用这个表空间,切换操作将无法正常进行。
在切换UNDO表空间之后,新的事务将使用切换后的UNDO表空间。但是原来的UNDO表空间不会马上失去作用,如果一个事务开始于切换表空间之前,并一直持续到切换之后,那么它还将继续使用原来的表空间,这样原来的UNDO表空间需要一直等待在其中运行的事务都结束后才能失去作用。
UNDO表空间的扩展和删除方法与普通表空间相同,这里不再介绍。