首页 > 解决方案 > 在 oracle 数据库中插入 BLOB 数据时出错

问题描述

我在同一个数据库中有 2 个架构,具有相同的表名和结构

在 schema_1 BLOB 表中插入记录实时数据。我创建了另一个 schema_2,并创建了与 schema_1 相同的表名和结构。

现在,当我尝试将记录从 schema_1 插入到 schema_2 表时,我收到以下错误

ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old

插入 schema_2 的查询:

insert into blob_table
(id, blob_col)
select id, blob_col from tab_schema_1
where blob_col is not null;

Oracle 数据库 11G 64 位,DB BLOCK SIZE 32768

如何解决这个问题呢?谢谢

标签: oracleoracle11g

解决方案


如果在自动撤消管理模式下,增加 UNDO_RETENTION 的设置。否则,使用更大的回滚段。

[ https://taliphakanozturken.wordpress.com/2018/09/12/how-to-optimize-oracle-undo-parameters/][1]

undo保留时间=(undo size)/(db block size × undo block per second)

SQL>ALTER SYSTEM SET UNDO_RETENTION = 1000 TO 2400; --1000 and 2400 are examples

推荐阅读