关于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会自动清理该会话在临时表中产生的所有数据。另一方面,事务级临时表的数据则仅在事务期间有效,一旦事务提交(commit)或回滚(rollback),临时表...
在Oracle数据库系统中,临时表(Temporary Tables)是一种特殊类型的表,它主要用于存储在特定会话或事务期间产生的临时数据。这些数据在会话结束或事务提交或回滚时会被自动删除,从而提供了一种高效、安全的方式来...
传统的临时表在进行更新操作时,虽然不会产生Redo条目,但相关的Undo信息仍然会被记录到Redo日志中。而12c版本的Temporary Undo机制允许将临时表的Undo信息直接存储在临时表空间内,从而实现了真正的“临时”处理。 ...
临时表空间由临时数据文件组成,不存储永久性对象,因此无需备份,且其操作不记录redo日志,但会产生undo日志。 4. **UNDO表空间** UNDO表空间是Oracle特有的,它用于存储事务中DML语句的undo信息,即数据在被修改...
临时表空间用于存储临时数据,例如排序操作或临时表的数据。创建命令如下: ```sql CREATE TEMPORARY TABLESPACE temp1 TEMPFILE 'D:\tablespace\temp1.ora' SIZE 10M AUTOEXTEND ON; ``` #### 二、用户管理 用户...
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 分区表之...
- 临时表优化:独立表空间、不记录redo、更少的锁,提高了临时表的处理速度。 - UNDO日志的清除:可以通过设置innodb_undo_log_truncate来自动截断过长的undo日志。 - 多个page cleaner线程:提升了脏页刷新的效率。...
Oracle还支持分区表、索引组织表、簇表和临时表等不同类型的表。Resumable功能允许在资源受限时暂停并恢复操作。 **第五部分:安全性与审计** 数据库审计跟踪特定的数据库活动,包括用户访问、DML和DDL操作。审计...
首先,创建临时表并模拟删除操作,然后使用LOGMINER来获取并分析包含删除操作的重做日志。在Oracle 9i及更高版本中,还可以使用FLASHBACK功能进行恢复,但LOGMINER在不支持或不适合使用FLASHBACK的情况下仍是一种...
在MySQL 8.0中,`DROP TABLE`的实现略有不同,增加了对XID状态、日志记录格式、以及临时表删除的检查,并且在删除过程中涉及到了更多的锁管理和缓存管理操作。例如,`mysql_rm_table_no_locks`函数用于执行删除,`...
Temporary Undo是一种特殊设置,允许临时表空间用于Undo存储,通常在处理大量临时数据时使用。 DML操作中,UPDATE通常会产生最多的Undo,因为它需要记录原值和新值。 Oracle中与Undo相关的数据字典和视图包括DBA_...
6. **存储与归档**:讲解Oracle的存储选项,如临时表空间、redo log archiving,以及如何进行数据归档和生命周期管理。 7. **高可用性与灾难恢复**:介绍Oracle的RAC(Real Application Clusters)、Data Guard、...
11. **减少对表的查询**:在子查询中尽量减少对大表的直接查询,可以考虑使用JOIN或临时表来优化。 12. **优化联接操作**:在多表联接时,ON子句的条件优先于WHERE,决定了如何组合表,而HAVING则在聚合后过滤结果...
对于临时UNDO,12C采用了新的设计,临时表的UNDO信息不再记录在UNDO表空间中,而是写入临时表空间,从而减少了UNDO和REDO的生成量,进而降低I/O和存储的压力。管理员可以通过ALTER SYSTEM命令来启用临时UNDO,并通过...
正确设定缓存大小、排序区和临时表空间能减少磁盘I/O,提高性能。 5. **统计信息收集**:Oracle使用统计信息进行查询优化。定期更新统计信息以反映数据分布,可以确保查询执行计划的准确性。 6. **资源管理**:...
- **临时表空间**: 用于存储临时数据,这些数据在会话结束时会被自动清除。 - **永久表空间**: 存储数据库中的永久数据,如表、索引等。 #### 35. 系统表空间 - **系统表空间**: Oracle数据库中默认的表空间,用于...
- **Memory**:所有数据存储在内存中,适合临时表。 4. **性能优化**: - **EXPLAIN分析**:理解查询执行计划,找出潜在性能瓶颈。 - **慢查询日志**:记录执行时间过长的查询,便于分析优化。 - **索引优化**...
- **Sorts**:排序操作次数,大量排序可能消耗大量内存或导致临时表空间使用增加。 - **Logons**:登录次数,频繁的登录可能导致额外的开销。 - **Executes**:SQL语句执行次数,反映数据库处理的请求量。 - **...
2. 表空间管理:分配和管理磁盘空间,包括系统表空间、用户表空间和临时表空间。 3. 索引:提高查询性能的重要手段,包括B树索引、位图索引等。 4. 备份与恢复:理解冷备份、热备份、增量备份策略,以及使用RMAN进行...