【问题标题】:How do I select without using rollback segments?如何在不使用回滚段的情况下进行选择?
【发布时间】:2018-09-20 20:18:40
【问题描述】:

我正在尝试使用运行了很长时间的 select 语句导出某些内容,但我遇到了 ORA-01555 快照太旧的错误。我搜索了这个错误,它与使用回滚段“重做表空间”的选择语句有关。

如何选择而不出现此错误?我不关心我将要获得的结果的完整性或这可能带来的任何其他后果。

【问题讨论】:

  • 如果您不在乎数据是否一致,那么导出的意义何在?

标签: oracle oracle11g


【解决方案1】:

Oracle 不允许读取不一致的结果,也没有提供相应的隔离级别“read uncommitted”(如果这是一个隔离级别的话)。如果您不关心一致性,您可以将查询分成几个部分(使用不同的 where 子句)。如果您想修复错误,则必须调整撤消表空间的大小(或更改撤消保留)- 但这是 DBA 的工作(如果有必要)。

【讨论】:

  • @supertonsky - 在括号中详细说明 Martin 的最后观察:如果有必要。调整撤消表空间的大小和/或更改撤消保留是您问题的正确答案,在您排除明显的情况之后:您的查询无缘无故地运行了很长时间。有很多写得不好的查询比它们应该运行的时间长得多,因为它们写得不好。此外,在许多情况下,精心选择的索引可以让查询运行速度提高 10 倍或 100 倍(或更多),但人们出于各种原因(通常缺乏知识)不这样做。从那里开始。
猜你喜欢
  • 1970-01-01
  • 2021-05-29
  • 2012-02-12
  • 2012-04-15
  • 1970-01-01
  • 2021-12-26
  • 2016-01-07
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多