The UNDO_RETENTION parameter in your database is set to 1000 and undo retention is not guaranteed. Which statement regarding retention of undo data is correct? A) Undo data becomes obsolete after 1,000 seconds. B) Undo data gets refreshed after every 1,000 seconds. C) Undo data will be stored permanently after 1,000 seconds. D) Committed undo data would be retained for 1,000 seconds if free undo space is available. E) Undo data will be retained in the UNDO tablespace for 1,000 seconds, then it gets moved to the TEMPORARY tablespace to provide read consistency. Answer: D UNDO数据也被称为回滚数据,它用于确保数据的一致性。当执行DML操作时,UNDO数据被存放到UNDO段中,而新数据则被放到数据段中。如果事务操作出现问题,就需要回退事务,已取消事务变化。UNDO_RETETION表示当事务提交或回滚以后,该事务所使用的undo块里的数据需要保留多长时间;当保留的时间超过UNDO_RETETION所指定的时间以后,该undo块才能够被其他事务覆盖。如果将初始化参数UNDO_MANAGEMENT设置为AUTO,则Oracle10g将启用AUM。在AUM下,undo块就存在四种状态: a. Active:表示正在使用该undo的事务还没有提交或回滚。 b. Expired:表示该undo持续inactive的时间超过UNDO_RETETION所指定的时间。 c. UNEXPIRED:未过期的数据 所以,假如UNDO表空间足够大,那么超过UNDO_RETETION的数据不会被覆盖,只会被标记为Expired状态。但是,如果执行大事务,且UNDO表空间不够大的话,因为题目中的undo retention is not guaranteed,所以,那些标记为UNEXPIRED的undo数据块儿也将被覆盖,而不会持久的保留1000秒。 关于E选项,Temporary tablespace是oracle里临时表空间,临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。
|