OracleUNDO
UNDO作用
- 数据的回滚
- 一致性读
- 表的闪回(事务,查询的闪回....)
- 失败会话的恢复
SQL> rollback; 回滚的过程就是从回滚段里拿到刚刚执行的这条语句产生的回滚,然后应用到以前的数据块上. 回滚的前提是没有commit.一旦提交了,就不能回滚了. 如果网络中断,会话中断,oracle会强制回滚 SQL> insert into t1 values('b'); 1 row created. SQL> select * from t1; X - a b SQL> rollback; Rollback complete. SQL> select * from t1; X - a |
|||||||||||||||
为了保证数据读取的一致性,获取数据的结果是发出sql语句的时间一致。如果数据块上的数据已经被改变了,oracle就会用到回滚. 如:9点01分发出的sql查询,数据在9点03分已经修改了,但是这时候oracle返回的依然是9点01分时候的数据的值,这个值是从回滚段里面读取的.
不小心把表的数据修改了,这是你可以去查询在某个时间数据块的值.
如果会话意外终止,可以使用undo将失败的会话恢复. |
|||||||||||||||
|
Undo的产生
|
|||||||||||||||
|
Undo V.S. Redo
|
|||||||||||||||
|
修改一个数据块时,oracle里纠结做了什么? 1、发出一条SQL语句,将员工1234的工资更新为10,从下面可以看出原来工资为5.
2、ORACLE会从内存里找1234员工的数据块,如果没有内存里没有,就从磁盘上读取数据块到内存中.
3、找回滚段数据块(来装之前的数据),同样,如果内存里面没有,就从回滚段数据文件里读取到内存中.
4、oracle将5这个数据块写到回滚段里.
5.因为我修改了回滚段数据块,产生了undo的redo.
6.将原始数据块从5改为10.
7.原始数据块修改后,产生了本身数据块的redo
|
|||||||||||||||
|
Undo 表空间
SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO--------------自动管理undo回滚段 undo_retention integer 900--------------undo数据默认保留的时间(过期的数据会被覆盖) undo_tablespace string UNDOTBS1 SQL> select file_name,bytes from dba_data_files where tablespace_Name='UNDOTBS1'; FILE_NAME -------------------------------------------------------------------------------- BYTES ---------- /u01/app/oracle/oradata/gaga01/undotbs01.dbf 78643200 |
|||||||||||||||
|
自动管理回滚段表空间
|
|||||||||||||||
|
Undo 数据的保留时间
|
|||||||||||||||
|
Undo 表空间的损坏
|
OracleUNDO的更多相关文章
随机推荐
- JavaScript正则表达式基础知识汇总
一.创建正则对象: 1.构造函数RegExp创建正则对象 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串 2.使用正则直接量 var patte ...
- Java并发编程(九):拓展
java多线程死锁理解 Java多线程并发最佳实践 Spring与线程安全 HashMap与ConcurrentHashMap 关于java集合类HashMap的理解 , 数据结构之 ...
- 测试-一个unity的编译bug,初始化器
.net C#下测试: public class Class1 { public bool toggle1 = true; public bool toggle2; } 一个结构类Class1,对里面 ...
- FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
一个电路能跑到多少M的时钟呢? 这和电路的设计有密切联系(组合逻辑的延时),我们知道电路器件都是由一定延迟的,所以信号的仿真很重要.如果延迟时间大于时钟,就会导致时序违例,出现逻辑错误. 项目要求30 ...
- url中的查询字符串的参数解析
<script> // 查询字符串函数location.search;"?q=javascript" function getQueryStringArgs(){ // ...
- jquery的input:type=file实现文件上传
<!DOCTYPE html> <html> <head> <title>html5_2.html</title> <style> ...
- linux学习笔记5--命令rmdir和rm
昨天学习了创建目录的命令mkdir ,接下来学习一下linux中删除文件和目录的命令: rm命令. rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根 ...
- PHP从千千静听服务器获取lrc歌词
<?php //转载请注明出处 uenucom function SingleDecToHex($dec) { $tmp=""; $dec=$dec%16; if($ ...
- shell程序练习
#!/bin/sh通知采用bash解释.如果在echo语句中执行shell命令date,则需要在date命令前面加符号&: 编辑完文件之后不能立即执行该文件,需要给文件设置可执行权限.chmo ...
- git三种模式及常用命令
Git的三种重要模式,分别是已提交.已修改.已暂存. 已提交(committed):表示数据文件已经顺利提交到Git数据库中. 已修改(modified):表示数据文件已经被修改,但未被保存到Git数 ...










