当前位置:网站首页>oracle业务表的数据发生增删改,该表的索引会写redo,undo吗?
oracle业务表的数据发生增删改,该表的索引会写redo,undo吗?
2022-08-10 06:29:00 【刘贵宾】
oracle数据库对于表的增删改肯定要写redo,undo。当表的数据发生增删改时,这个表的索引oracle会自动维护。那请教下,oracle对索引的这种“维护”是否也会写redo,undo呢?不考虑人工增加,删除、rebuild、修改索引这些情况。
其他答案1:
当我们插入一条数据时,首先这个动作会被记录到redo log 中,操作也会被记录到到undo ,undo本身的动作也会做为一条数据被记录到redo log ,插入一条数据,索引(indexes)会发生变化,索引的变化也会做一条数据被记录到redo log
其他答案2:
索引维护也会产生相应的重做日志的
这样才能保证在应用日志恢复的时候相应的索引也会被更改
其他答案3:
当然会。
记住一个本质原则,对于涉及到块更改操作均会记录redo信息。
你想想延迟块清除,只是数据库中的事务槽的更改都会记录redo(某些情况下select会导致redo产生的本质原因)更不要说是维护索引的相对“重量级”操作。
其他答案4:
自己又想了想,个人认为随着表的增删改而自动更新索引的操作不会记录redo,undo。(不考虑人工增加,删除、rebuild、修改索引这种DDL情况。)
因为:索引的更新是自动根据表的增删改而发生,如果索引或索引相关变更信息也记录redo和undo,那么在做回滚和前滚的时候,索引自动维护机制和前滚(回滚)中登记的索引变化更新会发生冲突。
其他答案5:
我觉得会的。说下我的理解:在oracle里,索引和数据分属不同的segment,底层都是block,删除一条数据就要维护索引树,都需要对block进行操作,为了实现崩溃恢复,必然需要把这些变动都写入redo log,而且我猜,跟数据块的redo一并写入的,如果分属两个原子操作,那又要保证这两个操作的事务性。
其他答案6:
自己简单测试一下,一目了然,为啥要猜,凭感觉?
SQL> create table t1 (id number);Table created.SQL> insert all 2 into t1 values(1) 3 into t1 values(2) 4 into t1 values(3) 5 select 1 from dual;3 rows created.SQL> commit;Commit complete.SQL> create index idx_t1 on t1(id);Index created.SQL> select current_scn from v$database;CURRENT_SCN----------- 46939397SQL> update t1 set id=5 where id=3;1 row updated.SQL> commit;Commit complete.SQL> select current_scn from v$database;CURRENT_SCN----------- 46939443SQL> alter system dump logfile '/u01/app/oracle/oradata/HKORA/onlinelog/o1_mf_3_j7z2qcb9_.log' scn min 46939397 scn max 46939443;System altered.SQL> @tracefileVALUE------------------------------------------------------------------------------------------------------------------------------------------------------/u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_15168.trcSQL> select object_id from dba_Objects where object_Name='T1' and owner='DEVIN'; OBJECT_ID---------- 82502SQL> select object_id from dba_Objects where object_Name='IDX_T1'; OBJECT_ID---------- 82503
CHANGE #3 CON_ID:0 TYP:2 CLS:1 AFN:8 DBA:0x0200240c OBJ:82502 SCN:0x0000000002cc3cbe SEQ:1 OP:11.5 ENC:0 RBL:0 FLG:0x0000
CHANGE #2 CON_ID:0 TYP:0 CLS:1 AFN:8 DBA:0x02002413 OBJ:82503 SCN:0x0000000002cc3cd7 SEQ:1 OP:10.4 ENC:0 RBL:0 FLG:0x0000
边栏推荐
猜你喜欢
[Reinforcement Learning] "Easy RL" - Q-learning - CliffWalking (cliff walking) code interpretation
强化学习_10_Datawhale稀疏奖励
高质量WordPress下载站模板5play主题
力扣(LeetCode)221. 最大正方形(2022.08.09)
动态规划——从0-1背包问题到leetcode正则匹配
【8月9日活动预告】Prometheus峰会
BUUCTF Notes (web)
全网可达,交换机和路由器的配置,vlan
Grammar Basics (Judgment Statements)
1413. Stepwise Summation to Get Minimum Positive Numbers
随机推荐
ESP32 485风速
强化学习_06_pytorch-DQN实践(CartPole-v0)
Qt使用私有接口绘制窗口阴影
ACPI知识(高级配置和电源接口)
BUUCTF Notes (web)
I would like to ask you guys, when FLink SQL reads the source, specify the time field of the watermark. If the specified field is in the grid
Chapter 11 Database Design Specifications [2. Index and Tuning] [MySQL Advanced]
排序二叉树代码
3.事务篇【mysql高级】
软件测试面试题避雷(HR面试题)最常见的面试问题和技巧性答复
Qt借助隐藏控件和QSS绘制重复元素
动态代理-cglib
Make a boot floppy and boot with bochs emulator
2022河南萌新联赛第(五)场:信息工程大学 J - AC自动机
2022 Henan Mengxin League Game (5): University of Information Engineering F - Split Turf
关于Qt高频率信号槽合并的误解和方案
高质量WordPress下载站模板5play主题
神经网络可视化有3D版本了,美到沦陷 已开源
裸辞—躺平—刷题—大厂(Android面试的几大技巧)
Text-to-Image最新论文、代码汇总