`
helloyesyes
  • 浏览: 1306560 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

临时表 DML 产生redo 问题说明

阅读更多

关于Oracle 临时表,参考我的Blog

Oracle 临时表

http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4705283.aspx

Oracle 临时表的操作,会产生redo undo

先看一个示例:

SYS@anqing1(rac1)> CREATE GLOBAL TEMPORARY TABLE dave_test (id number,name varchar2(20)) ON COMMIT DELETE ROWS;

Table created.

SYS@anqing1(rac1)> set autotrace on

SYS@anqing1(rac1)> insert into dave_test values(1,'dave');

1 row created.

Execution Plan

----------------------------------------------------------

-------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

-------------------------------------------------------------------------

| 0 | INSERT STATEMENT | | 1 | 100 | 1 (0)| 00:00:01 |

-------------------------------------------------------------------------

Statistics

----------------------------------------------------------

2 recursive calls

8 db block gets

1 consistent gets

0 physical reads

284 redo size

662 bytes sent via SQL*Net to client

571 bytes received via SQL*Net from client

3 SQL*Net roundtrips to/from client

1 sorts (memory)

0 sorts (disk)

1 rows processed

SYS@anqing1(rac1)>

关于这些统计数据的分析,参考我的Blog

Oracle Explain Plan

http://blog.csdn.net/tianlesoftware/archive/2010/08/20/5827245.aspx

在看下为什么对临时表操作会产生redo

因为我们可以对临时表的操作进行回滚,即会产生undo数据; 但是所有undo都受到redo的保护,就是说假设此时数据库崩溃了,下次启动会利用redo把这些undo再次还原出来,然后利用这些undo进行反操作,撤销上次那个崩溃的事务。

这些undo里面可能有普通表的,也有临时表的, redo都会把它们恢复出来。

这个就是我们的一个数据库roll forward roll back的顺序问题, Crash recover 的时候必须先前滚,用redo 恢复出undo 之后,在用undo 回滚相关事务操作信息。简单点说REDO的作用就是记录所有的数据库更改,包括UNDO表空间在内。

Oracle 实例恢复时 前滚(roll forward 后滚(roll back 问题

http://blog.csdn.net/tianlesoftware/archive/2011/03/29/6286330.aspx

-------------------------------------------------------------------------------------------------------

Blog http://blog.csdn.net/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(); DBA2 群:62697977() DBA3 群:62697850()

DBA 超级群:63306533(); DBA4 群: 83829929 DBA5群: 142216823

DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

    oracle,sql临时表.docx

    会话级临时表的数据存活期与会话同步,即当用户结束会话时,Oracle会自动清理该会话在临时表中产生的所有数据。另一方面,事务级临时表的数据则仅在事务期间有效,一旦事务提交(commit)或回滚(rollback),临时表...

    oracle,sql临时表.pdf

    在Oracle数据库系统中,临时表(Temporary Tables)是一种特殊类型的表,它主要用于存储在特定会话或事务期间产生的临时数据。这些数据在会话结束或事务提交或回滚时会被自动删除,从而提供了一种高效、安全的方式来...

    12c 新特性-Temporary Undo

    传统的临时表在进行更新操作时,虽然不会产生Redo条目,但相关的Undo信息仍然会被记录到Redo日志中。而12c版本的Temporary Undo机制允许将临时表的Undo信息直接存储在临时表空间内,从而实现了真正的“临时”处理。 ...

    Oracle数据库自带表空间的详细说明

    临时表空间由临时数据文件组成,不存储永久性对象,因此无需备份,且其操作不记录redo日志,但会产生undo日志。 4. **UNDO表空间** UNDO表空间是Oracle特有的,它用于存储事务中DML语句的undo信息,即数据在被修改...

    oracle基础知识

    临时表空间用于存储临时数据,例如排序操作或临时表的数据。创建命令如下: ```sql CREATE TEMPORARY TABLESPACE temp1 TEMPFILE 'D:\tablespace\temp1.ora' SIZE 10M AUTOEXTEND ON; ``` #### 二、用户管理 用户...

    收获不知Oracle

    4.2.3.2 观察各类DML的REDO量 147 4.2.3.3 全局临时表两大重要特性 149 4.2.4 神通广大的分区表 153 4.2.4.1 分区表类型及原理155 4.2.4.2 分区表最实用的特性 165 4.2.4.3 分区索引类型简述176 4.2.4.4 分区表之...

    藏经阁-PHP 2017.北京 全球开发者大会——高可用的PHP.pdf

    - 临时表优化:独立表空间、不记录redo、更少的锁,提高了临时表的处理速度。 - UNDO日志的清除:可以通过设置innodb_undo_log_truncate来自动截断过长的undo日志。 - 多个page cleaner线程:提升了脏页刷新的效率。...

    ocp11g培训内部教材_052课堂笔记(042)_体系架构

    Oracle还支持分区表、索引组织表、簇表和临时表等不同类型的表。Resumable功能允许在资源受限时暂停并恢复操作。 **第五部分:安全性与审计** 数据库审计跟踪特定的数据库活动,包括用户访问、DML和DDL操作。审计...

    使用LOGMINER恢复提交后的数据之总结

    首先,创建临时表并模拟删除操作,然后使用LOGMINER来获取并分析包含删除操作的重做日志。在Oracle 9i及更高版本中,还可以使用FLASHBACK功能进行恢复,但LOGMINER在不支持或不适合使用FLASHBACK的情况下仍是一种...

    drop table - by 姜少华1

    在MySQL 8.0中,`DROP TABLE`的实现略有不同,增加了对XID状态、日志记录格式、以及临时表删除的检查,并且在删除过程中涉及到了更多的锁管理和缓存管理操作。例如,`mysql_rm_table_no_locks`函数用于执行删除,`...

    Oracle 面试宝典-undo.docx

    Temporary Undo是一种特殊设置,允许临时表空间用于Undo存储,通常在处理大量临时数据时使用。 DML操作中,UPDATE通常会产生最多的Undo,因为它需要记录原值和新值。 Oracle中与Undo相关的数据字典和视图包括DBA_...

    Oracle技术参考资料

    6. **存储与归档**:讲解Oracle的存储选项,如临时表空间、redo log archiving,以及如何进行数据归档和生命周期管理。 7. **高可用性与灾难恢复**:介绍Oracle的RAC(Real Application Clusters)、Data Guard、...

    Oracle Sql 性能优化技巧总结

    11. **减少对表的查询**:在子查询中尽量减少对大表的直接查询,可以考虑使用JOIN或临时表来优化。 12. **优化联接操作**:在多表联接时,ON子句的条件优先于WHERE,决定了如何组合表,而HAVING则在聚合后过滤结果...

    00 12C新特性介绍.pdf

    对于临时UNDO,12C采用了新的设计,临时表的UNDO信息不再记录在UNDO表空间中,而是写入临时表空间,从而减少了UNDO和REDO的生成量,进而降低I/O和存储的压力。管理员可以通过ALTER SYSTEM命令来启用临时UNDO,并通过...

    oracle 10g 性能调优 官方PPT

    正确设定缓存大小、排序区和临时表空间能减少磁盘I/O,提高性能。 5. **统计信息收集**:Oracle使用统计信息进行查询优化。定期更新统计信息以反映数据分布,可以确保查询执行计划的准确性。 6. **资源管理**:...

    Oracle技术人员求职面试题集锦

    - **临时表空间**: 用于存储临时数据,这些数据在会话结束时会被自动清除。 - **永久表空间**: 存储数据库中的永久数据,如表、索引等。 #### 35. 系统表空间 - **系统表空间**: Oracle数据库中默认的表空间,用于...

    MYSQL常见面试问题和答案

    - **Memory**:所有数据存储在内存中,适合临时表。 4. **性能优化**: - **EXPLAIN分析**:理解查询执行计划,找出潜在性能瓶颈。 - **慢查询日志**:记录执行时间过长的查询,便于分析优化。 - **索引优化**...

    STATSPACK 报告详细分析

    - **Sorts**:排序操作次数,大量排序可能消耗大量内存或导致临时表空间使用增加。 - **Logons**:登录次数,频繁的登录可能导致额外的开销。 - **Executes**:SQL语句执行次数,反映数据库处理的请求量。 - **...

    Oracle8i_9i数据库基础

    2. 表空间管理:分配和管理磁盘空间,包括系统表空间、用户表空间和临时表空间。 3. 索引:提高查询性能的重要手段,包括B树索引、位图索引等。 4. 备份与恢复:理解冷备份、热备份、增量备份策略,以及使用RMAN进行...

Global site tag (gtag.js) - Google Analytics