我已经创建了一个触发器,用于两个字段,第一个字段(Blob)和第二个字段(Varchar2)。当第二个字段发生一些更改时,此触发器将从另一个表的blob值中更新blob。当试图更新表行时。它会生成一个错误:
ORA-01555;快照工具旧回滚段名为"“太小。
我已经创建了一个新的回滚段,但是它无法解决错误。我如何解决这个问题?
这是我的扳机:
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;发布于 2016-08-12 06:11:42
01555,00000,“快照太旧:回滚段号%s,名称\”%S\“太小”原因:读取器为一致读取所需的回滚记录被其他编写器操作覆盖:如果处于自动撤消管理模式,则增加undo_retention设置。否则,使用较大的回滚段。
在Oracle数据库中,在更新记录时,应保留旧记录,以便进行一致的读取。在启用自动撤消管理的数据库中,保存时间可以由undo_retention参数控制。如果撤消保留时间太短,则撤消记录将被其他会话覆盖。
Oracle11g继续,Oracle建议使用自动撤消管理。
从第11g版开始,自动撤消管理是新安装的数据库的默认模式。更多。
可以更改“撤消保留”初始化参数作为后续操作。
$ sqlplus sys as sysdba。ALTER SYSTEM命令,就像SQL>alter system set undo_retention=1800 Undo_retention指定时间(以秒为单位)一样。在扩展撤消保留之前,请确保您的撤消表空间是自动扩展的,并且有足够的存储空间进行扩展。https://dba.stackexchange.com/questions/146592
复制相似问题