- 浏览: 183082 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wsdst497:
chrome 版本号39 新窗口还是会被屏蔽
超链接实现新窗口打开很容易 -
zhanyeting:
[b][/b]
ajax 页面无刷新更改数据库中的内容 -
ewf_momo:
...
STRUTS 2 -
gaoxingang2008:
排一下版 太乱了
javascript -
javsky:
经验值得借鉴,项目还是不错的~我们公司最近也在做相关的项目,物 ...
IT个人年终工作总结[1]
Rollback是一个代价昂贵的操作,如果一个系统的事务回退率过高,应该检查系统是否正常或者程序设计思路是否存在问题。查询数据库启动依赖的
事务回退率,如果发现太高,一定要引起重视。
--查询回退率的sql
SELECT NAME, VALUE
FROM v$sysstat
WHERE NAME IN ('user commits', 'transaction rollbacks');
关于回滚段的数据,如果是delete操作,则回滚段将回记录整个行的数据;如果是update,则只记录被修改了的字段的变化前的数据(前映像);如果是insert,则只记录插入记录的rowid。所以,假如commit,那么回滚段中简单标记该事务已经提交;假如rollback,则操作是 delete的话,把回滚段中的数据重新写回数据块,操作是update的话则把变化前的数据修改回去,操作是insert的话则根据rowid把该记录删除。这个过程是保障事务的完整性,保障数据不会丢失。
一致性读(consisitent reads) Oralce的查询集是根据时间点来判定的。Oracle内部通过系统改变号SC作为相对时间点的标准,任何对数据库的改变都会产生SCN,对数据块的数据改变的时候会把该改变所对应的SCN记录在块中。假设查询开始的时候SCN为T,则在查询所扫描的数据块中,如果数据块的COMMIT SCN小鱼T,则查询接受该数据,如果COMMIT SCN大于T或者说还没有产生COMMIT SCN,则查询会尝试去回滚段中查找数据。这保证了数据的读取时间点的一致性。
在通过回滚段中获取数据的时候,本质上是把数据缓冲区中的数据块做一个拷贝,然后将回滚段中记录的内容恢复到该块中,然后查询使用这个块来进行读取。
系统回滚段和延迟回滚段
SYSTEM回滚段是创建在系统表空间中,主要用于系统级的事务和分配普通事务于其他回滚段上。当手工创建数据后需要创建普通回滚段之前必须首先创建系统回滚段。按oracle文档说,当普通事务异常多的事情可能会使用系统回滚段的情况。正常情况下,系统回滚段主要用于两个方面:一是系统事务,不如针对数据字典的操作的truncate table 和 drop table。如果truncate or drop table的过程中没有成果,则系统会根据系统回滚段中的数据字典操作信息对该DDL操作进行回退。另一个方面,就是延迟回滚段(Deferred Rollback Segment)。延迟回滚段表示,当我们使一个表空间OFFLINE之后,由于表空间不可用,这个时候若有事务数据位于该空间并执行回滚命令,在client看起来该事务已经回滚,但对于数据块来说回滚并没有真正完成,这个时候数据库将该回滚信息写入系统回滚段(这就是延迟回滚段),等表空间重新ONLINE的时候,数据块从系统回滚段中将回滚信息写入表空间。
回退段的设置和管理
Oracle9i之前需要手动设置回退段,我们需要考虑如下问题:
1.系统并发事务数有多少
2.系统是否存在大查询或者大事务,是否频繁
3.能提供给系统回滚段的表空间的磁盘空间是多少
9i的UNDO TABLESPACE
从9i开始,推荐使用UNDO TABLESPACE,系统自动管理回滚段
Sql> show parameter undo
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
UNDO TABLESPACE变的很大,我们不能缩小,这个时候我们需要考虑创建新的UNDO TABLESPACE,然后换到新的表空间。这时即使UNDO表空间有事务也可以切换,只不过不能立即删除该表空间,切换之后等到原来的表空间中所有的事务出力完毕,并且达到undo_retention的时间后,就可以drop原来的UNDO表空间。
SQL> alter system set undo_tablespace = undotbs02;
System altered.
切换了UNDO表空间后应该修改pfile或者spfile,使得下次启动应用新的UNDO表空间。
回滚段著名的ORA-01555问题
从应用角度来看ORA-01555
1.查询执行时间太长。首先是优化查询,然后考虑在数据块不繁忙的时候运行,最后考虑加大回滚段。
2.过渡频繁的提交。把能够成批提交的单条事务改成成批提交
3.exp的时候使用而来consistent = y. 这个参数主要是为了保证在exp的时候使得所有的到处的表在时间点上具有一致性,避免存在主外键关系的表由于不同的时间点的不一致而破坏了数据的完整性。建议该操作在系统空闲的时候进行。
4.由于回滚段回缩导致回滚段还没有循环使用的情况下就出现了回滚段中找不着数据的情况。只能加大回滚段增大optimal设置。
UNDO scripts
查询数据块当前某个session的事务所使用的回滚段大小
SELECT b.SID, a.xidusn, a.xidusn
FROM v$transaction a, v$session b
WHERE a.addr = b.taddr
回滚段表空间中的一个数据文件丢失或者损害的恢复方法
…………….
由于对应的undo block/或者undo header slot信息被覆盖,导致consistent read不能完成, 系统会报出ora-01555的错误信息..
出现这种情况的原因可能有以下几种.
1. 对于早期的manual undo, 可能是由于系统设置了optimal size, rollback segment wrap 导致部分undo信息被丢弃..
2. 由于undo retention 设置的时间小于sql执行的长度,这样从这条sql开始时候其他session产生的部分undo由于retention的原因被覆盖,导致无法完成consistent read.
3. 由于commit over fetch loop. 导致transaction slot 被覆盖,无法完成consistent read ..
ORA-01555错误浅析-- http://www.hellodba.com/Doc/ORA-01555_analysis(1).htm
总结出以下方法来解决1555错误问题:
1、扩大回滚段
因为回滚段是循环使用的,如果回滚段足够大,那么那些被提交的数据信息就能保存足够长的时间是那些大事务完成一致性读取。
2、增加undo_retention时间
在undo_retention规定的时间内,任何其他事务都不能覆盖这些数据。
3、优化相关查询语句,减少一致性读。
减少查询语句的一致性读,就降低读取不到回滚段数据的风险。这一点非常重要!
4、减少不必要的事务提交
提交的事务越少,产生的回滚段信息就越少。
5、对大事务指定回滚段
通过以下语句可以指定事务的回滚段:
SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment
;
给大事务指定回滚段,即降低大事务回滚信息覆盖其他事务的回滚信息的几率,又降低了他自身的回滚信息被覆盖的几率。大事务的存在,往往是1555错误产生的诱因。
6、使用游标时尽量使用显式游标,并且只在需要的时候打开游标,同时将所有可以在游标外做的操作从游标循环中拿出。
当游标打开时,查询就开始了,直到游标关闭。减少游标的打开时间,就减少了1555错误发生的几率。
发表评论
-
Oracle 10g创建表空间的完整步骤详解
2014-06-25 20:06 697Oracle 10g数据库中,当在数据库中创建用户时,基于 ... -
查询是否有重复
2014-06-15 10:20 576select t.id, count(t.id) as n ... -
查询oracle表的信息(表,字段,约束,索引)
2014-05-12 15:41 811查询oracle表的信息(表,字段,约束,索引)1、查询出所有 ... -
oracle
2014-03-18 09:33 5301、 Broken()过程更新一个已提交的工作的状态,典型地是 ... -
oracle ORA-01033错误的解决方案
2014-02-23 22:09 801oracle ORA-01033错误的解决方 ... -
sql loader(sqlldr)的用法
2012-09-19 10:48 2601sql loader可以把一些以文 ... -
Oracle ORA-01555 快照过旧 说明 .
2012-09-19 10:37 1180http://blog.csdn.net/tianlesoft ... -
Oracle 绑定变量
2012-09-18 17:58 762oracle 中,对于一个提交的sql语句,存在两种可选的解析 ... -
Oracle ADDM 自动诊断监视工具 介绍
2012-09-18 17:28 3549Oracle AWR 介绍(AWR -- Automatic ... -
Oracle undo 表空间管理 .
2012-09-18 14:47 10352Oracle 的Undo有两种方式: 一是使用undo 表空间 ... -
Oracle undo 管理
2012-09-18 11:14 1218在开始之前,我们先来 ... -
RedoLog Checkpoint 和 SCN关系
2012-09-17 11:04 2022一. Redo log ... -
ORA-24324:未初始化服务句柄,不允许此值,正在关闭 - 不允许连接
2012-09-17 10:02 1201ORA-24324:未初始化服 ... -
spool常用的设置
2012-09-11 15:57 1196spool常用的设置set colsep' '; //域 ... -
Oracle DUPLICATE复制数据库
2012-09-08 13:05 1184一、DUPLICATE复制数据库1.使用duplicate命令 ... -
rman各种故障背景下的恢复方法
2012-08-07 18:11 962各种故障背景下的恢复方法 丢失或损 ... -
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, (
2012-08-06 15:44 13296RMAN-03009: backu RMAN> b ... -
RMAN部分命令
2012-08-03 17:26 9091、切换服务器归档模式,如果已经是归档模式可跳过此步:%sql ... -
Oracle SQL性能优化
2012-07-20 16:03 681(1) 选择最有效率的表名顺序(只在基于规则的优化器 ... -
impdp中remap_datafile的测试
2012-07-17 17:56 5688remap_datafile目前我的理解是一定是用在全库导出和 ...
相关推荐
oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。
在Oracle数据库系统中,"重做undo表空间"是一个至关重要的概念,它是数据库事务处理的基础。...通过对undo表空间的深入学习和实践,我们可以更好地应对各种事务处理场景,确保数据的一致性和可用性。
总结来说,Oracle9i的学习笔记涵盖了数据库的基本创建与维护,数据字典的管理和查询,以及数据库状态控制和参数调整,这些都是数据库管理员必备的基础知识。虽然Oracle9i版本较为陈旧,但其核心概念和操作在新的...
以下是对Oracle学习笔记中提到的一些关键知识点的详细解释: 1. **SQL执行顺序**: SQL语句的执行顺序是:`FROM` -> `WHERE` -> `SELECT` -> `GROUP BY` -> `HAVING` -> `ORDER BY`。首先从`FROM`子句开始,确定...
Oracle数据库中的UNDO段是其事务处理机制的关键组成部分,它主要负责存储事务对数据所做的更改的旧值,以便于回滚操作和...通过学习和实践,可以更好地管理和优化UNDO表空间,从而提高整个数据库系统的稳定性和效率。
在这个"Oracle数据库学习 06Days"的学习资料中,我们可以期待深入探索Oracle数据库的各个方面。 1. **数据库基础** - 数据库概念:了解数据库是什么,以及它如何存储和管理数据。 - Oracle版本:Oracle的不同版本...
Oracle 学习总结 Oracle 是一种关系数据库管理系统,由 Larry Ellison 和 Bob Miner 于 1977 年创立。它是一种对象关系数据库管理系统,支持多种编程语言,包括 Java、Python、C++ 等。 一、创建 Oracle 数据库...
### Oracle原理学习笔记知识点概述 #### 一、Oracle的工作机制及体系结构 ##### 实例概念 - **定义**: Oracle在运行时会在内存中开辟一个区域,即系统全局区(SGA),用于缓存从磁盘读取的数据。同时,还需要一些...
1. 为有意从事oracle dba工作人员提供学习指导。 2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; ...
│ oracle10g系统管理之UNDO表空间 - lvhuiqing的专栏 - CSDN博客.mht │ oracle10g系统管理之序列 - lvhuiqing的专栏 - CSDN博客.mht │ oracle10g系统管理之序列 - lvhuiqing的专栏 - CSDN博客.mht.lnk │ oracle...
Oracle 管理是 Oracle 数据库管理的难点所在,包括 Oracle 的存储管理、对象管理、内存和进程、undo 管理、初始化参数、数据字典视图、安全、Latch 和 Lock、权限和角色、资源调度、闪回、日志原理等。学习这部分...
删除操作在Oracle中会产生UNDO数据,这需要额外的REDO日志来维护,导致较高的性能消耗,而且删除后的空间通常不会立即释放。相比之下,使用`TRUNCATE`命令可以快速删除表数据并释放空间,但这是一个DDL操作,无法与...
Oracle 12c 管理UNDO.pdf Oracle 12c 数据库备份和恢复概述.pdf Oracle 12c 用户管理的备份和恢复.pdf Oracle 12c SCN详解.pdf Oracle 12c RMAN备份与恢复数据库.pdf Oracle 12c EXPDP和IMPDP指令详解.pdf Oracle ...
Oracle 集群学习笔记 Oracle 集群是一种高可用性和高性能的解决方案,通过将多个服务器组合成一个集群,可以实现数据库的高可用性和负载均衡。下面是 Oracle 集群的详细知识点: 1. Oracle 集群的总体结构 ...
根据提供的信息,我们可以深入探讨Oracle Flashback特性及其在不同版本中的应用与增强。本文将分为三个部分:Flashback Query(闪回查询)、Flashback Table(闪回表)以及Flashback Database(闪回数据库)。每部分...
本篇学习笔记主要探讨Oracle集群的原理、Oracle Clusterware的体系结构以及RAC(Real Application Clusters)架构。 1. Oracle集群原理概述 Oracle集群的核心是实现高可用性和并行处理能力。这需要至少两台服务器...
本压缩包提供了一套完整的Oracle课程学习资源,包括各章节的学习资料和对应的自测题及答案,旨在帮助学习者深入理解和掌握Oracle的核心技术。 首先,"自测题和试卷答案.doc"是学习过程中自我评估的重要工具。通过...