30. In which situation may the UNDO_RETENTION parameter be ignored, even if it is set to a value?
A.when the data file of the undo tablespace is autoextensible
B.when there are more than one undo tablespaces available in the database
C.when the undo tablespace is of a fixed size and retention guarantee is not enabled
D.when the undo tablespace is autoextensible and retention guarantee is not enabled
Answer: C
答案解析:
此题考的是UNDO_RETENTION 即使设置了值,在哪些情况下会忽略。
在固定大小的还原表空间,且没有设置retention guarantee 强制保留,UNDO_RETENTION 就会被忽略。如果设置了retention guarantee ,即使是固定大小的表空间,也不会忽略UNDO_RETENTION,但有可能出现事务失败。
参考:http://blog.csdn.net/rlhua/article/details/12259555
配置还原保留时间
UNDO_RETENTION指定已提交的还原信息要保留多长时间(秒)。仅在以下情况下才必须设置这个参数:
• 还原表空间启用了AUTOEXTEND选项
• 要设置LOB 的还原保留时间
• 要保证保留时间
UNDO_RETENTION初始化参数指定还原保留时间的下限阈值(秒)。可将自动扩展的还原表空间的最短还原保留时间设置为预期的最长闪回操作所需的时间。对于自动扩展的还原表空间,系统至少按这个参数指定的时间保留还原数据,而且还会自动调整还原保留时间以满足查询的还原要求。但是,此自动优化的保留时间可能不足以执行闪回操作。
对于固定大小的还原表空间,系统会根据还原表空间大小和使用历史记录,自动调整到尽可能最优的还原保留时间;系统会忽略UNDO_RETENTION直至启用保留时间保证。因此,进行自动还原管理时,在以上中列出的三种情况都使用UNDO_RETENTION设置。
对于这三种以外的情况,会忽略此参数。
还原信息分为三类:
• 未提交的还原信息(活动):支持当前运行的事务处理,如果用户要回退事务处理或事务处理失败,需要用到这类信息。绝对不会覆盖未提交的还原信息。
• 提交的还原信息(未过期):不再需要用来支持运行的事务处理,但是为了符合还原保留时间间隔,仍然要用到这类信息。这也称为“未过期”还原信息。当不是因为缺少空间而导致活动事务处理失败时,就会保留提交的还原信息。
• 过期的还原信息(过期):不再需要用来支持运行的事务处理。活动事务处理需要空间时会覆盖过期的还原信息。
默认还原行为是覆盖已提交、但尚未过期的事务处理的还原信息,而不是让活动事务处理因缺少还原空间而失败。
保证保留时间会改变此行为。有了保留时间保证,即使会导致事务处理失败,仍然会强制执行还原保留时间设置。
RETENTION GUARANTEE是表空间属性而不是初始化参数。此属性只可使用SQL 命令行语句来更改。通过更改还原表空间来保证保留时间的语法是:
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
要将有保留时间保证的还原表空间返回到其常规设置,请使用以下命令:
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
保留时间保证仅适用于还原表空间。尝试对非还原表空间设置保留时间会产生以下错误:
SQL> ALTER TABLESPACE example RETENTION GUARANTEE;
ERROR at line 1:
ORA-30044: 'Retention' can only specified for undo tablespace