[oracle] ORA-01555错误的过程以及影响

问题描述

ORA-01555, 快照太旧, 这个错误应该是一个很经典的Oracle错误了, 我能在网上找到的原因: 是说查询太长时间, 有insert/update动作时就会容易造成这种错误. 然而我对其中的细节到现在也不明白, 还请iteye的大侠, 高手们指点.1. 发生ORA-01555, 会整体影响Oracle Server, 进而对其他session的响应也会变慢吗?2. 在一个session中的query语句执行后, 直到发生ORA-01555之前,是否有部分数据返回到client?3. ORA-01555对本session的影响是一个长时间的过程, 还是仅仅是一个瞬间错误的影响?也就是说: query过程中, 返回结果越来越慢, 直到发生ORA-01555, 还是在发生ORA-01555之前query的速度一直是正常的?4. 如果一处程序不断地在update/insert自己查询范围内的数据, 我想理论上更容易造成ORA-01555错误. 这种情况下: update/insert和query的session是分开好, 还是共用好?

解决方案

1. 发生ORA-01555, 会整体影响Oracle Server, 进而对其他session的响应也会变慢吗? 答:长查询需要耗费较多的内存,如果内存不够大,会影响到其他session,使其相应较慢!当然undo数据的回收和使用也会在一定程度下影响性能。2. 在一个session中的query语句执行后, 直到发生ORA-01555之前,是否有部分数据返回到client? 答:有部分数据返回3. ORA-01555对本session的影响是一个长时间的过程, 还是仅仅是一个瞬间错误的影响?也就是说: query过程中, 返回结果越来越慢, 直到发生ORA-01555, 还是在发生ORA-01555之前query的速度一直是正常的? 答:01555影响的是瞬间的过程,当undo数据不存在的时候且查询需要用到该undo数据的时候立即发生。其他请参见解答1。4. 如果一处程序不断地在update/insert自己查询范围内的数据, 我想理论上更容易造成ORA-01555错误.这种情况下: update/insert和query的session是分开好, 还是共用好? 答:容易造成01555是undo表空间设置不合理造成的,可以通过增大undo表空间大小,设置undo_guarantee,undo_retention来减少发生01555的次数

时间: 2024-09-20 18:56:35

[oracle] ORA-01555错误的过程以及影响的相关文章

Oracle ORA 07445 evaopn2()+128错误问题的解决方案_oracle

问题描述 Plsql developer执行一段sql报错: 经查alert log详细报错信息为: ORA-07445: exception encountered: core dump [evaopn2()+128] [SIGSEGV] [Address not mapped to object] [0x000000000] [] [] 数据库版本 10.2.0.4.0 问题原因 复杂视图合并问题导致的oracle bug 解决方法 1.修改隐藏参数: alter system set "_

Oracle数据库ORA 54013错误的解决办法_oracle

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

plsql连接oracle数据库报ora 12154错误解决方法_oracle

plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

Oracle的常见错误及解决办法

                      ORA-12528: TNS:listener: all appropriate instances are blocking new connections     ORA-12528问题是因为监听中的服务使用了动态服务,实例虽然启动,但没有注册到监听.实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动.所以造成了上面的错误. 解决这个问题,有三种方法:1.把监听设置为静态:2.在tnsnames.ora中追加(UR=

Oracle 数据库实例启动关闭过程

--================================ -->Oracle 数据库实例启动关闭过程 --================================ /*     Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动.关闭是非常 有必要的.下面详细了Oracle Database

掉电引起的ORA-1172错误解决过程(二)

由于UPS故障,导致机房连续多次掉电,问题解决后,发现一台本地测试数据库打开时报错,ORA-1172.ORA-1151错误. 掉电引起的ORA-1172错误解决过程(一):http://yangtingkun.itpub.net/post/468/465223 尝试打开数据库.     上一篇介绍了问题的产生和现象,下面尝试用EVENTS方式打开数据库,不过由于出现ORA-600 2662错误的机制与上面一篇文章不同,因此这里不需要设置隐含参数_allow_resetlogs_corruptio

掉电引起的ORA-1172错误解决过程(三)

由于UPS故障,导致机房连续多次掉电,问题解决后,发现一台本地测试数据库打开时报错,ORA-1172.ORA-1151错误. 掉电引起的ORA-1172错误解决过程(一):http://yangtingkun.itpub.net/post/468/465223 掉电引起的ORA-1172错误解决过程(二):http://yangtingkun.itpub.net/post/468/465868 打开数据库后的处理:     在前一篇文章中已经成功打开数据库,其实这时从目标上已经基本完成了,只需通

解决jdbc连接oracle协议适配器错误

oracle|错误|解决 解决oracle协议适配器错误 现象:jdbc连接oracle817 for Linux出现适配器错误,sqlplus连接正常. 方法:编辑init.ora文件屏蔽 mts_dispatchers = "(PROTOCOL=TCP)(SER=MODOSE)" 重新启动oracle. import java.sql.*;import java.lang.*;import java.util.*; class testjdbc { public static vo

Oracle数据库配置错误信息

oracle|错误|数据|数据库     Oracle数据库配置错误信息     Oralce数据库的错误信息经常会出现,我们看见的都是错误的代码,至于错误原因究竟是什么还一时半会难以解答,所以就把一些常见的错误整理了一下,来看看也许对你有帮助的.1.   Oracle客户端网络配置:          在Oralce产品安装完成后,为了与数据库服务器进行连接或者是两台数据库之间进行数据复制,则必须进行网络连接配置.          Oracle9i Net Service配置方法: