【问题标题】:Oracle snapshot too old and DBLINKOracle 快照太旧和 DBLINK
【发布时间】:2015-07-27 11:14:00
【问题描述】:
我来了
ORA-01555:快照太旧:回滚段号 234 和名称
"_SYSSMU234_1378897836$"
在oracle数据库中使用dblink选择一些数据时太小了。
select a,b from localtab a
union
select a,b from rmottab@remotedb;
有没有办法覆盖这个错误?
我有一种情况需要定期获取这些数据。
【问题讨论】:
标签:
sql
oracle
oracle11g
dblink
【解决方案1】:
您需要在完成检索数据后关闭游标。您的问题是您将光标打开太久。有很多原因:
- 客户端的逐行处理。将永远完成。 (数据库正在等待向客户端传递数据)
暗示。 arraysize (fetchsize) 设置得太低。 100-200 的数组大小可以加快速度。
- “rmotab”后面隐藏着一个漂亮的视图,需要> 30分钟才能返回,它正在燃烧cpu(逻辑读取)
基本上,您有以下选择:
- 加快您的进程。 (更快地结束光标(查询))。批量加载。
- 安排在没有 DML 进行时发生该过程。
- 实体化视图(预加载数据(只读))
- 增加 UNDO。