首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01555:快照太旧的回滚段名为"“太小的错误

ORA-01555:快照太旧的回滚段名为"“太小的错误
EN

Database Administration用户
提问于 2016-08-12 05:41:40
回答 1查看 32.1K关注 0票数 -1

我已经创建了一个触发器,用于两个字段,第一个字段(Blob)和第二个字段(Varchar2)。当第二个字段发生一些更改时,此触发器将从另一个表的blob值中更新blob。当试图更新表行时。它会生成一个错误:

ORA-01555;快照工具旧回滚段名为"“太小。

我已经创建了一个新的回滚段,但是它无法解决错误。我如何解决这个问题?

这是我的扳机:

代码语言:javascript
复制
create or replace trigger mytrigger
before update on frarea
for each row
declare 
v_blob blob;

BEGIN
 SELECT VALUE INTO v_blob
from domain_units_backup
where id= :new.category;


:new.echeloncustom := v_blob;

exception

when no_data_found
dbms_output.put_line('no data found');

end;
EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-08-12 06:11:42

01555,00000,“快照太旧:回滚段号%s,名称\”%S\“太小”原因:读取器为一致读取所需的回滚记录被其他编写器操作覆盖:如果处于自动撤消管理模式,则增加undo_retention设置。否则,使用较大的回滚段。

在Oracle数据库中,在更新记录时,应保留旧记录,以便进行一致的读取。在启用自动撤消管理的数据库中,保存时间可以由undo_retention参数控制。如果撤消保留时间太短,则撤消记录将被其他会话覆盖。

Oracle11g继续,Oracle建议使用自动撤消管理。

从第11g版开始,自动撤消管理是新安装的数据库的默认模式。更多

可以更改“撤消保留”初始化参数作为后续操作。

  • 以sysdba的身份登录。示例:在Linux中使用SQLPLUS,$ sqlplus sys as sysdba
  • 然后使用ALTER SYSTEM命令,就像SQL>alter system set undo_retention=1800 Undo_retention指定时间(以秒为单位)一样。在扩展撤消保留之前,请确保您的撤消表空间是自动扩展的,并且有足够的存储空间进行扩展。
票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/146592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档