文章目录
1 概述
1. 'redo':重做
(1) 重新执行之前的操作('防止数据丢失')
(2) 通俗理解:'没搞成,重搞一遍'
2. 'undo':撤销
(1) 取消之前的操作('防止数据不一致')
(2) 通俗理解:'搞了后悔,之前不算'
2 区别
redo | undo |
Record of | How to reproduce a change | How to undo a change |
Used of | Rolling forward database changes | Rollback, read consistency, flashback |
Stored in | Redo log files | Undo segments |
Protects against | Data loss | Inconsistent reads in multiuser systems |
| |
2.1 redo 重做
1. 'redo' 重做日志文件
(1) 在线重做日志 'online logs'
(2) 归档重做日志 'archived logs'
2. 用于 '数据恢复'
(1) 数据修改,commit 后(如:DML、DDL),不会立即写入 '数据文件'
(2) 假设出现断电或磁盘异常的情况下,可通过 '重做日志文件' 进行恢复,重写
3. 相关操作
select * from v$logfile; -- 日志文件
select * from v$log; -- 日志明细
alter system switch logfile; -- 日志切换,触发 后台进程:lgwr
2.2 undo 撤销
1. 'undo' 撤销
(1) 没有进行 commit 操作
2. 用户 '撤销操作'
(1) rollback
(2) 通俗理解:ctrl + z
3. 相关操作
select * from v$undostat; -- undo 数据块信息
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ -----------
undo_management string AUTO (管理模式,手动 | 自动)
undo_retention integer 900 (undo 上的数据不能被覆盖时间:秒)
undo_tablespace string UNDOTBS1 (正在被使用的 undo 表空间)