为了更好地了解撤销管理的工作原理,需要理解以下每个参数的意义,以及在什么时候需要设置这些参数的值!
1.ROLLBACK_SEGMENTS
属性 | 描述 |
参数类型 | String |
语法 | ROLLBACK_SEGMENTS =(segment_name [, segment_name] ... ) |
默认值 | 如果不指定这个参数,实例使用默认的公共回滚段,除非
|
可修改 | 否 |
值范围 | DBA_ROLLBACK_SEGS列表中除了SYSTEM以外的任何回滚段名称 |
基本的 | 否 |
RAC | 多实例必须不同的值 |
ROLLBACK_SEGMENTS分配一个或多个回滚段名称到实例。如果设置了此参数,则实例获得所有在该参数指定的回滚段。即使回滚段的数量超过了实例所需的最小数量。
你不能动态的改变这个参数值,但是可以改变它的值,然后重启实例。虽然这个参数通常指定私有回滚段,但是如果他们不在使用中,你也可以指定为公共回滚段。
通过查询数据字典DBA_ROLLBACK_SEGS,找出数据库中每个回滚段的状态,段ID号,名称。
当UNDO_MANAGEMENT设置为AUTO,ROLLBACK_SEGMENTS被忽略。
2.TRANSACTIONS_PER_ROLLBACK_SEGMENT
属性 | 描述 |
参数类型 | Integer |
默认值 | 5 |
可修改 | 否 |
值范围 | 1~依赖操作系统 |
RAC | 多实例可以有不同的值 |
TRANSACTIONS_PER_ROLLBACK_SEGMENT指定你希望每个滚回段处理并发事务的数量。回滚段在启动时获得的最小数量是事务数除以该参数值。例如,事务数是101,这个参数是10,那么获取的最小回滚段数量比率是101/10 ,四舍五入11.
3.UNDO_MANAGEMENT
属性 | 描述 |
参数类型 | String |
语法 | UNDO_MANAGEMENT = { MANUAL | AUTO } |
默认值 | AUTO |
可修改 | 否 |
基本的 | 否 |
RAC | 多实例必须有相同值 |
UNDO_MANAGEMENT指定系统应该使用的撤销空间管理模式。当设置为AUTO,实例启动在自动撤销管理模式下。设置为MANUAL管理模式,撤销空间当作回滚段额外分配。
4.UNDO_RETENTION
属性 | 描述 |
参数类型 | Integer |
默认值 | 900 |
可修改 | ALTER SYSTEM |
值范围 | 0~231 - 1 |
RAC | Oracle建议多个实例具有相同的值 |
UNDO_RETENTION指定(秒)撤销保留的低阀值。对于自动扩展的撤销表空间,系统保留撤销至少是这个参数指定的时间,并自动调节撤销保留期限以满足查询的撤销要求。对于固定大小的撤销表空间,系统自动根据撤销表空间的大小和使用历史调节最大可能的撤销保留期限,并忽略UNDO_RETENTION,除非保留担保已启用。
UNDO_RETENTION参数仅仅在当前撤销表空间有充足的空间时,才会被遵守。如果一个活跃的事务需要撤销空间,而撤销表空间没有可用的空间,系统开始重用未过期的撤销空间。
数据库当前撤销表空间的保留时间,可以通过动态性能视图V$UNDOSTAT
的TUNED_UNDORETENTION列获取到。
V$UNDOSTAT视图的每一行是最近4天每间隔10分钟收集的撤销状态信息(超过4天的,需要查看DBA_HIST_UNDOSTAT),TUNED_UNDORETENTION以秒为单位。
5.UNDO_TABLESPACE
属性 | 描述 |
参数类型 | String |
语法 | UNDO_MANAGEMENT = 撤销空间名称 |
默认值 | 数据中第一可用的撤销表空间 |
可修改 | ALTER SYSTEM |
值范围 | 存在的合法的撤销表空间名称 |
基本的 | 是 |
RAC | 多实例必须有相同值 |
UNDO_TABLESPACE指定当实例启动时使用的撤销表空间。如果给手动撤销管理模式下的实例指定了该参数,则会发生错误,启动失败。
如果该参数是缺省的,选择数据中第一个可用的撤销表空间。如果没有可用的撤销表空间,实例将会启动,但没有撤销表空间。在这种情况下,用户事务将会执行SYSTEM 的回滚段。正常情况,应该避免在此模式下运行。
当实例运行以后,也可以替换为其他撤销表空间。