Oracle undo我们需要掌握什么】的更多相关文章

                                                             Oracle undo 镜像数据探究  今天是2013-08-18,隔别一周的网络终于可以上网了.幸福啊.  我们都知道,undo是为了保证一致性读的,也就是说你在对更改的数据但是没有提交,那么其他session是无法查看到你更改的内容的,如果对方  进行读取数据,依然是之前的数据,undo就是保存了数据的前镜像.看完我写的这篇文章之后,你就知道undo是怎么保存前镜像的以及…
<Oracle undo我们需要掌握什么> 引言:undo 是Oracle数据库的重要组件,刚入门的朋友建议要把undo的原理和机制理解明白,尤其是和redo组件的区别和联系.了解undo就相当于对oracle恢复有了一半的理解.下面我们开始学习Oracle undo需要掌握什么! 更多的精彩文章请垂询 www.leonarding.com blog,欢迎大家来探讨交流 “分享技术~成就梦想” 一 大话UNDO       Hi 大家好,我是Oracle 的无敌小安[中文名(small und…
Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要指定一个UNDO 表空间. 如果设为manual,系统启动后使用rollback segment方式存储undo信息.如果系统没有指定undo_management,那么系统默认以manual方式启动,即使设置了auto方式的参数,这些参数将被忽略. 当实例启动的时候,系统自动选择第一个有效的und…
1.Undo是干嘛用的?   在介绍undo之前先说一下另外一个东西 transaction ,翻译成交易或事务.我们在进行一个事务的过程中需要申请许多资源,一个复杂的事务也需要很多步来完成.那么一个复杂的事务是只有两个结果,要么成功,要么失败(相当于从来没发生过). 一个很典型的列子,银行转账,其实其需要两步操作,第一步先将你账户上的钱减去,第二步把被转账户的钱加上,(先减后加,出了问题银行不吃亏.呵呵!)这样就是一个完整的事务.如果执行了一半,你的钱减了,被转账户的钱没加上,这个时候事务就要…
Undo就是用来记录保存事务操作过程中的数据,如果事务发生错误,可以之前的数据进行填补. Undo segment 是保存在表空间上的.Undo 大小是固定的,既然是固定的也就是有限的.如果保存的记录非常多,那么它就会被占满,新记录的数据会覆盖掉最早的数据. 在Oracle数据库中,undo主要有三大作用:提供一致性读(Consistent Read).回滚事务(RollbackTransaction)以及实例恢复(Instance Recovery). 一致性读是相对于脏读(DirtyRead…
一. 概述 undo 保存的是旧数据.比方,你改动了一条记录将A列abc改动为def,那么undo里面保存的就是abc.目的有两个:1. 假设你的事务没有提交,可是已经将A列改动,那么别人读取这条数据的时候.不应该可以看到你改动后的内容def.应该还仅仅能看到abc.这个时候就须要去读取undo.才干取到abc. 2. 假设你的事务后来失败,须要将A列由改动过的值def回退到之前的值abc,abc也要从undo里面去取. 这篇文章,简要介绍一下读一致性(也就是别人无法读取到你改动的未提交的内容)…
在Toad中发现undo表空间undotbs1使用量已经达到100%,但是奇怪的是数据库并没有hang住,依然可以正常运转 通过Oracle提供的EM查看undotbs1表空间的使用,也达到了78.8 在上一篇文章中,我们介绍了undo表空间中区的3种状态:ACTIVE.EXPIRED.UNEXPIRED.在对其概念理解后,个人认为在未设置undo表空间retention guarantee的情况下,只要ACTIVE状态的区未达到100%,皆不会造成数据库hang住. 那么Toad中undotb…
Oracle 10gr2的后续版本中添加了UNDO信息最短保留时间段自动调优的特性,不再仅仅依据参数UNDO_RETENTION的设定,其调优原则如下:1. 当UNDO TABLESPACE为 fixed- size,Oracle将根据表空间的大小和历史使用情况,自动调整undo信息保存时间,同时忽略 undo_retention的值,除非 undo_retention的guarantee 特性被启用.2. 当UNDO TABLESPACE为AUM时,Oracle将动态调整撤销信息最短保留时间为…
对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件:我们常常会忽略对它的监控,这会导致UNDO表空间可能出现以下问题:1).空间使用率100%,导致DML操作无法进行.2).告警日志中出现大量的ORA-01555告警错误.3).实例恢复失败,数据库无法正常打开. 一.对Oracle…
由于某次不小心操作,在切换表空间时没有成功,由于把undo的配置参数 undo_management值设置为MANUAL所以在启动数据库时没有报任何错误,但是给表插入数据时报错了,回滚段不可用的错误.然后查询了错误原因. 1 首先看数据库中undo信息 SQL> show parameter undo; NAME TYPE VALUE------------------------------------ ----------- ------------------------------und…
UNDO 数据操纵 数据操纵语言(DML)由以下SQL语句组成: INSERT,DELETE,UPDATE,MERGE DML始终作为事务处理的一部分执行,它可以: 使用Rollback命令执行回退 使用Commit命令执行提交 还原数据 还原数据是: 原始的.修改之前的数据副本 是针对更改数据的每个事物处理所捕获的 至少保留到事物处理结束 用于支持: -回退操作 -读取一致性查询 -闪回查询.闪回事物处理和闪回表 -从失败的事物处理中进行恢复 每个事物处理只分配给一个还原段 一个还原段可以同时…
查询undo表空间状态 "Bytes(M)" FROM dba_undo_extents GROUP BY tablespace_name, status; Undo表空间的状态(STATUS)有三种取值------- ACTIVE, EXPIRED, UNEXPIRED,  他们的含义是: ACTIVE:  正在使用的undo表空间区域, 例如: 正在执行的没有commit的dml涉及的数据所占用的区域.   状态为ACTIVE的区域不可以被新数据覆盖 EXPIRED: 过期数据, …
Undo是干嘛用的?          简单理解,就相当于Windows下的回收站.        你对数据执行修改时,数据库会生成undo信息,这样万一你执行的事务或语句由于某种原因失败了,或者如果你用一条ROLLBACK语句请求回滚,就可以利用这些undo信息将数据放回到修改前的样子.而redo用于在失败时重放事务(即恢复事务),undo则用于取消一条语句或一组语句的作用.                                     在介绍undo之前,先说一下另外一个东西 tr…
redhat:清空回收站 rm -rf  /home/登录用户名/.Trash 例子:rm -rf /home/.Trash-root df命令可以显示目前所有文件系统的可用空间及使用情形: 例子:df -h du:查询文件或文件夹的磁盘使用空间 例子:du -h --max-depth=1 /home/oracle/oracle/product/10.2.0/db_1/oradata/ du -sh /home/oracle/oracle/product/10.2.0/db_1/oradata…
1. REDO(重做信息) Redo log file(重做日志文件),是数据库的事务日志. Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日志文件,这两类重做日志文件用于实例失败或是介质失败时数据的恢复: 如果数据库所在主机突然断电导致实例失败,则Oracle会使用在线重做日志将系统恰好恢复到掉电之前的时间点: 如果硬盘出现故障(即介质失败),Oracle会使用归档重做日志和在线重做日志将硬盘上的数据恢复到适当的时间点: 另外如果你无意地上除…
Table Space Query select SEGMENT_NAME,bytes/1024/1024,a.* from dba_segments a UNDO Table Space Size Full 数据库重启SQL> shutdown abortORACLE 例程已经关闭. SQL> quit从 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionWith the Partitioning, O…
过程:开始一个事务--通过事务信息找到UNDO块头的所在的段名及数据文件号等--转储UNDO header--在事务表中对应槽位找到前镜像dba--转储数据块--找到对应记录得到bdba--转储数据块 1)首先更新几条数据,但是不进行commit如下: SYS@ prod>select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ----------…
使用该脚本可收集与undo相关的信息,在undo表空间出问题时可使用该脚本来诊断. 使用方法: 1.将脚本拷贝到服务器,创建文件保存,文件名可随意取,例如:diag.out 2.以sys用户登录数据库,执行脚本.执行方式为: SQL> @diag.out spool Undo_Diag.out ttitle off set verify off set termout off set trimout on set trimspool on REM REM --------------------…
客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的UNDO表空间已经手动扩展到了25GB,且一直在增加,为了UNDO表空间能及时的被释放,UNDO表空间对应的所有数据文件自动扩展都被关闭.查询DBA_UNDO_EXTENTS发现在UNDO表空间中当前没有ACTIVE的EXTENT存在,UNEXPIRED的占到总空间的60%,有30%是EXPIRED…
UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是临时表可能是因为这两个表空间都不会永久保存数据的原因. ------------------------------------------------------------------------- oracle undo表空间 undo表空间用于存放undo数据,当执行DML操作(insert…
查看oracle undo segment段的信息: SELECT T1.USN, T2.NAME, T1.STATUS, T1.LATCH, T1.EXTENTS, T1.WRAPS, T1.EXTENDS FROM V$ROLLSTAT T1, V$ROLLNAME T2 WHERE T1.USN = T2.USN; 检查事务使用undo segment的情况: SELECT s.username, s.sid, pr.PID, s.OSUSER, s.MACHINE, s.PROGRAM,…
故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: 2. 有较大事务没有收缩或者没有提交所导制: 说    明:本问题在ORACLE系统管理中属于比较正常的一现象,日常维护多注意对磁盘空间的监控. 备    份: (如果没有在线事务,可以不做,关闭监听)   $>exp vas/vas file=/opt/oracle/data_1.dmp,/opt…
Undo的作用 数据的回滚 一致性读 表的闪回(事务,查询的闪回..) 失败会话的恢复 回滚rollback操作 SQL> archive log list; ORA-01031: 权限不足 SQL> conn /as sysdba 已连接. SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 45 下一个存档日志序列 47 当前日志序列 47 SQL> creat…
产生问题的原因主要以下两点:1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况:2. 有较大事务没有收缩或者没有提交所导制:说明:本问题在ORACLE系统管理中属于比较正常的一现象,日常维护多注意对磁盘空间的监控. UNDO表空间介绍UNDO表空间用于存放UNDO数据,当执行DML操作(INSERT,UPDATE和DELETE)时,oracle会将这些操作的旧数据写入到UNDO段,在oracle9i之前,管理UNDO数据时使用(Rollback Segment)完成…
概览: 1.Oracle 内存管理 2.Oracle 数据库启动关闭 3.Oracle 参数文件 4.Oracle 控制文件 5.Oracle redo日志文件 6.Oracle undo表空间管理 7.Oracle 普通表空间和数据文件 8.Oracle 临时表空间 9.Oracle 锁管理 10.Oracle用户管理 11.Oracle等待事件 1.Oracle 内存管理 1.1内存自动管理 11g:AMM 10g:ASMM 1.2修改sga大小 SQL> alter system set…
UNDO内存结构剖析 一.场景 Oracle的 C事物从早上9:00开始读取A表全部10w行数据,这个而读取需要经历5分钟.在9:01的时候,B事物将A表删除100条记录,那么,当9:05的时候,事物C读取完成,能读取到多少条记录? 其实,按照一致性原则,需要读取10w行记录,而不是9900行.这个,oracle将如何实现呢? 二.Undo的内存结构原理    只要oracle undo空间足够大,undo能保存所有数据库的更改,能使表数据闪回到任意时刻.如何做到这一点,需要从oracle的un…
oracle高级知识(1) ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo 已经不存在了, 这个时候就会报ORA-01555的错误. 有关CR 块,参考我的Blog: CR (consistent read) blocks create 说明 http://blog.csdn.net/xujinyang/article/details/6823237 老熊Blog上的一个链接: http://www.laoxio…
赃读 对于对象额同步异步方法,我们在设计自己的程序的时候,一定要考虑的问题整体,不然会出现数据不一致的错误,很经典的就是赃读(dityread) 示例: ​ package com.nbkj.thread; public class DityRead { private String username = "hsj179540"; private String password = "123"; public synchronized void setValue(S…
转自:http://blog.csdn.net/tianlesoftware/article/details/6261475 Oracle 不同故障的恢复方案 http://blog.csdn.net/tianlesoftware/archive/2010/12/30/6106178.aspx Oracle undo 表空间管理 http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5689558.aspx 上面的2篇Blog 讲到了Ora…
故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:本问题在ORACLE系统管理中属于比较正常的一现象,产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: 2. 有较大事务没有收缩或者没有提交所导制: 解决步骤: 1. 查看所有UNDO表空间状态,等待原UNDO表空间所有UNDO SEGMENT OFFLINE select t.segment_name,t.tablespace_name,t.seg…