Oracle OCP认证考试题目详解082系列第5题
一、考察的知识点摘要
本题考察 Oracle数据库临时撤销(Temporary Undo)机制 以及临时表操作时UNDO数据的存储位置,核心是对临时撤销配置下,临时表UPDATE操作产生的UNDO存储逻辑的理解。
二:英文题目和英语选项和答案
Question :
A database is configured to use automatic undo management with temporary undo enabled.
An UPDATE is executed on a temporary table.
Where is the UNDO stored?
Options :
A. in the undo tablespace
B. in the SYSAUX tablespace
C. in the SGA
D. in the PGA
E. in the temporary tablespace
Correct Answer:E
三:题目和选项的翻译,答案
题目 :
某数据库被配置为使用自动撤销管理且启用了临时撤销。
对一个临时表执行UPDATE操作。
撤销数据存储在哪里?
选项 :
A. 在撤销表空间中
B. 在SYSAUX表空间中
C. 在系统全局区(SGA)中
D. 在程序全局区(PGA)中
E. 在临时表空间中
答案:E
四:题目解析
当Oracle数据库启用临时撤销(Temporary Undo)功能时(通过TEMP_UNDO_ENABLED参数控制,启用后该参数值为TRUE),针对临时表 执行的DML操作(如本题的UPDATE)产生的UNDO数据,不再存储到传统的"撤销表空间(undo tablespace)",而是存储到**临时表空间(temporary tablespace)**中。原因如下:
- 临时表的核心特性是**"会话私有、临时有效"**,其操作产生的回滚需求(UNDO)仅需满足当前会话内的临时一致性,无需长期持久化;
- 临时表空间本身的设计目标就是存储会话级的临时数据(如排序段、临时表数据等),天然适配临时UNDO的"临时性"需求。
对其他选项的排除逻辑:
- A. undo tablespace :仅用于存储持久化表(非临时表)操作的UNDO;临时表启用临时撤销后,UNDO不再写入此表空间。
- B. SYSAUX tablespace:是系统辅助表空间,用于存储数据库元数据(如AWR报告、审计信息等),与UNDO存储无直接关联。
- C. SGA(System Global Area) :是Oracle实例的内存共享区,用于存储高速缓存、数据字典缓存等;UNDO是以磁盘文件形式存于表空间(属于持久化存储),SGA仅为内存区域,不直接存储UNDO数据。
- D. PGA(Program Global Area) :是服务器进程的私有内存区,用于存储进程私有的执行上下文等;同样属于进程级内存,不承担UNDO数据的存储职责。
五:考察的知识点详情
1. 临时撤销(Temporary Undo)的概念
Oracle引入"临时撤销"是为了优化临时表操作的性能:在传统模式下,临时表操作产生的UNDO会被写入undo表空间,但临时表的UNDO属于"会话内临时回滚",无需长期持久化。将这部分UNDO转移到临时表空间存储,可减少undo表空间的I/O压力与空间占用。
2. 临时撤销的启用条件
需同时满足两个前提:
- 数据库级别启用自动撤销管理 (通过参数
UNDO_MANAGEMENT=AUTO配置,默认已开启); - 显式设置
TEMP_UNDO_ENABLED=TRUE(该参数调整后,需重启数据库实例或切换实例生效)。
3. 不同表类型的UNDO存储逻辑差异
| 表类型 | 临时撤销启用前(UNDO存储目标) | 临时撤销启用后(UNDO存储目标) |
|---|---|---|
| 持久表 | 写入undo表空间 | 写入undo表空间 |
| 临时表 | 写入undo表空间 | 写入临时表空间 |
最后,各位学习者,点个关注吧!我们一起成长,一起成为大佬!