Oracle 12c R1 之前,临时表生成的undo记录是存储在undo表空间里的,通用表和持久表的undo记录也是类似的。而在 12c R12 的临时 undo 功能中,临时 undo 记录可以存储在一个临时表中,而无需再存储在 undo 表空间内。临时表的UNDO信息通常用于读一致性和事务回滚,在事务完成之后,无需进行恢复,所以也就不必永久保存。这个特性完全无损Oracle的事务一致性。这样做的主要好处在于:减少 undo 表空间,由于信息不会被记录在 redo 日志中,所以减少了 redo 数据的生成。你可以在会话级别或者数据库级别来启用临时 undo 选项。
启用 temp undo 好处:
1.减少 undo 表空间
2.减少 redo 数据
3.允许在ADG中对临时表进行DML操作
启用 temp undo 要求:
1.兼容性参数必须设置为 12.0.0 或更高
2.启用 c##andy.temp_undo_ENABLED 初始化参数
3.足够的空间来创建临时表空间
开启或者禁用 temp undo:
SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=TRUE;
SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;