今天遇到ORA-01555 快照过旧出现ORA-01555错误,通常有2种情况: (1)SQL语句执行时间太长,或者UNDO表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的前镜像(即UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块(CR
blocks)。 这种情况最多。 (2)SQL语句执行过程中,访问到的块,在进行延迟块清除时,不能确定该块的事务提交时间与SQL执行开始时间的先后次序。 这种情况很少。
解决方法:第1种情况解决的办法:(1)增加UNDO表空间大小
ALTER TABLESPACE UNDO1 ADD DATAFILE '/oradata/******/UNDO02.dbf' size 50M(2)增加undo_retention 时间,默认只有15分钟ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
(3)优化出错的SQL,减少查询的时间,首选方法(4)避免频繁的提交
具体做法:1 查询数据文件位置
select * from dba_data_files
2 扩展undo表空间
ALTER TABLESPACE UNDO1 ADD DATAFILE '/oradata/******/UNDO02.dbf' size 50M
3 查询UNDO表空间GUARANTEE功能(查询结果NOGUARANTEE)
select tablespace_name,block_size,extent_management , segment_space_management,contents,retention from dba_tablespaces;
4 启用UNDO表空间的GUARANTEE功能
sql> alter tablespace UNDO1 retention guarantee;设置完后,在查询第3步进行验证
5 调整与UNDO表空间相关的参数sql>show parameter undo;
NAME TYPE VALUE
------------------ -------------------- -------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
sql> alter system set undo_retention=10800 SCOPE=BOTH;
ORACLE推荐我们将表空间中的datafile 设定MAXSIZE ,不要让它一直自动扩展,如果ORACLE获得了自动扩展的能力,不好控制
1 查看有哪些数据文件是自增长的select FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE,STATUS,MAXBYTES,USER_BYTES from dba_data_files;
2 设置表空间关闭自动增长alter database datafile '/oradata/test/JIA_DATA.dbf' autoextend off;
3 创建新的表空间--自动增长,无限大
create tablespace TRASDATA datafile '/oradata/zhibao2/TRASDATA.dbf' size 200m autoextend on next 100m maxsize unlimited ;
--非自动增长,200m
create tablespace TRASDATA datafile '/oradata/zhibao2/TRASDATA.dbf' size 200m ;
4 添加数据文件ALTER TABLESPACE JIA_DATA ADD DATAFILE '/oradata/test/JIA_DATA01.dbf' size 10m
autoextend off;
其实不写autoextend off默认也是非自动增长
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
