目录
一、12C之前的临时表
1、临时表的数据块修改不会直接产生redo,因此,对临时表的操作是不可恢复的
当修改临时表中的一个块时,这个修改不会记录到重做日志文件中。
2、因为临时表会产生undo,所以临时表也会生产一些redo(只是记录undo的修改而产生的redo)
临时表为什么会产生undo,是因为如果插入数据1000行,失败了,他需要回滚这条语句,所以必须要产生undo,有了undo,那必然会为undo产生redo
3、临时表访问最好是在insert和select操作
因为insert产生undo时,前映像几乎是NULL状态,所以undo几乎没有空间,因此产生的redo也很少。
而select操作根本不产生undo,所以产生的redo几乎为0.
4、临时表上尽可能的避免使用DELETE操作,再就是INSERT
5、临时表的 DML活动结论:
(1)insert会生成很少甚至不生产undo/redo。
(2)临时表的update会生成永久表update大约一半的redo。
(3)delete在临时表上生成的redo与在永久表上生成的redo同样多。
二、12C之后的临时表
1、TEMP_UNDO_ENABLED参数设置为TRUE
12C起,我们可以通过设置TEMP_UNDO_ENABLED来将临时表的undo放在临时表空间中。
由于临时表空间的任何数据变更都不会产生redo,所以当这个参数设置为TRUE时,临时表上的DML都会产生很少甚至不产生redo。
2、TEMP_UNDO_ENABLED默认值设置为FALSE
临时表生成的redo量与12c版本之前是一样的。