oracle sql查询会占用undo空间吗 oracle快照过旧解决办法?
浏览量:3922
时间:2023-03-22 20:47:41
作者:采采
用户需要3分钟),但是user1却在这3分钟内提交了。那会有什么影响?这时候如何保证读写的一致性?此时DBMS要保证有足够的撤销表空间来存储修改前的值,以保证user2读取的数据与修改前一致,然后下次再读取更新后的数据。
Ora-01555快照太旧,因为撤销空间不够大,一些撤销数据被覆盖,所以用户可以 修改前无法获取数据。
撤消数据分为三种类型:
主动撤销:未提交事务的撤销数据永远不会被覆盖,用于回滚回滚事务。
过期撤消:撤消已提交事务的数据,该数据可以被覆盖。
未到期撤销:交易已经提交,但是在交易提交之前,有一些查询正在进行,它想读取提交之前的数据,也就是未到期的数据。如果这部分撤消数据被覆盖,将出现ora-01555错误。
一种解决方案是指定还原表空间参数
不能删除System/sysaux/undo表空间;
您应该确定哪些表格是有用的,例如table_name like W%等。
筛选出包含数据的表空间,例如select tablespace _ name from DBA _ tables,其中table _ name like w % group by tablespace _ name order by 1。
记下不在步骤1和3中的表空间名称;
识别无用的数据文件,比如select file _ name,tablespace _ name from DBA _ data _ files where tablespace _ name in()。
首先使数据文件脱机,然后删除它。你 我们结束了。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。